MSBuild任务仅为具有更改的项目获取更新FileAssemblyVersion

时间:2010-08-02 17:02:45

标签: c# msbuild assemblies msbuild-task

有没有办法,使用msbuild或其他方法来检测哪些项目在当前版本中有变化,并仅更​​新那些项目的AssemblyInfo.cs中的FileAssemblyVersion属性?

1 个答案:

答案 0 :(得分:0)

假设你已经设置了增量[get和]编译,下一步就是挂钩MSBuild序列。看看FrameworkDir\Microsoft.Common.Targets。问题在于事情并没有设置为以这种方式工作 - 事实上有_TimestampBeforeCompile_TimeStampAfterCompile步骤,这些步骤只能表明如果要编译某些东西你就无法确定先验。虽然理论上你可以在[特定语言] CoreCompile [例如,在Microsoft.CSharp.targets]之前挂钩,但问题是你需要和它一样Inputs才能确定它是否正常这将意味着大量的剪切和粘贴并与系统文件保持同步。需要注意的另一件事是在_ComputeNonExistentFileProperty目标顶部的评论中注明。

所以,除了对序列进行一些非常深刻的修改之外(例如,如果你的自定义_TimeStampAfterCompile检测到编译发生了,那么在'post build'位中挂钩会强制进行第二次编译,我' d说没有简单,推荐或支持的方式。

话虽如此,AssemblyFileVersion(你指的是FileAssemblyVersion,它不存在:P)在编译后很容易修改,因为它只是一个资源 - 你会找到工具。但我认为你真的在谈论同时做它和AssemblyVersion,它不能以相同的方式在事后调整。