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

Ответ 1

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

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

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

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

Ответ 2

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

Вам нужно будет установить Инструмент развертывания веб-сайтов. Я думаю, что это так.

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

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

До:

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

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

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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


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

введите описание изображения здесь

Ответ 9

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

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

Я применил гибридный подход к подходу NuGet от Lloyd здесь, который был основан на бинарных зависимостях решение Andrik.

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

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

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

Ответ 10

Если вы переносите Visual Studio 2012 на 2013 год, откройте файл проекта .csproj с помощью edior.
и отметьте элемент "Инструменты" тега "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

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

Ответ 11

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

enter image description here

Ответ 12

Кажется, новая версия 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/

Ответ 13

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

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

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

Ответ 14

Мое решение представляет собой сочетание нескольких ответов здесь.

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

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

Однако в этой строке:

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

Ответ 15

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

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

Ответ 16

Я попробовал кучу решений, но в итоге этот ответ сработал у меня: fooobar.com/questions/20045/...

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

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

Ответ 17

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

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

введите описание изображения здесь

Ответ 18

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

enter image description here

Ответ 19

Если вы используете 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"*

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

Ответ 20

У меня было sucess копирование файлов с моей машины dev в TFS. Они должны жить в одном месте на обеих машинах.