Visual Studio:即使项目是最新的,也运行C ++项目Post-Build Event

问题描述 投票:42回答:4

在Visual Studio(2008)中,即使项目是最新的,也可以强制C ++项目的Post-Build事件运行?

具体来说,我有一个项目,它构建一个COM进程内服务器DLL。该项目有一个后期构建步骤,运行“regsvr32.exe $(TargetPath)”。这在“重建”上运行良好,但只有在对项目源进行了更改时才在“构建”上运行。

如果我在不进行任何更改的情况下执行“构建”,Visual Studio只会报告项目是最新的并且什么都不做 - 后期构建事件不会运行。有什么方法可以强制事件在这种情况下运行?这是必要的,因为尽管DLL本身是最新的,但注册信息可能不是。

c++ visual-studio post-build-event regsvr32
4个回答
53
投票

您可以使用“自定义生成步骤”属性页来设置要运行的批处理文件。如果未找到“输出”设置中指定的文件,或者已过期,则会运行此选项。只需在那里指定一些不存在的文件,自定义构建步骤将始终运行。即使您的项目是最新的,它也会运行,因为从未找到输出文件。


3
投票

使用此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
投票

注册信息主要取决于.rgs文件中的内容。如果该文件发生更改,则将构建项目。我不确定COM注册如何在不使项目变脏的情况下进行更改。你介意提供有关你特定情况的更多细节吗?


-1
投票

在Visual Studio 2017(也许还有其他版本)中,对于C#项目(没有根据OP的实际问题检查C ++项目),有一个选项“Run the post-build event:”,一个选项是“Always” ,即使没有任何变化,它将运行Post-Build,而不是简单地报告项目是最新的:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.