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

Visual Studio: запуск проекта С++ Post-Build Event, даже если проект является актуальным

В Visual Studio (2008) можно ли принудительно запустить событие Post-Build для проекта С++, даже если проект обновлен?

В частности, у меня есть проект, который создает COM-сервер COM-процесса. Проект имеет шаг после сборки, который запускает "regsvr32.exe $(TargetPath)". Это отлично работает на "Rebuild", но работает на "Build", только если изменения были внесены в источник проекта.

Если я создаю "Build" без каких-либо изменений, Visual Studio просто сообщает, что проект является актуальным и ничего не делает - событие Post-Build не запускается. Есть ли способ, которым я могу заставить Событие работать в этой ситуации? Это необходимо, поскольку, хотя сама DLL обновлена, регистрационная информация не может быть.

4b9b3361

Ответ 1

Вы можете использовать страницу свойств Custom Build Step, чтобы настроить командный файл для запуска. Это выполняется, если файл, указанный в параметре Выходы, не найден или устарел. Просто укажите там какой-нибудь несуществующий файл, и будет выполняться шаг пользовательской сборки. Он будет работать, даже если ваш проект обновлен, так как выходной файл никогда не будет найден.

Ответ 2

Используйте этот DisableFastUpToDateCheck

Смотрите пример:

<PropertyGroup>
    <PostBuildEvent>IF  EXIST C:\Projects\Copy_Files_To_Instance.ps1 ( powershell -file C:\Projects\Copy_Files_To_Instance.ps1)</PostBuildEvent>
    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>

Ответ 3

Регистрационная информация определяется в основном тем, что находится в файле .rgs. Если этот файл изменится, проект будет построен. Я не уверен, как иначе регистрация COM может измениться, не загрязняя проект. Не возражаете ли вы предоставить более подробную информацию о вашей конкретной ситуации?

Ответ 4

В Visual Studio 2017 (возможно, и в других версиях) для проектов на С# (не проверенных для проектов C++ по фактическому вопросу OP) есть опция "Запустить событие после сборки:", и один вариант - " Всегда ", которая будет запускать Post-Build, даже если ничего не изменилось, вместо того, чтобы просто сообщать, что проект обновлен:

enter image description here