Ошибка MSBuild MSB3086, с TeamCity - PullRequest
       60

Ошибка MSBuild MSB3086, с TeamCity

7 голосов
/ 15 ноября 2011

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

\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. IЯ также установил Windows SDK 7.1, поскольку другие потоки предположили, что это может быть проблемой, но все же не повезло.Любые идеи или советы будут оценены.

Спасибо

Ответы [ 4 ]

7 голосов
/ 08 января 2013

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

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

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

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sgen.exe
6 голосов
/ 15 ноября 2011

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

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

4 голосов
/ 15 августа 2012

Я ударился головой об этом в течение полных 8 часов, сдался и понял это через 30 минут на следующее утро. Я перепробовал все, что мог найти в Интернете. Вот как я это понял. Я уже подтвердил, что на моем агенте сборки установлен SDK 7.1, 7.0. В конечном итоге все вернулось к настройкам реестра.

Сначала для 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.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)"}
0 голосов
/ 03 мая 2016

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

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

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

...