2012-09-06 36 views
8

我试图找到处理版本为我的应用程序更有意义的方式,我来到这个知识库文章具有自动递增文件版本的固定装配版本?

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

基本上它的建议,大会版本是固定acrossed和文件版本进行imcremented为每个版本。现在这对我来说很合理,但对我来说,我似乎无法实现它。

以下片段自动增加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")] 

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

[assembly: AssemblyVersion("1.0")] 
[assembly: AssemblyFileVersion("2.0.*")] 
从我所知的唯一版本号自动递增是集版本,但关闭的机会,你没有指定它被设置为相同的程序集版本文件版本

左右。

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

回答

11

是的,这有点愚蠢,微软似乎弄错了方向。在.NET程序集版本控制系统中使用了AssemblyVersion,所以您不应该自动增加它,但AssemblyFileVersion会写入文件的版本资源中的文件版本条目,因此您可能会合理地认为它默认情况下会始终自动增量。我确信有一些第三方构建系统可以为你做到这一点,但我只是写了一个命令行C#应用程序来做到这一点,它作为我们的一部分在每个项目上运行。建立过程。它非常简单:

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

因此,这不仅仅是我发现这个奇怪吗?微软真的添加了一个他们不推荐使用的功能? 好吧,我想下一步是看看我是否可以使用构建任务来做到这一点... –