【问题标题】:MSBuild: error MSB3147: Could not find required file 'setup.bin' [duplicate]MSBuild:错误 MSB3147:找不到所需的文件“setup.bin”[重复]
【发布时间】:2011-01-04 12:01:03
【问题描述】:

我正在尝试使用 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'.

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

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

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

或者我还需要什么其他东西才能让我的安装版本正常工作吗?

更新:我目前正在通过手动将 7.0A 引导程序文件夹从开发机器复制到构建机器上,然后手动将该路径添加到 HKLM\Software\Microsoft\GenericBootstrapper\4.0 注册表项。这似乎可行,但似乎这不是我应该做的来解决问题。因此,如果有人对此有不那么棘手的解决方案,我将不胜感激。

【问题讨论】:

  • 复制 7.0A 引导程序并手动添加 reg 密钥的上述更改解决了我遇到的问题。不过,我仍在寻找一个不那么老套的解决方案,
  • 您是否碰巧在那台机器上安装了 .Net 4.5 测试版?在我完全卸载 4.5(在添加/删除程序中引用 4.5 和 VS11 的所有内容)并从 MSDN 重新安装 4.0 之前,我的工作站上遇到了一些类似的问题。
  • 不,这个问题来自 2011 年 1 月 - 所以在 4.5 测试版可用之前。
  • 在我的 TeamCity 服务器上删除 .Net 4.5(发行版)并重新安装 4.0。

标签: msbuild .net-4.0 installation


【解决方案1】:

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

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

【讨论】:

  • 嗯,构建机器已经有 .NET SDK 和 Windows SDK(也应该安装它),但我还是尝试了重新安装,但并没有解决问题。我确实考虑过只复制文件,但我不确定这是否会导致其他问题 - 所有开发机器都有 7.0A 而构建机器是 7.1,所以复制 7.0A 可能不起作用。我想我会看看会发生什么。
  • 这似乎可行,但确实感觉是错误的解决方案。我会在接受这个答案之前稍等片刻,以防有人提出一个不那么hacky的解决方案。不过谢谢,我现在又安装了。
  • 供进一步参考:this blog 表明 Windows 以某种方式失去了对文件的引用。因此,添加注册表项并将引擎文件夹复制到项目文件夹确实可以解决此问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多