我正试图找到一种更有意义的方式来处理我的应用程序的版本控制,我看到了这篇知识库文章
http://support.microsoft.com/kb/556041
基本上,它建议固定程序集版本,并为每个构建增加文件版本。现在这对我来说非常有意义,但对于我来说我似乎无法实现它。
下面的代码片段自动递增程序集版本和文件版本。
[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.*")]
因此,据我所知,唯一可以自动递增的版本号是程序集版本,但如果您没有指定文件版本,它会被设置为与程序集版本相同。
有谁知道在保持程序集版本不变的同时自动增加文件版本的方法?
最佳答案
是的,这有点傻,Microsoft 似乎搞错了。 AssemblyVersion
用于 .NET 程序集版本控制系统,因此您永远不应自动递增它,但 AssemblyFileVersion
已写入文件版本资源中的文件版本条目,因此您可能会合理地期望它在默认情况下始终自动递增。
我敢肯定,有一些第三方构建系统可以为您执行此操作,但我只是编写了一个小的命令行 C# 应用程序来执行此操作,并且它作为我们构建的一部分在每个项目上运行过程。这非常简单:
- 逐行读取
AssemblyInfo.cs
文件。 - 执行
RegEx
搜索AssemblyFileVersion
行,将所有四个版本部分捕获到单独的捕获组中。您可以自己解析它,但正则表达式会一次性完成所有检测和解析,因此不利用它似乎很愚蠢。 - 获得四个整数后,按照您认为合适的方式实现您自己的递增逻辑。
关于c# - 具有自动递增文件版本的固定程序集版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307435/