Цель "_WPPCopyWebApplication" не существует в проекте

Я создаю сценарий сборки для автоматизации публикации наших веб-проектов на тестовом компьютере.

У меня есть сценарий msbuild, который успешно делает это, однако, когда он выполняется, он генерирует ошибку для каждого проекта в решении, утверждая, что "цель"_WPPCopyWebApplication"не существует в проекте".

Это правильно, потому что в каждом из моих файлов проекта я не импортирую соответствующий файл.targets, который содержит эту функцию.

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

MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets"не может быть импортирован снова.

Он уже был импортирован в "MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets (354,3)". Скорее всего, это ошибка разработки сборки. Этот последующий импорт будет проигнорирован.

На данный момент я импортирую соответствующие файлы.targets вверху моего скрипта сборки:

<Project ToolsVersion="4.0"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

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

Есть ли способ предотвратить ошибку, утверждающую, что "_WPPCopyWebApplication" не присутствует в файле проекта, без создания предупреждения о том, что после добавления его в каждый файл проекта есть дубликаты импорта?

Зачем проектам импортировать файл целей, если он импортирован вверху моего скрипта сборки?

Редактировать:

В настоящее время я использую _WPPCopyWebApplication следующим образом:

<Target Name="Publish" >
<RemoveDir Directories="$(OutputFolder)" ContinueOnError="true" />
<MSBuild Projects="myproject.csproj;anotherproject.csproj" Targets="ResolveReferences;_WPPCopyWebApplication" Properties="WebProjectOutputDir=$(OutputFolder);OutDir=$(WebProjectOutputDir)\" />
</Target>

Что я получил здесь и здесь:

1 ответ

Решение

Вы получаете эту ошибку, потому что Microsoft.WebApplication.targets уже импортирует Microsoft.Web.Publishing.targets.

http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/building-and-packaging-web-application-projects

Как работает WPP?

Файл Microsoft.WebApplication.targets, в свою очередь, импортирует файл Microsoft.Web.Publishing.targets. Файл Microsoft.Web.Publishing.targets по сути является WPP. Он определяет цели, такие как Package и MSDeployPublish, которые вызывают Web Deploy для выполнения различных задач развертывания.

Другие вопросы по тегам