你好,我在运行一个NAnt脚本时会遇到一些问题,这个脚本曾用于正确构建基于.Net 2.0的网站,当使用VS2008及其相关工具进行编译时.我最近将所有项目/解决方案文件升级到VS2010,现在我的构建失败并出现以下错误:
[exec] C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(2249,9):错误MSB3086:任务无法使用S dkToolsPath""或注册表找到"sgen.exe"键"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK
现在,我已经在构建服务器上安装了Windows SDK的早期版本(.Net 3.5),并且安装了完整的.Net 4.0框架,但我没有遇到.Net 4.0特定版本的Windows SDK.
经过一些实验和研究,我终于设置了一个新的环境变量"SDKToolsPath"并将其指向我的Windows 6.0 sdk文件夹中的sgen.exe副本.这会产生相同的错误,但它让我注意到即使设置了SDKToolsPath环境变量(确认我可以在命令行"回显"它并且它具有预期的值),错误消息似乎表明它是没有被阅读(注意空引号).
我发现的大多数信息都是特定的.Net 3.5(或更早版本).还没有多少相关的4.0.搜索错误代码MSB3086也没有任何用处.知道这可能是什么吗?
斯科特
我在TeamCity CI构建服务器上遇到问题,在编译期间我收到以下错误:
C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342,9):错误MSB3086:任务找不到"AL.exe"使用SdkToolsPath""或注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK
我在一年前发现类似的报告,当时人们正在升级到.NET 3.5,例如这个.在这种情况下,安装最新的SDK解决了这个问题,但是我已经在构建服务器上安装了最新的SDK(适用于Windows 7和.NET Framework 4的Microsoft Windows SDK).MSBuild工具都在服务器上,位于一个名为的文件夹中
C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319
和AL.exe存在于
C:\ Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0工具
但是,错误消息中提到的注册表项不存在.因此,似乎MSBuild的安装/配置有问题.此错误仅发生在具有嵌入式资源的项目中,这些项目需要AL.exe.