在Visual Studio(2008)中,即使项目是最新的,也可以强制C++项目的Post-Build事件运行?
具体来说,我有一个项目,它构建一个COM进程内服务器DLL.该项目有一个后期构建步骤,运行"regsvr32.exe $(TargetPath)".这在"重建"上运行良好,但只有在对项目源进行了更改时才在"构建"上运行.
如果我在不进行任何更改的情况下执行"构建",Visual Studio只会报告项目是最新的并且什么都不做 - 后期构建事件不会运行.有什么方法可以强制事件在这种情况下运行?这是必要的,因为尽管DLL本身是最新的,但注册信息可能不是.
我有一个Web项目,用于触发构建后事件"成功构建"以执行一些清理/迁移活动(命令脚本).
在VS2012中,成功后构建仅在代码更改时触发.如果没有代码更改,编译器仍会报告Successful Build,但是,成功后构建事件不会触发.
在VS2010中,无论代码更改如何,成功后的构建后事件都会在每次成功构建时触发.这就是我所期待的.编译成功,即使没有发生任何更改,因此事件应该触发.
使用代码更改的VS2012构建示例:
------ Build started: Project: ABC.Business.Web.Migrate, Configuration: Debug Any CPU ------
Build started 2012-08-23 01:26:13.
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
CoreCompile:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /errorendlocation /preferreduilang:en-US /highentropyva- /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" /reference:C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC.Business.Web.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" /debug+ /debug:full /optimize- /out:obj\Debug\ABC.Web.Migrate.dll /target:library /utf8output Properties\AssemblyInfo.cs "C:\Users\Administrator\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.cs"
_CopyFilesMarkedCopyLocal:
Copying file from "C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC.Business.Web.dll" to "bin\ABC.Business.Web.dll".
Copying file from "C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC.Web.dll" to "bin\ABC.Web.dll".
Copying file from "C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC._Services.dll" …Run Code Online (Sandbox Code Playgroud)