0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

いまさらだけどSubversionからGitへ移行する(その3-a: .NET AssemblyInfo)

Last updated at Posted at 2020-07-17

こちらのつづき

.NET Core + Git の場合のベストプラクティスが知りたいです。教えて下さい。

SVN のリビジョンの AssemblyInfo への埋め込み

SVN を使った、.NET Framework プロジェクトの場合、AssemblyInfo.csAssemblyVersionRevision 部にはビルドスクリプトなどで SVN Rev を埋める事例が多く私も行っていました。こちら .NET Core の場合は事情が異なっている模様1

// revision = 4567 は
// SVN Rev -> `(git log --online).Length` 等により、とりあえず導出
[assembly: AssemblyVersion("1.2.3.4567")]

Git hash の AssemblyInfo 情報の埋め込み

これを Git の hash に置き換えて、

[assembly: AssemblyVersion("1.2.3.b34f896")]

としても AssemblyVersion が数値ではないのでエラーになるはず。

ここで、 AssemblyInformationalVersion には任意の文字列を指定できるので、

[assembly: AssemblyVersion("1.2.3.4567")]
[assembly: AssemblyInformationalVersion("1.2.3.4567-b34f896")]

などとすると、 AssemblyVersion の要件を満たしつつ、AssemblyInformationalVersion に Git の情報も埋め込めるので CI を行うには良さそう。

実際の製品では?

MSBuild を実行している時に SHA1 hash らしき情報が見えたなぁ、と思って調べてみると、 MSBuild など Microsoft 製品で Git 管理のものには hash 値を利用している様で GitHub で公開されているソースコードのタグと hash が一致する。

msbuild-properties.png

しかし、そもそも MSBuild は SVN から移行したものではないし、上記の 16.6.0.22303 の revision 部 22303 をどうやって導出しているか不明。ソースコードを見ればよいが、ちょっと追いかけられず挫折した(たぶんここら辺か?)。 Git 管理の AssemblyInfo のベストプラクティスがあれば知りたい。2

当面の移行

SVN Rev を利用していた部分 AssemblyVersionAssemblyFileVersion には (git log --oneline).Length 等を利用し、余裕や必要に応じて
AssemblyInformationalVersion には Git の SHA1 hash か short hash などを組み合わせた値を埋め込みたいと思う。私は。

  1. .NET Core の場合、基本的に AssemblyInfo.cs はなくなり、*.csproj から自動生成されるということらしい。私は未だに .NET Core に移行しておらず、公式ドキュメントやネット検索などからの情報だが。

  2. 手元で MSBuild v16.6.0.22303 をビルドすると 16.6.0-dev-20367-01+5ff7b0c9e829bb22e21e1738b42c7fcef051dfb2 となった。-dev などを含めると良さそう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?