在做ONLINE项目的时候遇到这个问题,发现自己想把WEB应用程序打包无法实现,老是报“不可恢复的生成错误信息”,遍搜GOOGLE以后得到这个答案:
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;329214
症状
当您试图生成在 Visual Studio .NET 中创建的安装和部署项目时,您可能会收到以下错误信息:
Unrecoverable build error
原因
通常,发生此问题的原因有以下几种:
• | 在 Visual Studio .NET 开发环境中,打开了多个窗口。 |
• | 在您的 Visual Studio .NET 项目中,有多个文件夹同名。 |
• | 注册表中的一些接口注册丢失。 |
• | 在注册表中,Mergemod.dll 没有注册,或者注册了不完整的 Mergemod.dll 版本。 |
• | 您从 Visual Studio .NET 的 Beta 2 版本升级到了发行版。 |
解决方案
• | 多个打开的窗口 要解决此问题,请关闭其中的一些窗口,然后再次尝试生成该安装项目。 | ||||||||||||
• | 多个文件夹同名 要解决此问题,请为 Visual Studio .NET 项目中的各个文件夹分别指定一个唯一的名称。 | ||||||||||||
• | 注册丢失 警告:注册表编辑器使用不当可造成严重问题,这些问题可能需要重新安装操作系统。Microsoft 不保证能够解决因为注册表编辑器使用不当而产生的问题。使用注册表编辑器需要您自担风险。 要解决此问题,请在注册表中导入或手动添加丢失的信息。为此,请按照下列步骤操作:
| ||||||||||||
• | 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
HOW TO:删除 Visual Studio .NET Beta 版和 Release Candidate 版
|
状态
这种现象是设计使然。
更多信息
重现问题的步骤
要重现在 Mergemod.dll 未正确注册时所发生的现象,请遵循下列步骤:1. | 单击“开始”,然后单击“运行”。 |
2. | 在“打开”文本框中,键入以下命令,然后单击“确定”:
regsvr32 /u "C:/Program Files/Common Files/Microsoft Shared/MSI Tools/mergemod.dll"
|
3. | 启动 Visual Studio .NET。在“文件”菜单上,指向“新建”,然后单击“项目”。 |
4. | 在“项目类型”下,单击“安装和部署项目”。在“模板”下,单击“安装项目”。单击“确定”。 |
5. | 在“生成”菜单上,单击“生成解决方案”。 |
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
320426
PRB:"This Setup Does Not Contain the .NET Framework" Error Message During Visual Studio .NET Deployment
307353
HOW TO:Create a Setup Package by Using Visual Studio.NET
但是还是没有解决,我每项都试过了,我检查了注册表,重新注册了MERGEMOD.DLL,还是不行,后来想到是不是我的MERGEMOD.DLL有问题,从别人可以打包的机器上拷来该文件,发现正常机器上的这个DLL只有137K,而我的机器上这个文件有140K,用别人的DLL覆盖我的机器,再注册,BG!可以了!。
但是还是没有解决,我每项都试过了,我检查了注册表,重新注册了MERGEMOD.DLL,还是不行,后来想到是不是我的MERGEMOD.DLL有问题,从别人可以打包的机器上拷来该文件,发现正常机器上的这个DLL只有137K,而我的机器上这个文件有140K,用别人的DLL覆盖我的机器,再注册,BG!可以了!。