1

是否有任何方法,使用 msbuild 或其他方式来检测哪些项目在当前构建中发生了变化,并仅为这些项目更新 AssemblyInfo.cs 中的 FileAssemblyVersion 属性?

4

1 回答 1

0

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

因此,除了对序列进行一些非常深入的修改(例如,如果_TimeStampAfterCompile您的自定义检测到发生编译,则挂钩强制进行第二次编译的“构建后”位,我想说这不容易,推荐或支持的方式。

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

于 2010-08-04T08:13:13.867 回答