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

86

Я пытаюсь обновить наш сервер сборки (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).

Спасибо

Moerwald
источник
1
У меня была эта проблема с проектом, использующим 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 "/>
tmutton

Ответы:

130

Похоже , вам не хватает нагрузки для «Веб - инструменты сборки развитие»: Microsoft.VisualStudio.Workload.WebBuildTools.

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

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

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

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

Мартин Ульрих
источник
3
как я могу запустить эту команду, которая дает 'vs_buildtools.exe' не распознается как внутренняя или внешняя командная ошибка в средстве разработчика 2017
Developerzzz
26
Если вы уже загрузили установщик «Инструменты сборки для Visual Studio 2017» ( visualstudio.com/thank-you-downloading-visual-studio/… ), то вы можете запустить этот установщик, нажать «Изменить» и поставить галочку напротив «Задачи сборки веб-разработки. флажок модуля рабочей нагрузки. Затем нажмите кнопку «Изменить» и дождитесь завершения установки.
Spiralis
Да, для установки необходимо использовать указанную выше командную строку. Вы не можете найти его в графическом интерфейсе.
sky91
4
Я установил Build Tools for Visual Studio 2017с Web development build tasksпомощью предоставленной ссылки, но он все еще не создает C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsпапку .. я тоже не вижу vs_buildtools.exe.. я искал весь `c:`
LP13
1
спасибо .. похоже, что из VS 2017 значение $(MSBuildExtensionsPath)было изменено на C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/… это
LP13
88

Принятый выше ответ технически правильный, просто неполный, немного сбивающий с толку, по крайней мере, для меня, и для работы 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 устанавливает огромное количество вещей. Инструменты сборки, как всегда, подразумеваются. Без разницы.

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

Сара Вайнбергер
источник
4
Подтверждено, что «Инструменты сборки для 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. Странный.
ZZZ
1
Вы не должны ничего копировать вручную. vs_buildtools.exe - это просто установщик Visual Studio. Это поможет вам установить Build Tools или Visual Studio. Для обоих вы можете установить разные рабочие нагрузки и компоненты. Если вы хотите установить рабочую нагрузку для Visual Studio, вам нужно нажать для нее кнопку «Изменить». Таким образом вы можете установить необходимые компоненты.
Владимир Серых
2
Конечно, но проблема в том, что установщик Visual Studio, похоже, ненадежно помещает папку WebApplications в оба нужных места. Копирование вручную, как предложила Сара, - единственный способ, которым мне удалось надежно заставить сборки работать на моей машине разработчика.
Барт Рид
21

У меня возникла аналогичная проблема после обновления с 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 (нажмите Показать больше комментариев, чтобы увидеть полную ветку обсуждения - к сожалению, я не могу напрямую ссылаться на комментарии в этом разделе "еще".)

Тобиас
источник
11

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

choco install visualstudio2017buildtools -y

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

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

Скопировать WebApplicationsпапку из

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

к

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

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

adeel41
источник
3

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

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

Убедитесь, что для VisualStudio установлено значение 15.
Import 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" restore "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

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

Виорел Банесару
источник
3

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

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

к

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

мариокач
источник
Как получить C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 для VS2019
somegeek
-1

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

Питер Чен
источник