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

时间:2009-12-21 01:05:49

标签: c++ visual-studio post-build-event regsvr32

在Visual Studio(2008)中,即使项目是最新的,也可以强制C ++项目的后期构建事件运行吗?

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

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

4 个答案:

答案 0 :(得分:49)

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

答案 1 :(得分: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>

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

在Visual Studio 2017(可能还有其他版本)中,对于C#项目(未根据OP的实际问题检查C ++项目),有一个选项“运行构建后事件:”,而一个选项是“始终”(Always),即使没有任何变化也将运行构建后,而不是简单地报告项目是最新的:

enter image description here