如何最好地使用文件版本和组件版本?

在.NET中,构建项目时有两个版本号,即文件版本和组件版本。 你怎么使用这些数字? 保持一致吗? 自动增加一个,但手动更改另一个?

还有AssemblyInformationalVersion属性呢?

我发现这个支持Microsoft知识库(KB)的文章提供了一些帮助:如何使用Assembly Version和Assembly File Version。


在我有多个文件程序集(即1个exe和5个dll)的场景中,我将为每个文件使用不同的文件版本,但是它们都使用相同的汇编版本,从而使您可以知道每个dll所附带的exe文件。


在具有多个项目的解决方案中,我发现非常有用的一件事是让所有AssemblyInfo文件指向管理版本控制的单个项目。 所以我的AssemblyInfos有一行:

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

我有一个声明字符串的单个文件的项目:

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

我的自动构建过程只是通过从数据库中提取最新版本并递增第二个数字来更改该字符串。

当功能集显着变化时,我只更改主内部版本号。

我根本不更改文件版本。


知识库文章提到了最重要的区别:文件版本仅用于显示目的,而程序集版本在.NET加载行为中起着重要作用。

如果您更改组件版本号,则整个组件的标识已发生更改。 开发人员需要重新编译以引用新版本(除非已经放置了一些自动版本化“策略”),并且在运行时只会加载具有匹配版本号的程序集。

这在我的环境中非常重要,我们需要一个增量的,高度可见的版本号用于审计目的,但我们不希望强制开发人员重建或在生产中同时有多个版本。 在这种情况下,为了向后兼容较小的更改,我们更新文件版本,但不更新程序集版本。

链接地址: http://www.djcxy.com/p/50663.html

上一篇: How best to use File Version and Assembly Version?

下一篇: How to prevent download notification from disappearing in Android API 10