自動的に増加するバージョン番号を設定する方法 (Visual Studio)? [重複] 質問する

自動的に増加するバージョン番号を設定する方法 (Visual Studio)? [重複] 質問する

ビルド時に自動的に増分される整数のセットを保存したい:

int MajorVersion = 0;
int MinorVersion = 1;
int Revision = 92;

コンパイルすると、自動的に増分されますRevision。セットアップ プロジェクトをビルドすると、増分されますMinorVersion(手動で行ってもかまいません)。MajorVersion手動でのみ増分されます。

次に、メニューのヘルプ/バージョン情報にバージョン番号を次のように表示します。

  バージョン: 0.1.92

これを実現するにはどうすればよいでしょうか?

この質問では、自動的に増加するバージョン番号を取得する方法だけでなく、それをコード内で使用する方法も尋ねており、他の質問よりも完全な回答となっています。

ベストアンサー1

追加するとアセンブリ情報クラスをプロジェクトに追加し、AssemblyVersion属性がアスタリスクで終わるように修正します。例:

[assembly: AssemblyVersion("2.10.*")]

Visual Studioは、最終的な数値を次のように増加させます。これらのルール(ありがとう、ガレット。完全に間違っていました!)

このバージョンをコード内で参照してユーザーに表示するには、 を使用しますreflection。たとえば、

Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
DateTime buildDate = new DateTime(2000, 1, 1)
                        .AddDays(version.Build).AddSeconds(version.Revision * 2);
string displayableVersion = $"{version} ({buildDate})";

知っておくべき3つの重要なポイント

@ashes999 より:

AssemblyVersionまた、と の両方AssemblyFileVersionが指定されている場合は、.exe にこれが表示されないことにも注意してください。

@BrainSlugs83 より:

4 番目の数字だけを に設定するのは*、バージョンが常に増加するとは限らないため、よくない場合があります。3番目の数字は 2000 年からの日数で4 番目の数字は深夜からの秒数 (2 で割った値) です [ランダムではありません]X.Y.* 。そのため、ある日の遅い時間にソリューションをビルドし、次の日の早い時間にビルドした場合、後のビルドのバージョン番号はより前になります。この方法ではバージョン番号が常に増加するため、 ではなく を常に使用することをお勧めしますX.Y.Z.*

Visual Studio の新しいバージョンでは次のエラーが発生します:

(このスレッドは2009年に開始されました)

指定されたバージョン文字列には、決定論と互換性のないワイルドカードが含まれています。バージョン文字列からワイルドカードを削除するか、このコンパイルの決定論を無効にしてください。

方法を説明したSOの回答を参照してください決定論を排除するhttps://stackoverflow.com/a/58101474/1555612

おすすめ記事