你好,我在运行一个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也没有任何用处.知道这可能是什么吗?
斯科特
Sim*_*mmo 226
我无法面对将Visual Studio放在构建服务器上.
SDK v7.0A是随Visual Studio 2010一起安装的SDK(A表示这是VS版本).从那时起,一个更新的版本已经发布.适用于Windows 7的 Microsoft Windows SDK 和.NET Framework AKA v7.1.
我已经在我的构建服务器上安装了它.然后通过Windows SDK 7.1命令提示符(开始=>所有程序=> Microsoft Windows SDK 7.1),我将SDK的默认版本设置为7.1.
脚步:
cd Setup
WindowsSdkVer.exe -version:v7.1
Run Code Online (Sandbox Code Playgroud)
编辑以包含LordHits的评论:一个不需要安装整个SDK.仅安装".NET开发/智能感知和参考组件"和".NET开发/工具"选项就足够了.
Dan*_*iel 19
只需将值为Off的GenerateSerializationAssemblies参数传递给MsBuild即可.
msbuild.exe /p:GenerateSerializationAssemblies=Off
Run Code Online (Sandbox Code Playgroud)
Joh*_*ann 15
我不得不咬紧牙关并在我们的构建服务器上安装VS 2010来解决这个问题.据我所知,MSDN上没有任何版本的Windows SDK可用.但是,安装VS 2010似乎安装它,在Program Files\Microsoft SDKs\Windows中创建7.0A regkey和7.0A文件夹.
Der*_*ter 11
我手动将变量传递给构建服务器上的MSBuild.
msbuild.exe MyProject.csproj "/p:TargetFrameworkSDKToolsDirectory=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools" "/p:AspnetMergePath=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools"
Run Code Online (Sandbox Code Playgroud)
我最近在构建服务器上遇到了类似的问题.
我将7.0A文件夹(C:\ Program Files\Microsoft SDKs\Windows\7.0A)从我的计算机(安装了VS2010)复制到同一位置的构建服务器上.
创建以下注册表项后:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A.将InstallationFolder设置为C:\ Program Files\Microsoft SDKs\Windows\7.0A.
如果您对如何处理构建服务器上的注册表感到困惑,您还可以在已安装VS2010的计算机上引用该注册表.
我遇到了同样的错误但是在不同的情况下:使用VS 2010 Express并尝试使用Simmo的答案来明确设置SDK版本 - 但是WindowsSdkVer.exe(版本设置工具)似乎不是针对Express(可以理解,因为它有限).
我在Win 7 Prof.上使用VS 2010 Express并且它总是想使用Win SDK的v7.0A(它没有所有需要的exes),并且无论我明确设置为当前使用哪个版本都无关紧要WindowsSdkVer.exe(它一直报告它设置了SDK的当前版本但是对于VS 2008虽然我只安装了2010 Ex.)
所以我的廉价解决方法是安装v7.0 WIN SDK(或其他版本,如v7.1),然后将其文件系统文件夹重命名为v7.0A - 基本上我只是骗了VS 2010 Express,但现在可以正常工作了!
我在全新的 Windows 10 机器上遇到了同样的问题。我的设置:
但我无法构建 .NET 4.0 项目:
Die Aufgabe konnte "AL.exe" mit dem SdkToolsPath-Wert "" 或 dem Registrierungsschlüssel "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86
解决方案:在尝试(但失败)安装 Windows 7 SDK(因为这也包括 .NET 4.0 SDK)后,我需要安装 Windows 8 SDK 并确保安装了“.NET Framework 4.5 SDK”。
这太疯狂了……但奏效了。
| 归档时间: |
|
| 查看次数: |
112732 次 |
| 最近记录: |