Запустите другой объект, кроме DefaultTarget, для конфигурации проекта в Visual Studio 2010 - PullRequest
3 голосов
/ 21 декабря 2011

В моем csproj есть цель MSBuild для копирования файлов и папок моего веб-приложения в целевой путь после сборки.

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
...

Если я вызываю MSBuild через командную строку с целью «PublishToFileSystem», все работает нормально.

Но теперь я хочу «использовать» эту цель и для специальной конфигурации в Visual Studio (например, Release, Debug, ...).

Как я могу назначить конфигурацию другой цели, отличной от DefaultTarget "Build", установленной в проекте с DefaultTargets:

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

Спасибо, Конрад

Ответы [ 3 ]

4 голосов
/ 21 декабря 2011

Попробуйте использовать цель AfterBuild вместо PublishToFileSystem:

<Target Name="AfterBuild" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">

или установите флажок Переопределение предопределенных целей в MSDN

1 голос
/ 02 марта 2017

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

<Target Name="CustomBuild">
  <CallTarget Targets="SignAndroidPackage" Condition="'$(Configuration)' == 'UITest'"/>
  <CallTarget Targets="Build" Condition="'$(Configuration)' != 'UITest'"/>
</Target>

А затем просто измените цель по умолчанию в верхней части определения проекта на эту цель CustomBuild.

<Project DefaultTargets="CustomBuild" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
0 голосов
/ 21 декабря 2011

Вот подход, который может удовлетворить ваши потребности: запустить пользовательскую цель msbuild из VisualStudio

(это трюк № 78 в книге MSBuild Trickery )

...