При запуске MSBuild не удается прочитать SDKToolsPath - PullRequest
126 голосов
/ 28 апреля 2010

Привет, у меня возникла небольшая проблема с запуском сценария NAnt, который использовался для правильной сборки моего веб-сайта на основе .Net 2.0 при компиляции с VS2008 и связанными с ним инструментами. Я недавно обновил все файлы проекта / решения до VS2010, и теперь моя сборка завершается с ошибкой:

[ВЫПЛН] C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (2249,9): ошибка MSB3086: не удалось найти задачу "sgen.exe" используя S dkToolsPath "" или раздел реестра «HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A ". Убедитесь, что SdkToolsPath установлен и инструмент существует в правильном процессоре конкретное место под SdkToolsPath и что Microsoft Windows SDK установлен

Теперь у меня действительно есть предыдущие версии (.Net 3.5) Windows SDK, установленные на сервере сборки, и установлена ​​полная платформа .Net 4.0, но я не сталкивался с конкретной версией .Net 4.0. Windows SDK.

После небольшого количества экспериментов и исследований я, наконец, просто установил новую переменную окружения "SDKToolsPath" и указал ее на копию sgen.exe в моей папке Windows 6.0 SDK. Это вызвало ту же ошибку, но заставило меня заметить, что, хотя переменная окружения SDKToolsPath установлена ​​(подтверждено, что я могу «отобразить» ее в командной строке, и она имеет ожидаемое значение), сообщение об ошибке, похоже, указывает не читается (обратите внимание на пустые кавычки).

Большая часть информации, которую я нашел, относится к .Net 3.5 (или более ранней версии). Не много 4.0 связано там еще. Поиск кода ошибки MSB3086 также не принес ничего полезного. Есть идеи, что это может быть?

Scott

Ответы [ 24 ]

226 голосов
/ 25 мая 2010

Я не мог поставить Visual Studio на сервер сборки.

SDK v7.0A - это SDK, установленный с Visual Studio 2010 (A указывает, что это версия VS). С тех пор была выпущена более новая версия. Microsoft Windows SDK для Windows 7 и .NET Framework AKA v7.1 .

Я установил это на свой сервер сборки. И затем с помощью командной строки Windows SDK 7.1 (Пуск => Все программы => Microsoft Windows SDK 7.1) я установил версию SDK по умолчанию равной 7.1.

Шаги:

cd Setup

WindowsSdkVer.exe -version:v7.1

Изменить, чтобы включить комментарий LordHits: Не нужно устанавливать весь SDK. Достаточно установить только параметры «.NET Development / Intellisense и справочные сборки» и «.NET Development / Tools».

18 голосов
/ 05 сентября 2013

Просто передайте параметр GenerateSerializationAssemblies со значением Off в MsBuild.

msbuild.exe /p:GenerateSerializationAssemblies=Off
15 голосов
/ 29 апреля 2010

Мне пришлось прикусить пулю и установить VS 2010 на наш сервер сборки, чтобы решить эту проблему. Насколько я вижу, в MSDN нет ни одной версии Windows SDK 7.0A. Тем не менее, установка VS 2010, кажется, устанавливает его, создавая regkey 7.0A и папку 7.0A в Program Files \ Microsoft SDKs \ Windows.

9 голосов
/ 09 июня 2017

Я вручную передаю переменные в 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"
8 голосов
/ 07 января 2011

Я недавно столкнулся с подобной проблемой на нашем сервере сборки.

Я скопировал папку 7.0A (C: \ Program Files \ Microsoft SDK \ Windows \ 7.0A) со своего компьютера (на котором установлен VS2010) на сервер сборки в том же месте.

После создания следующего раздела реестра: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A. Установите InstallationFolder в C: \ Program Files \ Microsoft SDKs \ Windows \ 7.0A.

Вы также можете ссылаться на реестр на вашем компьютере с уже установленным VS2010, если вы не уверены, что делать с реестром на сервере сборки.

7 голосов
/ 17 октября 2010

Я столкнулся с той же ошибкой, но в другой ситуации: использую VS 2010 Express и пытаюсь использовать ответ Симмо , чтобы явно установить версию SDK - однако WindowsSdkVer.exe (инструмент установки версий), кажется, не предназначен для Express (понятно, так как он ограничен).

Я использую VS 2010 Express на Win 7 Prof. и он всегда хочет использовать v7.0A Win SDK (который не имеет всех необходимых exes), и не имеет значения, какую версию я явно установил как текущий, использующий WindowsSdkVer.exe (он постоянно сообщает, что устанавливает текущую версию SDK, но для VS 2008, хотя у меня установлен только 2010 Ex.)

Так что мой дешевый обходной путь заключался в установке v7.0 WIN SDK (или другой версии, например v7.1), а затем переименование папки его файловой системы в v7.0A - в основном я только что соврал VS 2010 Express, но теперь он работает!

5 голосов
/ 12 мая 2011

Один из ваших проектов использует sgen.exe (Генератор сервера) для создания веб-службы.вам нужно установить SDK для сборки сервера или удалить ссылки на веб-службы из проекта.

4 голосов
/ 28 апреля 2010

Я подозреваю, что файл целей переопределяет путь инструментов, я быстро просмотрел этот файл и установил для SDKToolsPath значение $ TargetFrameworkSDKToolsDirectory в соответствии с некоторыми из целей в нем. Я не думаю, что вам все равно нужно устанавливать их в среде, но они могут нуждаться в исправлении в файлах вашего проекта.

Обратите внимание, что согласно этой странице http://nant.sourceforge.net/ Nant не поддерживает .Net 4.0, может ли это быть реальной проблемой?

Извините, я знаю, что это на самом деле не отвечает на ваш вопрос: (

3 голосов
/ 28 апреля 2010

У вас на самом деле не установлена ​​SDK версии 7.0A? Это проблема, которую вам нужно решить. Посмотрите в файлах установки VS2010, чтобы увидеть, что пошло не так. SDK должен присутствовать в каталоге c: \ program files \ microsoft sdks \ windows \ 7.0a, и указанный раздел реестра также должен присутствовать. Работать с версией 6.0a sgen.exe не совсем нормально, обязательно используется неправильный компилятор.

3 голосов
/ 17 ноября 2015

У меня была такая же проблема на новой машине с Windows 10. Моя настройка:

  • Windows 10
  • Visual Studio 2015 установлен
  • Windows 10 SDK

Но я не смог собрать .NET 4.0 проекты:

Die Aufgabe konnte "AL.exe" mit dem SdkToolsPath-Wert "" oder dem Registrierungsschlüssel "HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Microsoft SDK \ Windows \ v8.0A \ WinSDK-NetFx40Tools-1015 x 86 * Решение: После попытки (и неуспешной) установки Windows 7 SDK (поскольку он также включает в себя .NET 4.0 SDK) мне нужно было установить Windows 8 SDK и убедиться, что «.NET Framework 4.5 SDK» установлен.

Это безумие ... но сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...