Visual Studio: Execute o evento C ++ Project Post-Boild, mesmo que o Project esteja atualizado
-
20-09-2019 - |
Pergunta
No Visual Studio (2008), é possível forçar o evento pós-construção para que um projeto C ++ seja executado, mesmo que o projeto esteja atualizado?
Especificamente, eu tenho um projeto que cria uma DLL do servidor com processo. O projeto possui uma etapa pós-construção que é executada "Regsvr32.exe $ (TargetPath)". Isso funciona bem em uma "reconstrução", mas é executada em uma "construção" apenas se forem feitas alterações na fonte do projeto.
Se eu fizer uma "construção" sem fazer alterações, o Visual Studio simplesmente relata que o projeto está atualizado e não faz nada-o evento pós-construção não é executado. Existe alguma maneira de forçar o evento a ser executado nessa situação? Isso é necessário, pois, embora a própria DLL esteja atualizada, as informações de registro podem não ser.
Solução
Você pode usar o Etapa de construção personalizada Página da propriedade para configurar um arquivo em lote para ser executado. Isso é executado se o arquivo especificado no Saídas A configuração não é encontrada ou está desatualizada. Basta especificar algum arquivo inexistente lá, e a etapa de construção personalizada sempre será executada. Ele será executado mesmo se o seu projeto estiver atualizado, pois o arquivo de saída nunca for encontrado.
Outras dicas
Use este desabilmefastupTodateCheck
Veja um exemplo:
<PropertyGroup>
<PostBuildEvent>IF EXIST C:\Projects\Copy_Files_To_Instance.ps1 ( powershell -file C:\Projects\Copy_Files_To_Instance.ps1)</PostBuildEvent>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
As informações de registro são determinadas em grande parte pelo que está no .rgs
Arquivo. Se esse arquivo alterar o projeto será construído. Não tenho certeza de que mais o registro do COM pode mudar sem deixar o projeto sujo. Você se importa de fornecer mais detalhes sobre sua situação específica?
No Visual Studio 2017 (talvez outras versões), para projetos C# (não verifiquei os projetos C ++ por pergunta real do OP), existe uma opção para "Run the Post-Build Event:", e uma opção é "sempre" , que executará o pós-construção, mesmo que nada tenha mudado, em vez de simplesmente relatar que o projeto está atualizado: