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.

Foi útil?

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:

enter image description here

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top