Visual Studio: запуск проекта C ++ Post-Build Event, даже если проект обновлен - PullRequest
43 голосов
/ 21 декабря 2009

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

В частности, у меня есть проект, который создает библиотеку DLL внутрипроцессного сервера. У проекта есть шаг после сборки, который запускает "regsvr32.exe $ (TargetPath)". Это нормально работает на «Перестроить», но работает на «Сборка», только если были внесены изменения в исходный код проекта.

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

Ответы [ 4 ]

50 голосов
/ 21 декабря 2009

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

3 голосов
/ 03 апреля 2018

Используйте эту 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>

0 голосов
/ 03 мая 2019

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

enter image description here

0 голосов
/ 21 декабря 2009

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

...