【问题标题】:MSBuild "sgen.exe" is missing缺少 MSBuild“sgen.exe”
【发布时间】:2016-03-06 20:19:30
【问题描述】:

我在使用 MSBuild 时遇到以下错误。我得到的错误是:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2769,5): 错误 MSB3086:任务无法使用 SdkToolsPath 找到“sgen.exe” "" 或注册表项 “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8. 0A\WinSDK-NetFx40Tools-x86"。确保设置了 SdkToolsPath 并且 工具存在于正确的处理器特定位置下 SdkToolsPath 并安装了 Microsoft Windows SDK

到目前为止,我已经完成了以下工作:

1) 从here 安装 Windows SDK v8

2) 我确认注册表中存在注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86”

3) 上述 2 中的注册表项指向路径“C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools”,我已确认该路径存在并且 sgen.exe位于该目录中

4)我也做了一些自己的研究并遇到了this SO post,但答案涉及在服务器本身上安装 Visual Studio,这对我来说不是一个选择。但是我确实想指出,我有另一台具有完全相同设置的构建服务器并且工作正常,所以我的临时工作是在该服务器上构建它,然后将构建复制过来。

任何人都知道问题可能是什么?

【问题讨论】:

    标签: .net windows visual-studio-2012 msbuild


    【解决方案1】:

    我终于能够解决它。解决步骤:

    1) 通过程序和功能卸载 windows sdk 8。

    2) 从here 安装 windows sdk 8.1。

    3) 编辑注册表项

    • SDK40ToolsPath
    • SDK35ToolsPath

    HKLM\SOFTWARE\Wow6432Node\MSBuild\ToolsVersions\11.0

    $(注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x86@InstallationFolder)

    和注册键

    • FrameworkSDKRoot
    • WindowsSDK80路径

    $(注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1@InstallationFolder)

    希望将来遇到同样问题的其他人可能会有所帮助。

    【讨论】:

    • 感谢约翰·保罗。在我的机器上,它位于 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\4.0\11.0、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\14.0\11.0 和 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ ToolsVersions\14.0\14.0,我将 SDK40ToolsPath 设置为 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools。
    • 我只是将 \toolsversions\4.0\ 键值复制到 \toolsversions\4.0\11.0,但这个答案为我澄清了问题...... tks
    • 我没有找到建议的注册表路径,但找到了一个似乎具有相同预期值的替代路径,但在 v12 文件夹中,而不是 v11。这是同一件事吗?是错字吗? HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\12.0\11.0
    【解决方案2】:

    这个答案对我不起作用。 我已经有了 Windows 8.1 SDK,但没有版本 8。我必须下载包含 .Net Framework 4.5 SDK 的版本 8。 .Net Framework 4.5 SDK(随 Windows 8 SDK 提供)和 4.6 SDK(随 Visual Studio 2015 提供)。我有 VS 2015。

    所有的SDK都可以在https://msdn.microsoft.com/en-us/library/5a4x27ek(v=vs.110).aspx单独下载。

    我下载了 4.5 SDK 并安装了它(注意没有应用程序验证器功能,因为这会导致安装错误)。重新启动后,我的构建工作正常。

    【讨论】:

    • 我放弃了 SDK 10。它是一种 8.1 SDK,其他的在 10 SDK 之后被忽略了。但是谢谢,你给了我一个希望)我已经通过一个 cmd 包装器解决了这个问题stackoverflow.com/a/41784486/390940
    【解决方案3】:

    我遇到了同样的错误,使用 MSBuild 时缺少 sgen.exe。我不必更改注册表值。我确保 MSBuild 命令使用的是我安装的版本。我的 PC 上安装了 Visual Studio 2015 和 2017。

    就我而言,它是C:\Program Files (x86)\MSBuild\14.0\bin。所以我将路径设置为这个值,当我用新的路径集运行我的批处理文件时,它编译成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-29
      • 2017-10-19
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多