Цель "_WPPCopyWebApplication" не существует в проекте - PullRequest
4 голосов
/ 16 августа 2011

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

У меня есть сценарий 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) "Скорее всего, это ошибка разработки сборки. Этот последующий импорт будет проигнорирован.

В настоящий момент я импортирую relevant .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 Ответ

3 голосов
/ 19 марта 2013

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

...