Ошибка MSBuild MSB3086, с TeamCity

Я пытаюсь построить и развернуть .NET 4 проект с использованием MSBuild веб-развертывание и TeamCity, я получил эту работу нормально (в конечном итоге) с экземпляром TeamCity, работающим на моей локальной машине разработки, однако, когда я попытался настроить новый экземпляр TeamCity с теми же настройками, я получил следующую ошибку:

Microsoft.Common.targets(2249, 9): error MSB3086: Task could not find "sgen.exe" 
using the SdkToolsPath 
"C:Program Files (x86)Microsoft SDKsWindowsv7.0ABinNETFX 4.0 Tools" or the 
registry key "HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SDKsWindowsv7.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 ответов


есть / было что-то странное в том, как Windows SDK 7.0 a устанавливается с verus без visual studio. Есть вопросы проходимости. Чтобы установить Visual Studio на машине построения, но это неправильно. По крайней мере, для меня. Другой вариант-установить сборки не для создания сборок сериализации-во многих случаях они не имеют значения. Обратите внимание, что если вы пропустите сборки выпуска, это произойдет по умолчанию.

реальное исправление-правильно указать TeamCity на сген.exe, а затем скажите msbuild использовать правильную папку, используя правильный toolspath. См.этот вопрос для хорошего объяснения.


У меня была такая же проблема с TeamCity. Вот мои шаги, чтобы решить:

  1. скачать Windows SDK для Windows 7.1. Если ваш сервер/пользователь не разрешает веб-доступ,веб-установщик не будет работать, поэтому я рекомендую полный пакет скачать. Будьте осторожны, чтобы загрузить правильную версию-x86 [32-bit], x64 [64-bit] или Itanium.
  2. во время установки, вам только нужно выбрать один вариант: разработка .NET - > Инструменты enter image description here
  3. повторите попытку сборки. Мне не нужно было перезапускать агент, чтобы сборка работала правильно.

Если вы примите путь по умолчанию для установки, sgen.exe можно найти здесь:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sgen.exe

сначала для MSBUILD в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\MSBUILD\ToolsVersions\4.0". Ключевое значение SDK40toolsPath $(Реестр: 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.0 A должен туда попасть?!

Итак, я экспортировал всю "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0a " реестр из рабочего агента сборки в файл, затем скопировал и импортировал его в сломанный агент. Наконец-то работает. Надеюсь, это кому-то поможет.

это, вероятно, над kill, но вот содержимое экспортированного файла реестра.

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\WinSDKNetFx35Tools33]
"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)"}

в моем случае проблема возникла, когда я добавил веб-ссылку (C# 2.0) в свой проект. Я смог обойти это, построив прокси вручную.

wsdl.ехе /из:D:\Дев\Мургоху.cs / order https://blahblahblah?язык WSDL

...затем просто копирую MyProxy.вместо этого cs в мой проект.