修正了自动递增文件版本的组装版本?

我试图找到一种更有意义的方式来处理我的应用程序的版本控制,并且我遇到了这篇KB文章

http://support.microsoft.com/kb/556041

基本上它建议组装版本是固定的,并且每个版本都会增加文件版本。 现在这对我来说很合理,但对我来说,我似乎无法实现它。

下面的代码片段会自动增加Assembly版本和FileVersion。

[assembly: AssemblyVersion("1.0.*")]

虽然这下一个似乎设置1.0.0.0的固定汇编版本和固定的文件版本1.0.*

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.*")]

顺便提一下,文件属性的“详细信息”选项卡中的“产品版本”现在也会显示1.0.* 。 现在,我可以使用此修复文件属性中的产品版本...

[assembly: AssemblyInformationalVersion("1.0")]

但这对我原来的任务没有帮助。 出于好奇,我尝试了下面的内容,并将File版本更改为2.0.* ,所以至少使用它。 这只是不自动递增。

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("2.0.*")]

因此,从我可以收集的自动增量的唯一版本号是组件版本,但是如果没有指定文件版本,它将被设置为与组件版本相同。

有没有人知道一种方法来自动增加文件版本,同时保持程序集版本的固定?


是的,这有点愚蠢,微软似乎弄错了方向。 AssemblyVersion在.NET程序集版本控制系统中使用,所以您不应该自动增加它,但是AssemblyFileVersion会写入文件版本资源中的文件版本条目中,因此您可能会合理地认为它默认情况下会始终自动增量。

我确信有一些第三方构建系统可以为你做到这一点,但我只是编写了一个命令行C#应用程序来完成它,并且它作为构建过程的一部分在每个项目上运行。 这非常简单:

  • 逐行读取AssemblyInfo.cs文件。
  • 执行RegEx搜索AssemblyFileVersion行,将所有四个版本部件捕获到单独的捕获组中。 你可以自己解析它,但是一个正则表达式会一次完成所有的检测和解析,所以看起来好像很愚蠢,而不是利用它。
  • 一旦你有了四个整数,就可以按你认为合适的方式实现你自己的递增逻辑。
  • 链接地址: http://www.djcxy.com/p/50673.html

    上一篇: Fixed Assembly Version with Auto Incremented File Version?

    下一篇: Incrementing build number with Hudson build