Win 2012服务器上的MSBuild找不到SDKToolsPath

时间:2017-03-30 19:32:07

标签: c# windows jenkins msbuild windows-server-2012

我有一台新的Win 2012 64位服务器,我在其上安装了Win 10 SDK,并且从我的开发机器v8.0A和v8.1中复制了到dir: C:\Program Files (x86)\Microsoft SDKs\Windows 我正在尝试使用Jenkins / MSBuild构建一个x64 .Net 4.0项目,但是我收到错误:

  

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

我尝试了几种方法,例如:

Running MSBuild fails to read SDKToolsPath

LC.exe file not found during build for .NET 4

没有成功:

  1. 我无法在任何地方找到WindowsSdkVer.exe。
  2. 我添加了Env Variable SdkToolsPath,但它没有得到尊重。

1 个答案:

答案 0 :(得分:0)

使用PowerShell,运行

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86"

你应该得到一些看起来像

的东西
    ProductVersion    REG_SZ    4.6.00081
    ComponentName    REG_SZ    Microsoft .NET Framework 4.6 SDK
    InstallationFolder    REG_SZ    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\

但是你得到SdkToolsPath ""的事实可能意味着注册表不存在,或者InstallationFolder也是一个空字符串。

我自己想出来了,所以我不知道潜在失败的范围,但是我在本地运行了reg查询,得到C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\的值InstallationFolder(我不知道v8.0A的路径是什么样的。然后我将文件夹bin\NETFX复制到我的服务器上,然后添加了一个注册表以指向该位置 类似的东西:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86" /d "C:\bin\NETFX 4.6 Tools\\" /t REG_SZ /v InstallationFolder

检查WOW6432Node

我添加了注册表以指向我的本地副本,但无论我无法让msbuild使用我提供的路径。我看到有些人正在查询WOW6432,所以我在本地查询"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86",看到它存在并填充。然后我在服务器上添加了注册表,之后一切正常。