Основная статья здесь
How to: Specify Custom Actions That Run Pre-build or Post-build.
А вот здесь есть список макросов
Pre-build Event / Post-build Event Command Line Dialog Box (Database Edition)
Короче. В свойствах проекта, на закладке Build Events есть пара полей для ввода команд, которые будут выполнены ДО или ПОСЛЕ сборки проекта. И еще поле Run the post-build event, в котором задаётся условие выполнения команд ПОСЛЕ сборки (On successful build – при удачной сборке или Always — всегда).
Редактировать текст можно прямо в этих полях. Но если нажать кнопку Edit Pre-build или Edit Post-build появиться дополнительное окно в котором есть кнопка Macros. Если нажать эту кнопку, появиться список макро подстановок и их реальных значений. Если выбрать конкретный макрос и нажать Insert — макрос вставиться в текст.
Нужно учесть что значения макроподстановок для путей заканчиваются слэшем ().
Пример написания команд с условиями (if):
1) С помощью GOTO
if $(ConfigurationName) == Debug goto :debug :release signtool.exe .... xcopy ... goto :exit :debug ' debug items in here :exit
2) Без GOTO
if $(ConfigurationName) == Debug ( copy "$(TargetDir)myapp.dll" "c:deliverybin" /y copy "$(TargetDir)myapp.dll.config" "c:deliverybin" /y ) ELSE ( echo "why, Microsoft, why". )