【发布时间】:2015-05-09 02:21:59
【问题描述】:
在我的项目中,我正在运行一个外部工具来更新一些二进制文件。这些文件作为“内容”包含在项目中。
目前该工具设置为在 C# 项目属性中的“预构建事件”期间运行。不幸的是,这个事件只有在项目过期的情况下才会执行,这不是我需要的。
我通过在我的项目中始终使用“重建”而不是“构建”来解决这个问题,但这既乏味又缓慢。
无论项目是否是最新的,我都需要始终执行此工具。实际上,甚至在MSBuild 甚至在判断项目是否为最新之前,因为该工具修改了项目中包含的一些文件,从而影响了最新的检查结果。
有合适的方法吗?
【问题讨论】:
-
不,在将项目加载到 IDE 时对其进行修改不会有好的结果。当然有更好的方法,您的问题对我们没有帮助。
-
@HansPassant 也许我过度设计了这个问题。归结为:有没有办法在构建之前始终运行命令?
-
对于 C++ 项目,您可以使用具有
BeforeTargets="BuildGenerateSources"属性的目标来执行此操作,对于 C#,您可以执行类似的操作,只需弄清楚您在构建中调用的众多目标中的哪一个将用于该 BeforeTargets 属性。运行详细的构建并检查输出或开始查看 Microsoft.CSharp.targets 左右。但是正如 Hans 所说:结果可能不是你所期望的 -
当在 Visual Studio 的鼻子下更改磁盘上的源代码会导致各种有趣的行为,您需要关闭 HostCompiler 服务(这会降低 Visual Studio 的速度):@ 987654321@
-
对于 C#,它将是
BuildDependsOn组,msdn.microsoft.com/en-us/library/ms366724.aspx 或者您可以扩展解决方案本身:stackoverflow.com/a/5720489/736079(请参阅第二个答案,接受的答案不是您所追求的) .
标签: visual-studio-2013 msbuild pre-build-event