Ошибка 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. Вот мои шаги, чтобы решить:
- скачать Windows SDK для Windows 7.1. Если ваш сервер/пользователь не разрешает веб-доступ,веб-установщик не будет работать, поэтому я рекомендую полный пакет скачать. Будьте осторожны, чтобы загрузить правильную версию-x86 [32-bit], x64 [64-bit] или Itanium.
- во время установки, вам только нужно выбрать один вариант: разработка .NET - > Инструменты
- повторите попытку сборки. Мне не нужно было перезапускать агент, чтобы сборка работала правильно.
Если вы примите путь по умолчанию для установки, 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 в мой проект.