微软文档中说,发生此问题的原因有以下几种:
在 Visual Studio .NET 开发环境中,打开了多个窗口。
在您的 Visual Studio .NET 项目中,有多个文件夹同名。
注册表中的一些接口注册丢失。
在注册表中,Mergemod.dll 没有注册,或者注册了不完整的 Mergemod.dll 版本。
您从 Visual Studio .NET 的 Beta 2 版本升级到了发行版。
1.检查注册表是否包含下列内容,没有则将其添加到注册表中(注意操作安全,避免注册表损坏)
HKEY_CLASSES_ROOT/Interface/{00020404-0000-0000-C000-000000000046}
将此项的默认值设置为 IEnumVARIANT
HKEY_CLASSES_ROOT/Interface/{00020404-0000-0000-C000-000000000046}/NumMethods
将此项的默认值设置为 7
HKEY_CLASSES_ROOT/Interface/{00020404-0000-0000-C000-000000000046}/ProxyStubClsid
将此项的默认值设置为 {00020421-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT/Interface/{00020404-0000-0000-C000-000000000046}/ProxyStubClsid32
将此项的默认值设置为 {00020421-0000-0000-C000-000000000046}
2.Mergemod.dll 未正确注册
重新注册 C:/Program Files/Common Files/Microsoft Shared/MSI Tools/Mergemod.dll
方法就是 在命令行或"运行"中运行下列程序:
regsvr32 "C:/Program Files/Common Files/Microsoft Shared/MSI Tools/mergemod.dll"
但是按照上面的方法处理之后,我这里的故障依旧。看来问题不是上面这么简单。
3.除了微软MSDN中提到的两个解决办法之外,还有一个很重要,恐怕也是很多人最终的解决办法。
因为VS.NET的安装发布程序使用Windows Installer程序(VS.NET 2003 使用Windows Installer 2.0),检查MergeMod.dll 版本,发现是1.x,由于MergeMod.dll这个文件的版本不对,造成这个提示模糊的致命错误。正确的MergeMod.dll版本应该是2.0(针对VS.NET 2003)。将"C:/Program Files/Common Files/Microsoft Shared/MSI Tools/" 中的mergemod.dll 更换位2.0版本,问题解决。