Свойство PostBuildEvent может содержать команду, которая передается как атрибут Command для задачи Exec. По сути, вы получаете цель, которая выглядит так:
Вы можете настроить условия, когда это будет запущено с настройкой в среде IDE, по умолчанию оно выполняется только в успешной сборке.
Цель AfterBuild может содержать произвольные задачи MSBuild, включая одну или несколько задач Exec или любую другую задачу, доступную для MSBuild, что позволяет увеличить сложность.
С точки зрения того, когда они выполняются, цель PostBuildEvent запускается непосредственно перед "CoreBuild", а цель "AfterBuild" будет запускаться после "CoreBuild". Если место размещения имеет решающее значение, вы можете создать свою собственную цель и подключить ее к любой из построенных вам построек, используя объявления $(DependsOn..) или указав BeforeTargets и AfterTargets на новую цель.
Ответ 2
Оба PostBuildEvent и AfterBuild являются объектами MSBuild. Разница между ними - это условия вокруг, когда они вызывают
AfterBuild: он запускается как последнее действие в объекте Build и делает это независимо от того, выполняется ли сборка. Он запускается после PostBuildEvent (если он вообще запущен)
PostBuildEvent: это выполняется условно после завершения сборки. Когда он запускается, он очень настраивается, но в целом он запускается только в том случае, если сборка успешно завершается и создает новый результат.