- PR -

アセンブリのバージョン番号

1
投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-23 09:07
 今更ながらですが。。。

 AssemblyVersionAttributeクラスで、「メジャー」「マイナー」「ビルド番号」「リビジョン」をこの順で指定しますが、「メジャー」「マイナー」はいいとして、「ビルド番号」、「リビジョン」はどういう基準で付けるものなのでしょう?

 または、「ビルド番号」、「リビジョン」にアスタリスクを指定した場合、どういう基準でカウントアップされるのでしょう?なんだか、デバッグ実行するごとにカウントアップされているような気がして...
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-01-23 10:41
こんにちは、野寺といいます。

「プログラム.NET Framework」という書籍によると・・・・

ビルド番号は、たとえばアセンブリを毎日ビルドするのであれば、この番号も毎日1ずつ増加させ、
リビジョン番号は、ビルドの改定番号を表し、何らかの理由(不具合修正等)でその日のうちにアセンブリを何度もビルドしなければならなくなった場合に、リビジョン番号を1ずつ増加させていくようです。

上記方法は推奨というだけで、開発者自身が好みで付けてもかまわないようです。

デフォルトで作成されるAsseblyInfo.csにはAssemblyVersionには"1.0.*"となっていますが、*の部分はビルドするたびにカウントアップしていきます。
デバッグ実行するとビルドされるので、番号が増加していきます。

しかし、アセンブリに厳密名を付けている場合、AssemblyVersionに*を指定していると問題が発生します。
CLRは、厳密名を持っているアセンブリをバインドするときにこのバージョン番号を参照しており、この番号が変わってしまうと、そのアセンブリを参照しているものが動作しなくなってしまうからです。
そのため厳密名を付ける場合は、1.0.0.0というようにハードコードする必要があります。
(この書籍にはVS.NETが自動的に作成するAsseblyinfo.csのAssenblyVersionに"1.0.*"となっているのは、VS.NETの不具合だ!と言い切っている・・・)

CLRが参照しないAssemblyFileVersionやAssemblyInformationVersionAttributeもあるようですが、こっちは*が指定できないみたいで、ちと不便。

うちの開発でも殆どのアセンブリに厳密名をつけていますが、"1.0.*"の部分を書き換え忘れて作成してしまうことがあると、不具合修正でアセンブリを入れ替えたときに動作しなくなるという別の意味でのDLL地獄に悩まされるときも・・・。(動いたほうがいいのか、動かないほうがいいのか・・・微妙・・・)
へるまろ
ベテラン
会議室デビュー日: 2003/02/04
投稿数: 57
お住まい・勤務地: 東京
投稿日時: 2004-01-27 10:59
Assemblyのバージョンに*を指定した場合 (又はデフォルト値)
の採番規則についてですが、私が知ってる限りだと

マイナー番号は0、ビルド番号は2000年1月1日以来の日数、リビジョン番号は現地時間の午前0時からの秒数を2で除算した値

だそうです。
情報元は確かオライリーの.NET書籍だったと思いますが・・

勘違いであれば、申し訳ありません。

ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-01-27 17:37
引用:

GAMMARAYさんの書き込み (2004-01-27 10:59) より:
Assemblyのバージョンに*を指定した場合 (又はデフォルト値)
の採番規則についてですが、私が知ってる限りだと

マイナー番号は0、ビルド番号は2000年1月1日以来の日数、リビジョン番号は現地時間の午前0時からの秒数を2で除算した値

だそうです。
情報元は確かオライリーの.NET書籍だったと思いますが・・

勘違いであれば、申し訳ありません。



その件は、MSDNライブラリの
  AssemblyVersionAttribute コンストラクタ
でも明記されていますので、間違いありません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-27 17:51
引用:

ぢゃん♪さんの書き込み (2004-01-27 17:37) より:

その件は、MSDNライブラリの
  AssemblyVersionAttribute コンストラクタ
でも明記されていますので、間違いありません。


あぁ、見ていませんでした。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)