Winapi CI服务器上的MSBuild可以';找不到AL.exe
我的TeamCity CI build服务器出现问题,在编译过程中出现以下错误: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342,9):错误MSB3086:任务无法使用SdkToolsPath“”或注册表项“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft SDKs\WINDOWS\v7.0A”找到“AL.exe”。确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下的正确处理器特定位置,并且已安装Microsoft Windows SDK 例如,一年前人们升级到.NET3.5时,我发现了类似的报告。在这种情况下,安装最新的SDK解决了这个问题,但是我已经在构建服务器上安装了最新的SDK()。MSBuild工具都位于服务器上名为 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 并且AL.exe存在于 C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\NETFX 4.0工具Winapi CI服务器上的MSBuild可以';找不到AL.exe,winapi,.net-4.0,msbuild,teamcity,Winapi,.net 4.0,Msbuild,Teamcity,我的TeamCity CI build服务器出现问题,在编译过程中出现以下错误: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342,9):错误MSB3086:任务无法使用SdkToolsPath“”或注册表项“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft SDKs\WINDOWS\v7.0A”找到“AL.exe”。确保已设置SdkToolsPath,并且该工
但是,错误消息中提到的注册表项不存在。因此,MSBuild的安装/配置似乎有问题。此错误仅发生在具有嵌入式资源的项目中,这些项目需要AL.exe。我们最近在尝试运行.Net 4.0版本时遇到此问题。我们发现al.exe的位置在.Net 4.0附带的原始MSBuild与.Net 4.0的Visual Studio SDK(稍后发布)之间发生了更改 由于唯一可用的SDK工具的独立安装是我们已经安装但未成功的(您提到的那个),因此我们能想到的唯一解决方案是在构建代理上安装Visual Studio。我们将VisualStudio2010Express(为了使安装尽可能轻量级)放在那里,问题就解决了。这不是一个很好的解决方案,但它确实起到了作用——安装VS2010还将安装MSBuild所寻找的特定版本的SDK工具
这是一个确实不应该发生的问题,但似乎没有一种方法可以让MSBuild在正确的位置查找工具,甚至在注册表中进行黑客攻击。我有一个简单有效的修复方法 问题似乎在于Visual Studio附带的工具版本是7.0A版本,而Windows SDK附带的版本是7.1版本。这一切都很好,但MSBuild.exe仍在寻找7.0A版本的注册表项,而这些注册表项并不存在。这一定是个虫子 查看我的注册表,V6.0和V7.1的所有信息都是正确的。所以我的解决方案很简单。我创建了一个注册表链接,用于生成7.1键的别名 无法使用内置工具创建注册表链接,因此我从中下载了一个名为“regln”的小实用程序 C:>regln-x86.exe“\Registry\Machine\SOFTWARE\Microsoft\Microsoft-SDKs\Windows\v7.0A”“\Registry \机器\SOFTWARE\Microsoft\Microsoft SDK\Windows\v7.1“
工作完成了。MSBuild现在可以在TeamCity服务器上完美运行。因为您已经安装了最新的SDK(我假设它是v7.1)
这将告诉msbuild使用该版本的工具,而无需进行任何可怕的注册表编辑。您还需要应用以下注册表修复程序来更新msbuild以指向V7.1 sdk值
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0]
"MSBuildToolsPath"="C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\"
"MSBuildToolsRoot"="C:\\WINDOWS\\Microsoft.NET\\Framework\\"
"FrameworkSDKRoot"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1@InstallationFolder)"
"MSBuildRuntimeVersion"="4.0.30319"
"SDK40ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\WinSDK-NetFx40Tools-x86@InstallationFolder)"
"SDK35ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\WinSDKNetFx35Tools@InstallationFolder)"
"MSBuildToolsPath32"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0@MSBuildToolsPath)"
我也有同样的问题,这里是我的简单答案 在TeamCity服务器上安装Microsoft Windows SDK 7.1后 在Regedit中更改此键
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath
到
在Windows 10上设置新生成服务器时遇到相同问题。
找到并安装了最新版本(当时),解决了问题。尽管问题已经很老了,但它仍然出现在谷歌搜索结果的顶部,因此我决定也发布我的解决方案。在Windows Server 2016和Windows 10 Pro上安装TeamCity时,我也遇到了同样的问题 我已安装和(仅适用于.NET4.6.2的工具),并从问题中得到错误 缺少的难题是设置环境变量:
targetFrameworkDKToolsDirectory=C:\ProgramFiles(x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.6.2 Tools
设置环境变量后,MSBuild能够解析所有需要的工具,包括AL.exe和生成成功
请告诉我是否可以通过在注册表中设置值来实现同样的效果,但是在这种情况下,环境变量也可以很好地工作,并且不需要安装VS。添加系统环境变量
targetFrameworkDKTools目录
像这样:
targetFrameworkSDK工具目录=C:\Program Files(x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.6.2工具
按照以下步骤重新启动VS。这对我来说非常有效。节省了我的时间 1-右键单击我的电脑图标并选择属性,或在Windows控制面板中选择系统 2-选择高级系统设置 3-在“高级”选项卡上,单击“环境变量” 4-单击“新建”以在“用户变量”部分下创建新的环境变量 5-变量名称:targetFrameworkDKToolsDirectory 6-变量值:targetFrameworkDKToolsDirectory=C:\ProgramFiles(x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.6.2工具 变量值取决于SDK安装路径。 7-单击确定和保存所有窗口 8-重新启动Visual Studio。
$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools-x86@InstallationFolder)