バージョン管理のデモ
継続的デプロイメント (CD) を使用した場合と使用しない場合の両方で .NET Core プロジェクトのバージョンを管理する方法の例
このサイトのクローンを作成し、デバッグ モードとリリース モードでローカルで実行すると、異なる結果が表示されます。 https://versioningdemos.azurewebsites.net/ でライブ バージョンにアクセスできます。これは、Git と VSTS を経由してバージョン情報を生成しています。
Microsoft は、おそらく同じチームによるものではないと思われますが、独自の .Net ライブラリ内で異なるバージョン管理戦略を採用していることがわかります。
.NET Core アセンブリ内では通常、3 つのバージョンが参照されます
- ファイル バージョン - これは、どの DLL が新しいかを確認するために使用されます。
- 通常、Major.Minor.Build.Revision と見なされるパターンxybrがあります。
- 製品バージョン - アセンブリ内の InformationalVersion とも呼ばれます。これは説明目的で使用される自由形式のテキスト バージョンです。
- 現在、この形式はセマンティック バージョニング パターン (GitHub によって推奨) に従う傾向があります。
- xyp-buildinfoメジャー.マイナー.パッチ[-metadata]
- 詳細については、semver.org をご覧ください。
- アセンブリ バージョン - アセンブリのバージョン
バージョン情報を取得するための通常の方法は、一部のユースケースでのみ機能し、ライブラリに配置すると機能しなくなります。
バージョンサンプルプロジェクト
これらのプロジェクトはすべて、AssemblyInfo.cs または project.json を使用した以前の手法ではなく、.vbproj (.csproj の場合もあります) ファイルを使用します。
何も設定されていません - デフォルト
値の設定 - マニュアル
Visual Studio UI の使用 (プロジェクト プロパティ/パッケージ)
- これを使用して情報を設定しなくても、計算された値が表示されます
- 他の場所で計算された値を誤って上書きしないように注意してください
<project>.csproj
の編集
すべての値の設定 - Manual.AllDifferent
- Visual Studio UI の使用
<project>.csproj
の編集
VersionPrefix - VersionPrefix を使用するだけです
バージョンサフィックス - バージョンサフィックス
ビルドリビジョン - ビルドリビジョン
- roslyn のバージョン パターン ロジックを実装することで、ビルドとリビジョンのワイルドカードを複製します。
- csproj ファイル内の計算を使用します
ビルド日時 - ビルド日時
- x.YYYY.MDD.HHMM を使用して自動値を作成しました
Visual Studio チーム サービス ビルド - VSTS
- 構成された BUILDNUMBER を VSTS から VersionSuffix に追加します
Git ブランチを使用した Visual Studio Team Services のビルド - VSTS.WithGit
- Git ブランチをバージョンサフィックスにも追加します
タグヘルパー
Taghelpers を使用する場合、いくつかの問題があります。
- ページが予想とは異なるアセンブリに配置されることになる
- デバッグまたはリリースで実行すると、異なる値が与えられ、アセンブリが作成される場合があります
- TagHelper を外部ライブラリに配置すると、現在実行中のアセンブリの結果が変更されます