运行 MSBuild 失败,无法读取 SDKToolsPath。
运行 MSBuild 失败,无法读取 SDKToolsPath。
你好,我运行一个使用NAnt脚本的问题,该脚本曾经可以使用VS2008及其相关工具来编译我的基于.Net 2.0的网站。我最近将所有的项目/解决方案文件升级到VS2010,现在我的构建失败,出现以下错误:
[exec]
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(2249,9):
error MSB3086: 任务无法找到
位于SdkToolsPath ""或注册表键
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft
SDKs\Windows\v7.0A"的 "sgen.exe"。确保
SdkToolsPath已设置,并且该工具
存在于SdkToolsPath下的正确处理器
特定位置,并且已安装Microsoft
Windows SDK。
现在,我确实在构建服务器上安装了先前版本(.Net 3.5)的Windows SDK,并且安装了完整的.Net 4.0框架,但我没有遇到过.Net 4.0特定版本的Windows SDK。
经过一番尝试和研究,我最终设置了一个新的环境变量"SDKToolsPath",并将其指向我Windows 6.0 SDK文件夹中的sgen.exe副本。这产生了相同的错误,但让我注意到,即使SDKToolsPath环境变量已设置(通过命令行"echo"确认它具有预期值),错误消息似乎指示它没有被读取(请注意空引号)。
我找到的大部分信息都是针对.Net 3.5(或更早)的。目前还没有太多与4.0相关的信息。搜索错误代码MSB3086没有生成有用的结果。你有什么想法吗?
Scott
Running MSBuild fails to read SDKToolsPath 是由于 GenerateSerializationAssemblies 参数未正确设置导致的问题。解决方法是通过以下两种方式之一设置 GenerateSerializationAssemblies 参数为 Off:
1. 在命令行中运行以下命令:
msbuild.exe /p:GenerateSerializationAssemblies=Off
2. 在 Web 服务项目属性的构建选项卡中将 "Generate serialization assembly" 设置为 Off。
这样设置的作用是禁用生成序列化程序集。
需要注意的是,如果在构建选项卡中设置 GenerateSerializationAssemblies 参数为 Off,确保选择的是正确的构建配置。在某些情况下,可能需要在特定的构建配置中进行设置,比如在构建服务器中进行设置时可能需要更改 "Release" 配置。
需要注意的是,修改构建标志而不知道其实际作用是不可取的。