MSBuild:错误MSB3147:找不到所需文件'setup.bin'

时间:2011-01-04 12:01:03

标签: msbuild .net-4.0 installer

我正在尝试使用MSBuild(在CruiseControl下)为我的.NET 4应用程序构建安装。安装版本应该创建一个boostrapper来安装必备软件(在本例中为.NET 4和Windows Installer 4.5),这是使用GenerateBootstrapper Task完成的。

在安装了VS 2010的开发计算机上从命令行运行MSBuild.exe project.msbuild.xml,工作正常。在仅具有最新Windows 7 SDK的构建计算机上运行失败,并显示错误:

(ProductDistributions target) -> bootstrapper.xml(236,5): error MSB3147: 
Could not find required file 'setup.bin' in '<project path>\ProductDistributions\Engine'.

在开发机器上,我有一个包含C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine文件的setup.bin文件夹,但在构建机器上Bootstrapper内没有C:\Program Files\Microsoft SDKs\Windows\v7.1文件夹(7.1 vs 7.0A显然是因为VS2010安装了7.0A,但独立的SDK是7.1)。

此外,在构建计算机上HKLM\Software\Microsoft\GenericBootstrapper\内没有4.0注册表项,但dev计算机确实有一个包含值为c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\的路径字符串

看起来我需要在构建机器上安装一些东西来将Bootstrapper文件夹添加到“Microsoft SDKs \ Windows \ v7.1”(并设置注册表项),但我不确定那是什么。知道我需要得到什么吗?

或者我需要一些其他东西让我的安装版本正常工作吗?

更新:我现在通过手动将7.0A引导程序文件夹从开发计算机复制到构建计算机上,并手动将该路径添加到HKLM\Software\Microsoft\GenericBootstrapper\4.0注册表项来实现此功能。这似乎工作,但似乎这不是我应该做的解决问题。所以,如果有人对此有一个不太苛刻的解决方案,我会很感激。

2 个答案:

答案 0 :(得分:4)

根据t his blog entry,在.NET Framework SDK安装期间安装了引导程序文件。它还显示搜索的注册表项以查找引导程序目录。

您可以尝试安装.NET Framework SDK,也可以通过复制文件和添加注册表项来手动设置它。

答案 1 :(得分:2)

我遇到了同样的问题,但没有尝试手动复制文件和黑客入侵注册表,虽然我也从其他人那里听说他们也成功了。

为了获得更真实的解决方案,我创建了一个feature request on the Connect.Microsoft.com site来实现Visual Studio的某种类型的最小安装,以便提供一种更简单的方法来设置具有必要的构建服务器开发文件。请对功能请求进行投票和/或评论,以帮助引起对此问题的关注。