ベースにCIでバージョンを埋め込む方法もあります。調整やビルドでの埋め込みが必要)ビルド時にスクリプトを実行して実行時にjsonを読み込みDIすることももちろん可能です。埋めることもできます。実コードのサンプルが見たい場合に利用してください。組むと、継続的にアプリケーションが展開されるようになります。4か所を通りますが、普段意識するのは末端となるSCMとApplicationの2か所でしょう。したらアプリケーションが展開される。Commit情報が知りたい。これにより、今動いているアプリケーションが、どのコミットによるものなのか/PRによるものなのかを、「Git、Build、Deployの順にたどることなく、アプリケーションをみるだけでGitにとぶことが可能」になります。途中のCI情報、CD情報も知りたいかもしれませんがここでは主題ではないので省略します。おけるSCM情報の埋め込み方法Golangを含め、各種言語にはその言語でやりやすいやり方があります。やっていたのかを振り返って、考え方の遷移をみてみます。常に存在したためここへの直接的なアプローチが多く使われていました。手で触るのは避けたいでしょう。フックする方法がよく利用されていたように思います。書き込む方法もよく使われていました。テンプレーティングにすぎないので、T4という手もありますがあまり使われてないように思います。かませるのでもいいでしょう。埋め込む、アプリの実行時はアセンブリ自身から情報を拾っていた」というのが大筋の流れです。筋は同じですが、微妙に事情が変わります。大きく変わったことは2つあります。SDKベースのフォーマットになったことです。ビルド時に自動生成されるようになったため、バージョンを埋め込む時に今までとは違った考慮が必要になりました。生成しようとすると属性の重複やあと勝ちにより意図しない挙動が生じます。フレームワーク化です。各種読込先を個別に読み込む仕組みに変わりました。より任意のファイルからタイプセーフにクラスにマッピングし、DIで各種処理で差し込むことも容易にできるようになっています。バージョンを仕込むには2つの方法がよく利用されています。差し込まれる仕組みをフックするjsonなどを生成して、DIを経由してランタイムで読み込むこれを前提情報に、バージョンの埋め込みを見ていきましょう。使え、VSIXでも埋め込みに利用できます。このライブラリはとても使いやすいのですが、2つ注意がいります。利用しているため、実行時に全コミット履歴を辿ります。使っているプロジェクトでは利用できません。よる定義からの自動生成に任せましょう。利用方法をサンプルプロジェクトを使って説明します。2つの方法があります。Packageで十分です。CLIはもう少し複雑な操作を自動化するのに使います。Version情報を実行時に参照可能になります。gist.github.com実行結果です。調整できるので、リファレンスみつつ適当にやるかお任せするといいでしょう。頑張ろうとするとつらくなります。Packageを適用することと、リリース用ブランチを切ってコミットさせることが簡単に自動化できます。CIでGitVersioningを動的に導入してバージョンをはかせるときはCLIが使いやすいでしょう。プロジェクトにNuGetパッケージを追加してコミットしてよく、リリースブランチ戦略も取ってないならCLIは不要です。CLIを利用可能になります。コマンドを利用します。して追加するので影響範囲が広がるため注意してください。個別のプロジェクトフォルダでCLIを使ってinstallして影響範囲を狭めるといいでしょう。生成をフックして、ビルドされたアセンブリにバージョンを埋め込んでくれます。バージョンのフォーマットは、version.jsonの定義に従うので必要に応じてビルド前に生成しましょう。CLIを使うと、リリースブランチ戦略が簡単に自動化できます。使うことで自動的にブランチを作りコミットしてくれます。