При запуске 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 ]

0 голосов
/ 22 января 2017

Оболочка CMD
Я перепробовал все вещи отсюда и даже больше. Ничто не помогло мне.

Я применил обертки CMD для MSBuild и DevEnv.com.
Основная идея такой оболочки - создать подготовленную среду, вызывая командные строки из поставки Visual Studio. Затем передайте стандартные входные параметры на вызов MSBuild или DevEnv.com.

В любом случае, на моем сервере сборки теперь я могу создавать проекты из разных версий Visual Studio.

Как использовать
Мне пришлось заменить вызовы MSBuild и DevEnv вызовом оболочек моего пакетного файла.
И я не изменил никаких входных параметров. В качестве примера для моего вызова оболочки MSBuild:

<a href="https://github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/master/MSBuild_Wrapper_VS2015.bat" rel="nofollow noreferrer">MsBuild_Wrapper.bat</a> MySolution.sln /target Build /property:Configuration=Release

Готовый раствор
На самом деле, у меня гораздо больше проблем с переходом с VS 2010 на VS 2015. Но этот был первым и самым сложным.
Итак, мой скромный рецепт спасения для Build Server здесь. Возможно, трудно понять весь этот стиль CMD с первого момента, но я надеюсь, что любая логика очевидна.

Подсказка
Есть
MSBuild Command Prompt for Visual Studio и Developer Command Prompt for Visual Studio
Я использую их соответствующим образом для MSBuild и DevEnv.com. Но, вероятно, командной строки MSBuild будет достаточно.

Для VS 2015 эти командные строки здесь C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\. Или просмотрите меню программ Windows.

Чтобы передать все входные параметры в MSBuild или DevEnv внутри командного файла, я использовал CALL MSBuild %*

0 голосов
/ 22 февраля 2016

попробуйте использовать "ремонт" visual studio. У меня это сработало.

0 голосов
/ 16 декабря 2015

У меня только что была эта ошибка с файлом .sln, который изначально был создан в Visual Studio 2010 (и создавался Visual Studio 2010 и TFS 2010). Я изменил файл решения, чтобы НЕ создавать проект, который не должен был быть построен в конкретной конфигурации, и Visual Studio изменила заголовок файла решения с:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

Кому:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1

Возвращение к исходной версии 2010 года решило мою проблему. Я полагаю, что обратная совместимость в Visual Studio до сих пор не усовершенствована.

0 голосов
/ 19 октября 2015

У меня была похожая проблема. Я выполнил проект, используя Visual Studio 2010, а затем получил вышеуказанную ошибку, когда скомпилировал его, используя Visual Studio 2012. Я просто скопировал все содержимое C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A в C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A, и это решило мою проблему.

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