Цель "_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.
Как работает WPP?
Файл Microsoft.WebApplication.targets, в свою очередь, импортирует файл Microsoft.Web.Publishing.targets. Файл Microsoft.Web.Publishing.targets по сути является WPP. Он определяет цели, такие как Package и MSDeployPublish, которые вызывают Web Deploy для выполнения различных задач развертывания.