在Visual Studio(2008)中,即使项目是最新的,也可以强制C ++项目的后期构建事件运行吗?
具体来说,我有一个构建COM进程内服务器DLL的项目。该项目有一个后期构建步骤,运行“regsvr32.exe $(TargetPath)”。这在“Rebuild”上运行良好,但只有在对项目源进行了更改时才在“Build”上运行。
如果我在不进行任何更改的情况下执行“构建”,Visual Studio只会报告项目是最新的并且什么都不做 - 后期构建事件不会运行。有什么方法可以强制事件在这种情况下运行?这是必要的,因为尽管DLL本身是最新的,但注册信息可能不是。
答案 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)