Microsoft.WebApplication.targets не был найден на сервере сборки. Какое у тебя решение? - PullRequest
386 голосов
/ 20 октября 2010

При попытке построить мой проект на сервере сборки возникает следующая ошибка:

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

Я решил эту проблему несколько месяцев назад, установив Visual Studio 2010 на Build Server.Но теперь я настраиваю новый сервер с нуля, и я хочу знать, есть ли лучшее решение для решения этой проблемы.

Ответы [ 19 ]

203 голосов
/ 17 марта 2011

Чтобы ответить на заголовок вопроса (но не на вопрос о получаемых результатах):

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

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

Удалите x86 в зависимости от того, как сломалась ваша сборка. Если у вас есть другие типы проектов, вам, вероятно, потребуется скопировать всю папку msbuild.

95 голосов
/ 22 октября 2010

Создание и публикация WAP не поддерживается, если VS не установлен.С учетом вышесказанного, если вы действительно не хотите устанавливать VS, вам нужно скопировать все файлы в %ProgramFiles32%\MSBuild\Microsoft\.

Вам также потребуется установить Web Deploy Tool .Я думаю, что это так.

71 голосов
/ 19 октября 2012

UPD: с VS2017 в Build Tools есть рабочая нагрузка, которая полностью устраняет эту проблему. См. @ SOReader answer .

Если вы предпочитаете не изменять что-либо на сервере сборки, и вы по-прежнему хотите, чтобы проект создавался прямо из системы контроля версий, возможно, было бы неплохо поставить необходимые двоичные файлы под контроль версий. Вам нужно изменить раздел импорта в вашем файле проекта, чтобы он выглядел так:

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

Первая строка - это фактический импорт из нового местоположения относительно каталога решения. Второй вариант - это отключенная версия (Condition="false") исходной строки, которая позволяет Visual Studio по-прежнему рассматривать ваш проект как допустимый проект веб-приложения (это хитрость, которую VS 2010 SP1 делает сам).

Не забудьте скопировать папку C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplications в BuildTargets под управлением исходного кода.

66 голосов
/ 12 августа 2013

Вы также можете использовать пакет NuGet MSBuild.Microsoft.VisualStudio.Web.targets , ссылаясь на них в рамках вашего проекта (ов) Visual Studio, а затем изменить ссылки, как рекомендует Андрей К.

56 голосов
/ 22 июня 2017

Прямо сейчас, в 2017 году, вы можете установить редиректы WebApplication с помощью MSBuildTools. Просто перейдите на эту страницу , которая загрузит Инструменты MSBuild 2017, и во время установки нажмите Web development build tools, чтобы также установить следующие цели: enter image description here

Это приведет к установке отсутствующих библиотек в C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications по умолчанию

55 голосов
/ 12 сентября 2012

На основе этого сообщения здесь вы можете просто загрузить Распространяемый пакет Microsoft Visual Studio 2010 Shell (Integrated) , и цели будут установлены.

Это избавляет от необходимости устанавливать Visual Studio на сервере сборки.

Я только что попробовал это сейчас и могу убедиться, что это работает:

До:

ошибка MSB4019: импортированный проект "C: \ Program Files (X86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets» не был найден. Убедитесь, что путь в объявлении правильно, и что файл существует на диске.

После установки:

[Строит правильно]

Очевидно, что это гораздо лучшее решение, чем установка Visual Studio на сервере сборки.

38 голосов
/ 14 августа 2011

Последний Windows SDK, как упоминалось выше, в дополнение к «Распространяемому пакету оболочки Microsoft Visual Studio 2010» ( для Microsoft.WebApplication.targets и ) Microsoft Visual Studio Team SystemВыпуск базы данных 2008 GDR R2 " для Microsoft.Data.Schema.SqlTasks.targets должен облегчить необходимость установки Visual Studio 2010. Однако установка VS 2010 на самом деле может быть менее общей для загрузки и меньше работы в конце.

20 голосов
/ 03 марта 2016

При сборке на сервере build / CI полностью отключите импорт Microsoft.WebApplication.targets, указав /p:VSToolsPath=''.Это, по существу, сделает условие следующей строки ложным:

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


Вот как это делается в TeamCity:

enter image description here

15 голосов
/ 22 ноября 2013

Добавить зависимость через NuGet и установить параметр сборки

Цель: без изменений / установок, необходимых для агентов сборки

Я взял гибридный подход к NuGet-подходу Ллойда здесь , который был основан на фиксации решения двоичных зависимостей Андрика.

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

  1. На компьютере с Visual Studio откройте решение; игнорируйте, что веб-проект терпит неудачу.
  2. В диспетчере пакетов NuGet добавьте MSBuild.Microsoft.VisualStudio.Web.targets , как упоминал Ллойд.
  3. Это разрешит двоичные файлы в [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. Вы можете скопировать их в папку ссылок и зафиксировать,
    2. Или просто используйте их там, где они есть. Я выбрал это, но я собираюсь позже разобраться с номером версии в пути.

В версии 7 я сделал следующее. Это, возможно, не было необходимо, и на основе комментариев определенно не нужно сейчас. Пожалуйста, смотрите комментарии ниже.

  1. Затем, в вашей конфигурации сборки TeamCity, добавьте параметр сборки для env.VSToolsPath и установите его в папку VSToolsPath; Я использовал ..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath
13 голосов
/ 29 августа 2015

Если вы переносите Visual Studio 2012 на 2013, откройте файл проекта * .csproj с помощью edior.
и проверьте элемент ToolsVersion тега «Проект».

Измените его значение с 4,0 на 12,0

  • С

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
    
  • К

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" ...
    

Или, если вы собираете с помощью msbuild, просто укажите свойство VisualStudioVersion

msbuild /p:VisualStudioVersion=12.0

Источник решения

...