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

use*_*783 45 c++ regsvr32 post-build-event visual-studio

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

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

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

Tar*_*don 53

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

  • 哦,天哪,没有 StackOverflow 怎么会知道呢?!在 MSDN 上,这里有一些关于构建步骤和构建事件的执行顺序的附加信息:https://msdn.microsoft.com/en-us/library/e85wte0k.aspx 对于我的情况,我只是移动了我的“Post-构建事件”添加到“自定义构建步骤”,并在“输出”中指定了一个不存在的文件名。即使项目是最新的,这也能可靠地执行自定义构建步骤。 (3认同)
  • 我没有看到**自定义构建步骤**的任何**输出**设置.你在哪里找到**输出** (2认同)

小智 7

使用此 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>
Run Code Online (Sandbox Code Playgroud)