缺少 MSBuild "sgen.exe"

MSBuild "sgen.exe" is missing

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2769,5): error MSB3086: Task could not find "sgen.exe" using the SdkToolsPath "" or the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8. 0A\WinSDK-NetFx40Tools-x86". Make sure the SdkToolsPath is set and the tool exi sts in the correct processor specific location under the SdkToolsPath and that the Microsoft Windows SDK is installed

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

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 这不是我的选择。但是我确实想指出我有另一个具有完全相同设置的构建服务器并且它工作正常所以我的临时工作是在该服务器上构建它然后复制构建。

有人知道问题出在哪里吗?

终于解决了。解决步骤:

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

2) 从 here 安装 windows sdk 8.1。

3) 编辑注册表项

  • SDK40ToolsPath
  • SDK35ToolsPath

之下

HKLM\SOFTWARE\Wow6432Node\MSBuild\ToolsVersions.0

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

和注册码

  • FrameworkSDKRoot
  • WindowsSDK80Path

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1@InstallationFolder)

希望这对将来 运行 遇到同样问题的其他人有所帮助。

这个答案对我不起作用。 我已经有 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(注意没有应用程序验证程序功能,因为这会导致安装错误)。重新启动后,我的构建工作正常。

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

在我的例子中是 C:\Program Files (x86)\MSBuild.0\bin。所以我将路径设置为此值,当我 运行 我的批处理文件设置了新路径时,它编译成功。