У меня просто возникали проблемы с этим - я пробовал много разных подходов, но все они загадочно провалились.
Как только $ (ProjectDir) снова начал работать правильно, шаг перед сборкой прекратил выполнение команды (я добавил эхо-команды над и под ней - они оба выполнялись, но программа между ними не была. Нет ошибок или выходных данных любого типа, чтобы указать, почему это не удалось).
Я не знаю, если это хитрый сервер, если MSBuild смеется.
Я сдался. Я дал большой толчок серверу сборки и изменил тактику: теперь мы запускаем этот инструмент в автономном режиме (вручную) и проверяем результаты для использования сервером сборки. Вот вам и автоматизированная сборка :-( Если бы только MSBuild запускал решения так же, как Visual Studio, - это сводит с ума, что он настраивает среду совершенно по-разному (разные пути, выходящие из переменных решения, выводятся в разные папки, поэтому вы не можете найти их там, где они должны быть, и т. д.)