修复了具有自动增量文件版本的汇编版本?

Nic*_*cht 9 .net c# version

我正在尝试找到一种更有意义的方式来处理我的应用程序的版本控制,我来到了这篇知识库文章

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

基本上它建议修复程序集版本,并为每个构建增加文件版本.现在这对我来说非常有意义,但对于我的生活,我似乎无法实现它.

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

[assembly: AssemblyVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)

虽然下一个似乎设置了固定的程序集版本1.0.0.0和固定的文件版本1.0.*.

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)

顺便提一下,文件属性的详细信息选项卡中的产品版本1.0.*现在也可以读取.现在我可以用这个修复文件属性中的产品版本......

[assembly: AssemblyInformationalVersion("1.0")]
Run Code Online (Sandbox Code Playgroud)

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

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("2.0.*")]
Run Code Online (Sandbox Code Playgroud)

因此,根据我可以收集的唯一自动递增的版本号是程序集版本,但是如果没有指定文件版本,它将被设置为与程序集版本相同.

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

Chr*_*ter 11

是的,它有点愚蠢,微软似乎已经错了.AssemblyVersion在.NET程序集版本控制系统中使用,因此您永远不应该自动递增它,而是AssemblyFileVersion写入文件版本资源中的文件版本条目,因此您可能会合理地期望它默认情况下始终自动递增.

我确信有一些第三方构建系统可以为你做这个,但我只是写了一个小命令行C#app来做它,它作为我们构建过程的一部分在每个项目上运行.这非常简单:

  1. AssemblyInfo.cs逐行读取文件.
  2. 做一个RegEx为搜索AssemblyFileVersion线,捕捉所有版本四个部分为独立的捕捉组.你可以自己解析它,但是一个正则表达式会一次性完成所有的检测和解析,所以看起来愚蠢的不利于它.
  3. 获得四个整数后,根据需要实现自己的递增逻辑.

  • 所以这不仅仅是我觉得这很奇怪吗?微软实际上添加了一个他们不建议您使用的功能?<facepalm>好吧,我想下一步是看看我是否可以使用构建任务来做到这一点...... (3认同)