在生成安装和部署项目时出现“Unrecoverable Build Error”(不可恢复的生成错误)错误信息
使用环境:Win2003Server+vs2003
今天在生成安装文件时,遇到“不可恢复的生成错误”。
以前正常,只是这次添加了对Com组件的引用,
![](Images/OutliningIndicators/None.gif)
![](Images/OutliningIndicators/None.gif)
![](Images/OutliningIndicators/None.gif)
![](Images/OutliningIndicators/None.gif)
![](Images/OutliningIndicators/None.gif)
![](Images/OutliningIndicators/None.gif)
上面为增加的引用Com的代码,增加这段代码后,出现了问题。
开始认为是增加了对Com的引用造成的,但是查了资料,说
此问题一般是由C:\Program Files\Common Files\Microsoft Shared\MSI Tools\mergemod.dll文件版本低造成的,只需下载新的版本,在注册即可。
下载了新的mergemod.dll,注册后,问题解决。
参考:
微软的解释:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;329214
阿瑞的解释:http://arui.cnblogs.com/archive/2005/07/29/202934.html
附:
微软解释:
症状
当您试图生成在 Visual Studio .NET 中创建的安装和部署项目时,您可能会收到以下错误信息:
Unrecoverable build error
原因
通常,发生此问题的原因有以下几种: • 在 Visual Studio .NET 开发环境中,打开了多个窗口。
• 在您的 Visual Studio .NET 项目中,有多个文件夹同名。
• 注册表中的一些接口注册丢失。
• 在注册表中,Mergemod.dll 没有注册,或者注册了不完整的 Mergemod.dll 版本。
• 您从 Visual Studio .NET 的 Beta 2 版本升级到了发行版。
解决方案
• 打开的代码和设计窗口过多
要解决此问题,请关闭在 Visual Studio .NET 交互式开发环境 (IDE) 中并未使用的所有启动、代码或设计窗口。通过 IDE 工作区的选项卡或 MDI 类型可以访问这些窗口。
• 多个文件夹同名
要解决此问题,请为 Visual Studio .NET 项目中的各个文件夹分别指定一个唯一的名称。
• 注册丢失
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
要解决此问题,请在注册表中导入或手动添加丢失的信息。为此,请按照下列步骤操作:1. 单击“开始”,然后单击“运行”。在“打开”文本框中,键入 regedit,然后单击“确定”以启动注册表编辑器。
2. 添加下面的注册表项: • 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}
• Mergemod.dll 未正确注册
要解决此问题,请再次注册 Mergemod.dll。通常,Mergemod.dll 位于以下文件夹中:
C:\Program Files\Common Files\Microsoft Shared\MSI Tools\Mergemod.dll
要注册 Mergemod.dll,请在命令提示符处键入以下命令,然后按 Enter:
regsvr32 "C:\Program Files\Common Files\Microsoft Shared\MSI Tools\mergemod.dll"
• 从 Visual Studio .NET 的 Beta 2 版本升级
要解决此问题,请删除 Visual Studio .NET 的 Beta 2 版,然后重新安装发行版。 有关如何删除 Visual Studio .NET Beta 版的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
312383 (http://support.microsoft.com/kb/312383/) 如何删除 Visual Studio .NET Beta 版和预发布版本
状态
这种现象是设计导致的。
阿瑞的解释:
今天在搞一个安装项目,编译的时候总是出来一个“不可恢复的生成错误”,,于是我是翻山越顶啊,跋山涉水啊,终于找到了问题原来出自于C:\Program Files\Common Files\Microsoft Shared\MSI Tools\MergeMod.dll的版本不对,晕~~~~, 版本是1.20.1827.1,最新版是2.0.2542.0,在网上找了一个,当下来后,重新注册一个就解决了,这里也给大家介绍一个专业的搜索dll的网站http://www.webzila.com/?wz=dll,还不错