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