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