运行 MSBuild 失败,无法读取 SDKToolsPath。

20 浏览
0 Comments

运行 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

0
0 Comments

Running MSBuild fails to read SDKToolsPath 是由于 GenerateSerializationAssemblies 参数未正确设置导致的问题。解决方法是通过以下两种方式之一设置 GenerateSerializationAssemblies 参数为 Off:

1. 在命令行中运行以下命令:

msbuild.exe /p:GenerateSerializationAssemblies=Off

2. 在 Web 服务项目属性的构建选项卡中将 "Generate serialization assembly" 设置为 Off。

这样设置的作用是禁用生成序列化程序集。

需要注意的是,如果在构建选项卡中设置 GenerateSerializationAssemblies 参数为 Off,确保选择的是正确的构建配置。在某些情况下,可能需要在特定的构建配置中进行设置,比如在构建服务器中进行设置时可能需要更改 "Release" 配置。

需要注意的是,修改构建标志而不知道其实际作用是不可取的。

0
0 Comments

问题:运行MSBuild无法读取SDKToolsPath。

原因:没有可用的7.0A版本的Windows SDK。

解决方法:安装Visual Studio 2010或者更改注册表中的一些键值。

0
0 Comments

问题出现的原因是在构建服务器上运行MSBuild时无法读取SDKToolsPath。

解决方法是安装Windows SDK 7.1,并通过Windows SDK 7.1命令提示符将默认版本设置为7.1。此外,还可以通过从Visual Studio机器复制文件到C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications来解决问题。另外,还可以删除注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A键来解决问题。

0