Подтвердить что ты не робот

Разница между файлами проекта Visual Studio между PostBuildEvent и целью AfterBuild?

может кто-то объяснить различия между ними:

<Target Name="AfterBuild">
    <!-- task here -->
</Target>

и

<PropertyGroup>
<PostBuildEvent>copy "$(ProjectDir)\..\lib\$(PlatformName)\x.dll" .</PostBuildEvent>
</PropertyGroup>

Спасибо.

4b9b3361

Ответ 1

Свойство PostBuildEvent может содержать команду, которая передается как атрибут Command для задачи Exec. По сути, вы получаете цель, которая выглядит так:

<Target Name="PostBuildEvent">
   <Exec Command="$(PostBuildEvent)" />
</Target>

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

Цель AfterBuild может содержать произвольные задачи MSBuild, включая одну или несколько задач Exec или любую другую задачу, доступную для MSBuild, что позволяет увеличить сложность.

С точки зрения того, когда они выполняются, цель PostBuildEvent запускается непосредственно перед "CoreBuild", а цель "AfterBuild" будет запускаться после "CoreBuild". Если место размещения имеет решающее значение, вы можете создать свою собственную цель и подключить ее к любой из построенных вам построек, используя объявления $(DependsOn..) или указав BeforeTargets и AfterTargets на новую цель.

Ответ 2

Оба PostBuildEvent и AfterBuild являются объектами MSBuild. Разница между ними - это условия вокруг, когда они вызывают

  • AfterBuild: он запускается как последнее действие в объекте Build и делает это независимо от того, выполняется ли сборка. Он запускается после PostBuildEvent (если он вообще запущен)
  • PostBuildEvent: это выполняется условно после завершения сборки. Когда он запускается, он очень настраивается, но в целом он запускается только в том случае, если сборка успешно завершается и создает новый результат.