MSBuild“sgen.exe”丢失了

时间:2015-12-02 14:33:15

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

使用MSBuild时出现以下错误。我得到的错误是:

  

C:\的Windows \ Microsoft.NET \框架\ 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并且   工具exi sts在正确的处理器特定位置下   SdkToolsPath和Microsoft Windows SDK已安装

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

1)从here

安装Windows SDK v8

2)我确认注册表中存在注册表项“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.0 \ 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,这对我来说不是一个选择。但是,我想指出我有另一个构建服务器具有完全相同的设置,并且它工作正常,所以我的临时工作是在该服务器上构建它,然后复制构建。

任何人都对问题可能有什么了解?

3 个答案:

答案 0 :(得分:8)

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

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

2)从here安装Windows sdk 8.1。

3)编辑注册表项

  • SDK40ToolsPath
  • SDK35ToolsPath

下的

  

HKLM \ SOFTWARE \ Wow6432Node \的MSBuild \ ToolsVersions \ 11.0

  

$(注册表:HKEY_LOCAL_MACHINE \ SOFTWARE \微软\微软   的SDK \的Windows \ v8.1A \ WinSDK-NetFx40Tools 86 @ InstallationFolder)

和注册码

  • FrameworkSDKRoot
  • WindowsSDK80Path

  

$(注册表:HKEY_LOCAL_MACHINE \ SOFTWARE \微软\微软   的SDK \的Windows \ v8.1@InstallationFolder)

希望如果他们遇到同样的问题,这可能在将来帮助其他人。

答案 1 :(得分:4)

这个答案对我不起作用。 我已经拥有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并安装了它(注意没有Application Verifier功能,因为这会导致安装错误)。重启后,我的构建工作正常。

答案 2 :(得分:2)

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

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