c# - 具有自动递增文件版本的固定程序集版本?

标签 c# .net version

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

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# 应用程序来执行此操作,并且它作为我们构建的一部分在每个项目上运行过程。这非常简单:

  1. 逐行读取 AssemblyInfo.cs 文件。
  2. 执行 RegEx 搜索 AssemblyFileVersion 行,将所有四个版本部分捕获到单独的捕获组中。您可以自己解析它,但正则表达式会一次性完成所有检测和解析,因此不利用它似乎很愚蠢。
  3. 获得四个整数后,按照您认为合适的方式实现您自己的递增逻辑。

关于c# - 具有自动递增文件版本的固定程序集版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307435/

相关文章:

.net - .NET 框架更新是否会推送给每个 Windows 更新用户?

.net - 将 Azure AD B2C 与机器人结合使用

c# - 在 C# 中获取 Windows 10 中的当前版本操作系统

c# - Windows Phone 7 隐藏应用程序栏

c# - 混合使用.Net Standard 和.Net Framework 时如何自动部署隐藏的NuGet 依赖项的C# DLL?

readClipboard 从 utils 包中删除?

perl - 如何在 Perl 中指定软件包版本?

c# - 如果未安装 Access ,我的程序是否仍会运行

c# - nunit 测试中是否进行手动交互?

c# - 当前上下文中不存在名称 Response