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

Я пытаюсь обновить наш buildserver (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

Ответ 1

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

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

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

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

screenshot from GUI

Ответ 2

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

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

  • 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 устанавливает огромное количество материала. Build Tools подразумевается, как всегда. Безотносительно.

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

Ответ 3

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

Ответ 4

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

choco install visualstudio2017buildtools -y

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

choco install visualstudio2019buildtools -y

Ответ 5

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

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

to

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

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

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

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

Ответ 6

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

использовать vs 2017 pro на обоих компьютерах dev и build

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

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

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

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