你好,我在运行一个NAnt脚本时遇到了一些问题,该脚本用于正确构建我的.Net 2.0的网站,当使用VS2008及其相关工具编译时.我最近将所有项目/解决方案文件升级到VS2010,现在我的构建失败,出现以下错误:

[EXEC] C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(2249,9): 错误MSB3086:找不到任务 "sgen.exe"使用S dkToolsPath"" 或注册表项 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDK\Windows\v7.0A".请确保 设置了SdkToolsPath,并且工具 存在于正确的处理器中 下的特定位置 SdkToolsPath和Microsoft 已安装Windows SDK

现在,我确实在构建服务器上安装了Windows SDK的早期版本(.NET3.5),并且安装了完整的.NET4.0框架,但是我还没有运行过.NET4.0特定版本的Windows SDK.

经过一些实验和研究,我终于设置了一个新的环境变量"SDKToolsPath",并将其指向我的Windows6.0SDK文件夹中的sgen.exe副本.这产生了相同的错误,但是它让我注意到,即使设置了SDKToolsPath环境变量(确认我可以在命令行" echo "它,并且它具有预期值),错误消息似乎表明它没有被读取(请注意空引号).

我找到的大部分信息都是.净3.5(或更早)特定.目前还没有太多与4.0相关的内容.搜索错误代码MSB3086也没有产生任何有用的结果.知道这是什么吗?

斯科特

推荐答案

我不得不咬紧牙关在我们的构建服务器上安装VS2010来解决这个问题.据我所知,MSDN上没有可用的Windows SDK 7.0A版本.但是,安装VS2010似乎就是在安装它,在Program Files\MicrosoftSDK\Windows中创建了7.0A regkey和7.0A文件夹.

.net相关问答推荐

Long.MaxValue从Single到Long的转换导致溢出异常

使用 DataDog 收集 OpenTelemetry 跟踪

正则表达式匹配 URL 中的多个子目录

如何规范机器之间连字符的排序顺序?

正则表达式在空格上拆分,除非在引号中

关于在 .NET 中干净地终止线程的问题

移位比Java中的乘法和除法更快吗? .网?

为什么 StyleCop 建议在方法或属性调用前加上this?

JavaScript 中的IsNullOrWhitespace?

通用枚举到int的C#非装箱转换?

我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

找不到 Microsoft.Office.Interop Visual Studio

为什么发布和调试模式下的代码行为不同?

.NET 配置文件 configSource 在应用程序目录文件夹之外

如何使用 DateTime 指定一天中的最晚时间

为什么 Roslyn 中有异步状态机类(而不是 struct )?

安装带有恢复操作的 Windows 服务以重新启动

铸造:(NewType)与对象作为NewType

如何判断对象是否已在 C# 中释放

如何使用 NPOI 读取文件