Windows PE(ポータブル実行可能)ファイルには、ファイルの[詳細]タブの[プロパティ]ダイアログに表示されるメタデータが含まれています。そこには任意のメタデータが表示される可能性があります。
私がやりたいのは、私が構築したC#クラスライブラリにメタデータの一部を追加することです。その値は、プロジェクトが構築されたgitリポジトリHEADからのコミットIDです。CLRを使用してgitcommitidAssemblyVersionAttribute
を設定することはできません。これは、CLRではそれが標準a.b.c.d
バージョン形式で表示される必要があるためです。さらに、理想的にはユーザーにとって意味のあるバージョン番号をそこに保持したいのですが、実際のPEファイルを指定して、それを再作成できるコミットIDを常に検索する方法があります。
それを行うためのマネージAPIがある場合は、はるかに優れていますが、これを実行するためにP/Invokeを使用します。