it-swarm.com.ru

Microsoft.WebApplication.targets не был найден на сервере сборки. Какое у вас решение?

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

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. Но теперь я настраиваю новый сервер с нуля, и я хочу знать, есть ли лучшее решение для решения этой проблемы.

365
stacker

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

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

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

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

197
Chris S

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

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

94
Sayed Ibrahim Hashimi

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 под управлением исходного кода.

70
Andriy K

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

62
Lloyd Holman

Исходя из этот пост здесь вы можете просто загрузить распространяемый пакет оболочки Microsoft Visual Studio 2010 (интегрированный) и цели будут установлены.

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

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

До:

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

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

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

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

55
Matthew Skelton

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

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

46
SOReader

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

38
dansomething

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

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


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

 enter image description here

18
Alex R.

Добавить зависимость через 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
15
Damon

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

Измените его значение с 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

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

13
Korayem

Это все, что вам нужно. Всего 103 МБ. Не устанавливайте все

enter image description here

8
Simon_Weaver

Похоже, новая версия msbuild не поставляется с Microsoft.WebApplication.targets. Для исправления необходимо обновить файл csproj следующим образом:

1) Отредактируйте веб-приложение csproj (щелкните правой кнопкой мыши). Найдите раздел в csproj внизу, посвященный инструментам сборки. Это должно выглядеть так.

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

2) Вам нужно добавить одну строку VSToolsPath ниже тега VisualStudioVersion, чтобы она выглядела так

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!--Add the below line to fix the project loading in VS 2017 -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!--End -->
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

Ссылка на ссылку: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/

7
Huy Truong

Я нашел это на MS Connect :

Да, вам нужно установить Visual Studio 2010 на вашей сборочной машине для сборки база данных проектов. Это делает не требует дополнительной лицензии Visual Studio.

Итак, это единственный вариант, который у меня есть на данный момент.

5
stacker

Любой, кто приезжает сюда для Visual Studio 2017. У меня была похожая проблема, и я не смог скомпилировать проект после обновления до 15.6.1. Мне пришлось установить инструменты MSBulild, но ошибка все же была. 

Мне удалось устранить проблему, скопировав папку v14.0 из C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio в ту же папку, что и v15.0, и это устранило все ошибки. Теперь моя структура папок выглядит следующим образом: обе папки содержат одинаковое содержимое. 

 enter image description here

2
Habib

Я попробовал кучу решений, но в конце концов этот ответ сработал для меня: https://stackoverflow.com/a/19826448/431522

В основном это вызывает вызов MSBuild из каталога MSBuild, а не из каталога Visual Studio. 

Я также добавил каталог MSBuild в свой путь, чтобы скрипты было легче кодировать. 

2
hendrikswan

Мое решение состоит из нескольких ответов здесь.

Я проверил сервер сборки, и Windows7/NET4.0 SDK уже был установлен, поэтому я нашел путь:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets`

Тем не менее, на этой строке:

<Import Project = "$ (MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />

$ (MSBuildExtensionsPath) раскрывается в C:\Program Files\MSBuild без пути.

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

mklink/J "C:\Program Files\MSBuild\Microsoft\VisualStudio" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio"

Таким образом, $ (MSBuildExtensionsPath) расширяется до допустимого пути, и никаких изменений в самом приложении не требуется, только на сервере сборки (возможно, можно создать символическую ссылку при каждой сборке, чтобы убедиться, что этот шаг не потерян и «задокументирован» «).

2
Kat Lim Ruiz

Я исправил это, добавив
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

в 
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments

2
MonoThreaded

Если вы используете MSBuild, как в случае с сервером сборки, у меня сработало следующее:

Измените следующее:

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

к:

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

Моя команда Msbuild: *"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

Надеюсь, это кому-нибудь поможет.

0
Colin Q

В случае, если вы пытаетесь развернуть проект с использованием VSTS, проблема может быть связана с проверкой опции «Hosted Windows Container» вместо «Hosted VS2017» (или 18 и т.д.):

 enter image description here

0
Arsen Khachaturyan