VS2012构建后事件未触发

Gra*_*ant 18 post-build-event visual-studio-2012

我有一个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" to "bin\ABC._Services.dll".
  Copying file from "C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC.Business.Web.pdb" to "bin\ABC.Business.Web.pdb".
  Copying file from "C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC.Web.pdb" to "bin\ABC.Web.pdb".
  Copying file from "C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC._Services.pdb" to "bin\ABC._Services.pdb".
CopyFilesToOutputDirectory:
  Copying file from "obj\Debug\ABC.Web.Migrate.dll" to "bin\ABC.Web.Migrate.dll".
  ABC.Business.Web.Migrate -> C:\Dev\ABC\Source\ABC.Business.Web.Migrate\bin\ABC.Web.Migrate.dll
  Copying file from "obj\Debug\ABC.Web.Migrate.pdb" to "bin\ABC.Web.Migrate.pdb".
PostBuildEvent:
  "C:\Dev\bin\spawn.exe" "C:\Dev\ABC\Scripts\Migrate Business Web.bat"

Build succeeded.

Time Elapsed 00:00:00.34
========== Build: 4 succeeded, 0 failed, 53 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

示例VS2012构建没有代码更改:

------ Build started: Project: ABC.Business.Web, Configuration: Debug Any CPU ------
Build started 2012-08-23 01:36:04.
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
CopyFilesToOutputDirectory:
  ABC.Business.Web -> C:\Dev\ABC\Source\ABC.Business.Web\bin\ABC.Business.Web.dll

Build succeeded.

Time Elapsed 00:00:00.31
========== Build: 1 succeeded, 0 failed, 56 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

我尝试在VS2012中使用post-build事件"Always".如果代码更改(仅与On成功相同),它仅触发Always post-build事件.我唯一的解决方法是进行重建 - 当我有几十个依赖项目时会很痛苦!或者手动运行我的脚本 - 也很烦人!(并且不,这不是我的脚本 - 当第一个示例说明代码更改时,此脚本可以正常工作!)

这可能是故意更改或错误.

还有其他人在VS2012中遇到过这个构建后的问题吗?

小智 30

我有同样的问题,我解决了如下:

  • 将一些虚拟空txt文件添加到项目中.
  • 属性"构建行动":内容.
  • 属性"复制到输出目录":始终.

就是这样,它将始终执行de POST-BUILD步骤,即使项目是最新的或不是启动项目.

在此输入图像描述

  • 我没有看到c ++项目的这个选项.嗯 (2认同)
  • 请注意,这会带来不同的烦恼-现在,即使没有代码更改,您的项目也将*总是*在运行时进行重建。如果解决方案很大并且有很多依赖关系,那可能会很慢并且很烦人。 (2认同)

llo*_*mas 3

我有一个类似的问题,这对我有帮助:

工具...选项...项目和解决方案...构建和运行...

取消选中“仅在运行时构建启动项目和依赖项”

正如此处建议的:Post-Build Event on Run (F5) In Visual Studio?