7

我正在尝试使用Web Deploy构建和部署一个.NET 4项目,并且在我的本地开发机器上运行 TeamCity 实例时,我(最终)可以正常工作,但是当我尝试使用相同的设置设置一个新的 TeamCity 实例时,我收到以下错误:MSBuildTeamCity

\Microsoft.Common.targets(2249, 9): error MSB3086: Task could not find "sgen.exe" 
using the SdkToolsPath 
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\" or the 
registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".
Make sure the SdkToolsPath is set and the tool exists in the correct processor 
specific location under the SdkToolsPath and that the Microsoft Windows SDK 
is installed 

我正在运行 Windows Server 2008,并安装了 .NET 4,包括(我相信)MSBuild 4。我还安装了 Windows SDK 7.1,因为其他线程表明这可能是问题所在,但仍然没有运气。任何想法或建议将不胜感激。

谢谢

4

4 回答 4

7

我对 TeamCity 也有同样的问题。以下是我要解决的步骤:

  1. 下载适用于 Windows 7.1 的 Windows SDK。如果您的服务器/用户不允许 Web 访问,Web 安装程序将无法工作,因此我建议下载完整包。请注意下载正确的版本——x86 [32-bit]、x64 [64-bit] 或 Itanium。
  2. 安装时只需要选择一个选项:.NET Development -> Tools 在此处输入图像描述
  3. 再次尝试构建。我不需要重新启动代理即可使构建正常工作。

如果您接受默认安装路径,将在此处找到sgen.exe :

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sgen.exe
于 2013-01-08T04:37:41.407 回答
6

Windows SDK 7.0A 在没有 Visual Studio 的情况下使用 verus 安装的方式存在/存在一些问题。存在路径问题。简单的出路是在构建机器上安装 Visual Studio,但这感觉不对。或者至少它对我有用。另一种选择是将构建设置为不创建序列化程序集——在许多情况下它们并不重要。请注意,如果您跳过发布版本,默认情况下会发生这种情况。

真正的解决方法是正确地将 TeamCity 指向 sgen.exe,然后通过使用正确的工具路径告诉 msbuild 使用正确的文件夹。请参阅此问题以获得很好的解释。

于 2011-11-15T17:28:10.380 回答
4

我为此花了整整 8 个小时,放弃了,并在第二天早上 30 分钟内解决了这个问题。我已经尝试了所有可以在互联网上找到的东西。这就是我的想法。我已经确认我的构建代理上安装了 sdk 7.1、7.0。最终它回到了注册表设置。

首先为 MSBUILD 在“HKEY_LOCAL_MACHINE\SOFTWARE\MSBUILD\ToolsVersions\4.0”下。我的构建代理上的密钥 SDK40toolsPath 值为 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools-x86@InstallationFolder)。

其中引用了“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools-x86@InstallationFolder”。但是,在我的构建代理上,该注册表不存在!所以它没有引用任何东西。我不知道 7.0A 注册表设置应该如何到达那里?!

因此,我将整个“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A”注册表从工作的构建代理导出到一个文件,然后将其复制并导入到损坏的代理中。它现在终于可以工作了。希望这可以帮助某人。

这可能已经结束了,但这里是导出的注册表文件内容。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
"ProductVersion"="7.1.7600.0.30514"
"ProductName"="Microsoft Windows SDK for Windows 7 (7.1.7600.0.30514)"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools]
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Tools for .NET Framework 4.0"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools-x64]
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Tools for .NET Framework 4.0 (x64)"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0         Tools\\x64\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools-x86]
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Tools for .NET Framework 4.0"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKBuild]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Microsoft Windows SDK Headers and Libraries"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKIntellisenseNFX]
"InstallationFolder"="C:\\Windows\\Microsoft.NET\\Framework\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Microsoft Windows SDK Intellisense for .Net"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKIntellisenseRefAssys]
"InstallationFolder"="C:\\Program Files\\Reference Assemblies\\Microsoft\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Intellisense and Reference Assemblies"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKInterop]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Microsoft Windows SDK NetFx Interop"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKNetFx35Tools]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Microsoft Windows SDK NetFx 3.5 Tools"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKNetFx35Tools\1033]
"SP"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKNetFx35Tools-x64]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\x64\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Microsoft Windows SDK NetFx 3.5 Tools (x64)"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKSamples]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Samples\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Samples"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKTools]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Common Utilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKTools-x64]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\x64\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Common Utilities (x64)"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKWin32Tools]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Utilities for Win32 Development"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDKWin32Tools-x64]
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\x64\\"
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Utilities for Win32 Development (x64)"}
于 2012-08-15T15:19:46.063 回答
0

就我而言,当我将 Web 引用 (C# 2.0) 添加到我的项目时,问题就出现了。我能够通过手动构建代理来解决它。

wsdl.exe /out:d:\dev\MyProxy.cs /order https://blahblahblah?wsdl

...然后只需将 MyProxy.cs 复制到我的项目中即可。

于 2016-05-03T18:21:16.200 回答