После долгих поисков простого решения этой проблемы я не нашел его и в итоге нашел собственное решение, которое работает, но, возможно, не является лучшим решением.Тем не менее, я хотел бы поделиться этим с кем-то еще, у кого есть такая же проблема, чтобы вы могли по крайней мере иметь рабочее решение и, надеюсь, сэкономить вам много голов.
Напомним, что я хотел сделатьбыл запущен инструмент командной строки после того, как мой проект был построен, но только если сборка была обновлена (т.е. метка времени изменилась).Я не хотел помещать это в раздел пост-сборки каждого проекта, потому что я хотел, чтобы пост-сборка происходила только на нашем сервере сборки (не на машинах разработки).
Я не нашел никакого способаделать это внешне в моем основном файле .proj и в конечном итоге изменить раздел пост-сборки каждого файла .csproj.Однако я поставил перед ним условие if примерно так:
if '$(ExecuteCommand)' == 'true' command.exe
Это означает, что команда никогда не будет выполнена на компьютере разработчика, но когда я вызываю сборку из моего файла .proj, я могу установить, чтоотметьте true следующим образом:
<!-- Define common properties -->
<PropertyGroup>
<ExecuteCommand>true</ExecuteCommand>
</PropertyGroup>
<Target Name="YourTarget">
<!-- Build project -->
<MSBuild Projects="Path to project" Properties="ExecuteCommand=$(ExecuteCommand)" />
</Target>
Как я уже сказал, я не думаю, что это самое изящное решение, но оно, безусловно, работает и будет достаточно для меня на данный момент.Однако мне все равно было бы интересно узнать, как правильно добиться этого, чтобы я мог улучшить свой сценарий.
Спасибо, Алан