現在チェックアウトされている git commit を自動的に取得し、ビルド時に次のような属性をアセンブリに追加するビルド スクリプトが MSBuild にあります。
[assembly: AssemblyInformationalVersion("0.2.13+e3a6f2c1")]
[assembly: AssemblyVersion("0.2")]
[assembly: AssemblyFileVersion("0.2.13")]
バージョンの数値部分は、ビルド スクリプトが読み取る version.txt ファイルから取得されます。
アセンブリ バージョンには、ビルド番号をインクリメントするときにバインド リダイレクト要件が回避されるため、3 番目のオクテットがありません。AssemblyFileVersion には、その属性で許可されているすべてのデータが含まれており、AssemblyInformationVersion は任意の文字列にすることができるため、セマンティック バージョニングを使用して git コミット ID を含めることで、このプロジェクトをビルドしたソース バージョンを正確に示すことができます。
ビルドが成功したら、必要に応じて v0.2.13 タグを追加できます。個人的には、最終リリースをビルドするとすぐに、version.txt ファイルをインクリメントして、後続のすべてのビルドが次に高いバージョン番号を持つようにします。その後の各ビルドには、そのバージョンをリリースするまでそれがあり、コミットにタグを付け、version.txt ファイルを再度インクリメントし、繰り返します。
ちなみに、AssemblyInformationalVersion
文字列は Windows エクスプローラーのファイル プロパティに表示されるため、これにより、任意にビルドされたバイナリから、一致する元のソース コードに確実に移動できます。また、残念ながら、この方法では csc.exe が AL を報告します???? セマンティック バージョンの形式が xyz 構文に準拠していないため、ビルドに関する警告。ただし、何かが壊れているわけではなく、警告を無視します。
ソース管理の責任と重複するため、明示的にソースを圧縮することはありません。少なくとも、ソースが何らかのオンライン サービスによってホストされている場合 (プライベート イントラネット上であっても)、ほとんどの git ホストは、特定のコミット ID に対してオンザフライでの zip としてのダウンロード機能を既に提供しています。