MS-Build 2017 Microsoft.WebApplication.targets отсутствует

Я пытаюсь обновить наш сервер сборки (jenkins) с Visual Studio 2015 до 2017 года. Мы строим через MS-Build. Я загрузил и установил инструменты MS-Buld, как описано в этом ответ. Если я компилирую свои проекты, я получаю сообщение об ошибке Microsoft.WebApplication.targets не найден.

Подробная ошибка:

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

Я выполнил находку в каталоге MS-Build:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

Как видно, файл существует для старых версий компилятора, но для v15.0 он отсутствует.

Я также установил Visual Studio 2017 на сборочный сервер. Проект удастся построить, если я скомпилирую с Visual Studio 2017.

Есть подсказки, как решить эту проблему? Одно из возможных решений - создать символическую ссылку из точки C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications на старые файлы v14.0 (расположенные в папке C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Спасибо


person Moerwald    schedule 19.05.2017    source источник
comment
Сильно связано: Microsoft.WebApplication.targets не найден на сервере сборки. Какое у вас решение?.   -  person Wai Ha Lee    schedule 27.03.2019
comment
У меня была эта проблема с проектом, использующим VS 2019. Я исправил ее, открыв файл csproj, указав строку ‹Import Project = $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets / ›И заменив его на‹ Import Project = $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets / ›   -  person tmutton    schedule 05.07.2019


Ответы (8)


Похоже, вам не хватает рабочей нагрузки для "инструментов сборки веб-разработки": _ 1_.

Вы можете установить его, загрузив установщик инструментов сборки здесь (VS2017) или здесь (VS2019), затем запускаем

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

или открыв vs_buildtools.exe и выбрав компонент «Инструменты построения веб-разработки» в графическом интерфейсе:

снимок экрана из графического интерфейса

person Martin Ullrich    schedule 19.05.2017
comment
как я могу запустить эту команду, ее предоставление 'vs_buildtools.exe' не распознается как внутренняя или внешняя ошибка команды в средстве разработчика 2017 - person Developerzzz; 19.06.2017
comment
Если вы уже загрузили установщик Build Tools for Visual Studio 2017 (visualstudio.com/thank-you-downloading-visual-studio/), затем вы можете запустить этот установщик, нажать« Изменить »и установить флажок« Модуль рабочей нагрузки задач сборки веб-разработки ». Затем нажмите кнопку «Изменить» и дайте установщику завершить работу. - person Spiralis; 17.07.2017
comment
Да, для установки вам нужно использовать командную строку, указанную выше. Вы не можете найти его в графическом интерфейсе. - person sky91; 21.07.2017
comment
Я установил Build Tools for Visual Studio 2017 с помощью Web development build tasks из предоставленной ссылки, однако он по-прежнему не создает папку C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications .. я также не вижу _4 _ .. я искал весь `c:` - person LP13; 24.04.2018
comment
версия 2017 не устанавливается в глобальное расположение msbulid. Найдите в %programfiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin версию msbuild.exe, которую вам нужно использовать. - person Martin Ullrich; 24.04.2018
comment
спасибо .. похоже, что в VS 2017 значение $(MSBuildExtensionsPath) было изменено на C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/, которые - person LP13; 24.04.2018
comment
@Martin - Я позволил себе немного расширить ваш ответ. Не стесняйтесь вернуться, если вам кажется, что я зашел слишком далеко. - person Wai Ha Lee; 27.03.2019
comment
@ sky91 - это вполне возможно сделать из графического интерфейса - см. снимок экрана, который я включил выше, или снимок экрана в этом ответе . - person Wai Ha Lee; 27.03.2019

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

  1. vs_buildtools.exe технически не существует. Мне пришлось создать вопрос, спрашивающий, где этот файл был. Не было очевидным, что vs_buildtools.exe - это vs_buildtools _ *******. Exe и является самой программой установки. Кроме того, упомянутое выше «-add ***» является лишь сокращением. Можно перейти в графический интерфейс и проверить обе задачи рабочего процесса. То же самое. Я получил файл vs_buildtools, хотя и не нуждался в нем.

  2. VSB Pro все еще не построил мой проект. Я получил ту же ошибку, что и выше. Секретом было просто скопировать папку WebApplications из C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0 в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Затем я перестроил проект, и все было в порядке. Я разместил файл WebApplication.targets в ожидаемом месте.

Почему Microsoft не смогла этого сделать, мне непонятно. Кроме того, почему отдельная установка. VS17 устанавливает огромное количество вещей. Инструменты сборки, как всегда, подразумеваются. Что бы ни.

Я отправляю этот ответ, надеюсь, он поможет другим. Я попал в ловушку и потерял довольно много времени из-за того, что мой проект не строился. Я надеюсь, что этот ответ немного проясняет ситуацию.

person Sarah Weinberger    schedule 27.07.2017
comment
Подтверждено, что Build Tools for Visual Studio 2017 фактически копирует цели в C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0, в то время как msbuild фактически пытается найти цели в C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, поэтому мне приходится копировать папки. По-видимому, первый используется IDE, а второй - автономным msbuild. Странный. - person ZZZ; 02.08.2017
comment
Вы не должны ничего копировать вручную. vs_buildtools.exe - это просто установщик Visual Studio. Это поможет вам установить Build Tools или Visual Studio. Для обоих вы можете установить разные рабочие нагрузки и компоненты. Если вы хотите установить рабочую нагрузку для Visual Studio, вам нужно нажать для нее кнопку «Изменить». Таким образом вы сможете установить необходимые компоненты. - person Vladimir Serykh; 06.02.2018
comment
Конечно, но проблема в том, что установщик Visual Studio, похоже, не надежно помещает папку WebApplications в оба нужных места. Копирование вручную, как предложила Сара, - единственный способ надежно заставить сборки работать на моей машине разработчика. - person Bart Read; 16.11.2018

У меня возникла аналогичная проблема после обновления Visual Studio 2015 до 2017. Когда я пытаюсь загрузить проект веб-приложения, мне выводится сообщение об ошибке:

Импортированный проект «C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets» не найден. Кроме того, попытался найти «WebApplications \ Microsoft.WebApplication.targets» в резервном пути (ах) поиска для $ (VSToolsPath) - «C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0». Эти пути поиска определены в «C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config». Убедитесь, что путь в объявлении правильный, и что файл существует на диске в одном из путей поиска.

Решение этой ошибки я нашел здесь.

В моем случае файл .csproj содержал следующие строки:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

После замены v14.0 на v$(VisualStudioVersion) в теге VSToolPath проект можно было загрузить.

Я также заменил v14.0 на v10.0 в теге VisualStudioVersion, как показано в приведенной выше ссылке. Но для меня это также сработало, оставив его на 14.0.

Вот как эти строки должны выглядеть в итоге:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

Если у вас вообще нет этих строк в вашем .csproj, вам нужно добавить их вручную прямо ПЕРЕД этой строкой:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

В моем случае (немного другое сообщение об ошибке, но та же проблема) это была эта строка:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Похоже, что проекты, созданные в версиях Visual Studio с 2011 года, содержат строки с переопределением VSToolsPath, а в более старых файлах нет. Visual Studio никогда не добавляла их автоматически при обновлении до более новой версии VS, поэтому вам следует добавить их, если их там нет.

Источник этой информации: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (щелкните Показать больше комментариев, чтобы просмотреть полную ветку обсуждения - к сожалению, я не могу напрямую ссылаться на комментарии в этом разделе "еще".)

person Tobias    schedule 22.02.2018

Инструменты сборки 2017 легко установить с уже включенной опцией WebBuildTools, используя шоколадный. После того, как вы его установили, введите в командной строке администратора следующее:

choco install visualstudio2017buildtools -y

Для VS 2019 это похоже:

choco install visualstudio2019buildtools -y
person alastairtree    schedule 28.07.2017
comment
Вам не нужно устанавливать определенную версию, вы можете установить ее таким образом с помощью Chocolatey и включить принятый ответ: cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y - person brianary; 26.06.2018

Скопируйте папку WebApplications из

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

to

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

Или в вашем сценарии сборки добавьте следующую строку перед компиляцией

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

Обязательно запускайте его с повышенными разрешениями

person adeel41    schedule 23.10.2017

Для VS 2019 я исправил это, скопировав:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

to

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio

person mariocatch    schedule 04.03.2020
comment
Как получить C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 для VS2019 - person Roshan; 10.06.2020

как создать VS 2017 pro, приложение asp.net MVC и построить его с помощью Jenkins?

используйте vs 2017 pro как на машине разработчика, так и на сервере сборки

Убедитесь, что VisualStudio имеет значение 15
Импорт Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condition = "false"

установите для инструмента msbuild
значение C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe в глобальном диспетчере конфигурации jenkins.

С помощью jenkins выполните пакет команд Windows:
retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" восстановить "C: \ Program Files ( x86) \ Jenkins \ workspace \ theapp_build \ theapp.sln "

С помощью jenkins выполните пакет команд Windows:
Файл сборки MSBuild: theapp.sln
Аргументы командной строки: / nologo / t: restore / t: rebuild / p: Configuration = " Отладка "/p:VisualStudioVersion=15.0

person Viorel Banesaru    schedule 28.07.2017

Я просто использую установщик Visual Studio для обновления Visual Studio Community 2017, и проблема решается.

person Peter Chen    schedule 11.12.2019