55

.NET では、プロジェクトのビルド時に、ファイル バージョンとアセンブリ バージョンの 2 つのバージョン番号を使用できます。これらの数字をどのように使用していますか? それらを同じに保ちますか?一方を自動インクリメントし、もう一方を手動で変更しますか?

また、AssemblyInformationalVersion属性はどうですか?

私は、このサポート Microsoft Knowledge Base (KB) の記事を見つけて、いくつかのヘルプを提供しました: How to use Assembly Version and Assembly File Version

4

8 に答える 8

76

複数のプロジェクトを含むソリューションでは、バージョン管理を管理する単一のプロジェクトをすべての 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
    }
}

私の自動ビルド プロセスは、データベースから最新バージョンを取得し、最後から 2 番目の数字をインクリメントすることで、その文字列を変更するだけです。

機能セットが大幅に変更された場合にのみ、メジャー ビルド番号を変更します。

ファイルのバージョンはまったく変更しません。

于 2008-08-18T16:03:33.223 に答える
22

KBの記事では、最も重要な違いについて説明しています。ファイルバージョンは表示目的でのみ使用されますが、アセンブリバージョンは.NETの読み込み動作で重要な役割を果たします。

アセンブリのバージョン番号を変更すると、アセンブリ全体のIDが変更されます。開発者は、新しいバージョンを参照するために再構築する必要があり(自動バージョン管理の「ポリシー」を設定しない限り)、実行時に、バージョン番号が一致するアセンブリのみがロードされます。

これは、監査の目的で増分して目立つバージョン番号が必要な私の環境では重要ですが、開発者に再構築を強制したり、本番環境で同時に多くのバージョンを使用したりしたくありません。この場合、下位互換性のあるマイナーな変更については、ファイルバージョンを更新しますが、アセンブリバージョンは更新しません。

于 2008-08-18T17:25:54.400 に答える
14

複数のファイル アセンブリ (つまり、1 つの exe と 5 つの dll) があるシナリオでは、それぞれに異なるファイル バージョンを使用しますが、すべてのファイルに同じアセンブリ バージョンを使用することで、各 dll がどの exe に対応しているかを知ることができます。

于 2008-08-18T15:20:59.377 に答える
13

ファイル バージョンは表示目的でのみ使用されますが、アセンブリ バージョンは .NET の読み込み動作で重要な役割を果たします。

そうではありません。既存のバージョンを以前のバージョンからアップグレードする場合、Windows インストーラーにとってファイルのバージョンも重要です。

于 2009-11-12T16:42:09.397 に答える
12

私の現在のアプリケーションでは、各 VS プロジェクトには、次の属性を持つ「AssemblyBuildInfo」ソース ファイルへのリンクがあります。

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

このようにして、ソリューション内のすべてのアセンブリが同じバージョンと会社情報を共有します (つまり、変更する必要がある場合でも、1 回だけ変更します)。FileVersion を除外すると、AssemblyVersion に自動的に設定されます。

于 2009-11-12T16:48:08.213 に答える
3

@Adam: ビルドごとにファイルのバージョンを変更していますか? バージョン管理 (SYN または VSS) を使用しており、その情報を使用してソースをバイナリにリンクしていますか?

アセンブリのバージョンが同じままであることは理にかなっているようです。つまり、「2.0.0.0」です。それが製品の展開に対応します。

ファイル バージョンは、ソース管理からのリビジョンと一致するように変更されます。"2.0.??.revision" これは、特定の dll (または exe) からそれをビルドしたソースへのリンクを提供します。

于 2008-08-18T15:55:13.053 に答える
2

このトピックについて、コミュニティに役立つブログ投稿を書きましたhttp://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx

于 2011-12-11T22:14:30.783 に答える
0

私はそれらを同じに保ちます。ただし、AssemblyVersion 番号が重要になるマルチファイル アセンブリはありません。自動インクリメントではなく、ビルド番号に Microsoft スタイルの日付エンコーディングを使用しています (何かがビルドされた回数がそれほど重要であるとは思いません)。

于 2008-08-18T15:11:51.580 に答える