msbuild失败:MSB3086,MSB3091:找不到“AL.exe”,“resgen.exe”

时间:2014-09-30 06:32:31

标签: .net sdk msbuild windows-7-x64

在64位Windows 7机器上,我安装了.Net framework 4.5.1和Windows SDK for Windows 8.1 http://msdn.microsoft.com/en-us/windows/desktop/aa904949.aspx

在尝试构建解决方案时,我收到以下错误(似乎是相关的):

错误MSB3086:任务找不到“AL.exe”使用SdkToolsPath“”或注册表项“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.0A \ WinSDK-NetFx40Tools-x86”。确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK

错误MSB3091:任务失败,因为找不到“resgen.exe”,或者未安装正确的Microsoft Windows SDK。任务是在注册表项HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A \ WinSDK-NetFx35Tools-x86的InstallationFolder值中指定的位置下的“bin”子目录中查找“resgen.exe”。您可以通过执行以下操作之一来解决问题:1)安装Microsoft Windows SDK。 2)安装Visual Studio 2010. 3)手动将上述注册表项设置为正确的位置。 4)将正确的位置传递给任务的“ToolPath”参数。

我尝试了建议的解决方案(除了安装VS:不允许在该机器上),许多其他人在互联网上找到,例如重新安装SDK,在注册表中执行一些黑客攻击,设置环境变量,在项目中添加标签,尝试许多命令行切换到msbuild进程,并遵循这些线程:

Running MSBuild fails to read SDKToolsPath

Failing Build because it can't find AL.exe

tfs 2012 build task failed because "resgen" was not found

但他们都没有解决问题。

这个问题类似于:

https://stackoverflow.com/q/23655387/1288109

没有答案!

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:5)

虽然SDK的设置说它是最新的,但可能不是。 我终于解决了这个问题,删除了所有已安装的SDK版本,然后按以下顺序安装以下内容:

http://www.microsoft.com/en-us/download/details.aspx?id=3138

http://www.microsoft.com/en-us/download/details.aspx?id=8279

http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx

http://msdn.microsoft.com/en-us/windows/desktop/aa904949.aspx

我只是指出可能存在一些其他相关问题:在安装了上述所有内容之后,我终于又出现了另一种错误,对于某些项目(目标框架3.0),未指定输出路径。它改为指定为bin \ release。我用bin \ $(配置)\替换它,我的解决方案最终构建完毕。

另见:

https://stackoverflow.com/a/26123890/1288109