2009-04-15 125 views
33

dllのFileVersionとProductVersionの違いは何ですか?dllのFileVersionとProductVersionの違いは何ですか?

は、具体的に、実行時に、強い結合のために使用されるもの、およびその他の情報ですか?

私は(私たちのCIビルドプロセスを経て)

編集を手動で設定1、および自動的にインクリメント他を持っているしたいと思います:リチャードは、私は元の質問に逃した部分を答えました。それは私が手動で(インターフェイスの変更に伴って増分する)アセンブリバージョンですが、CIバージョンがすべてのビルドで自動的に増分されるファイルバージョンです。ありがとう。

+0

AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersion(アセンブリバージョン、ファイルバージョン、製品バージョンなど)のインタースティング情報については、http://stackoverflow.com/a/802038を参照してください。 – user276648

答えて

16

どちらも(フル/厳密な名前のバージョンの局面は、AssemblyVersion属性から来ている)強い結合のために使用されています。

(AssemblyFileVersion属性から)ファイルバージョンと製品版の両方(AssemblyInformationalVersion属性から)(エクスプローラのファイルのプロパティに見られるように)バージョンリソースに貢献しています。ディスプレイ/診断目的以外

は、唯一の真の使用を交換する必要がありますファイルを検証するためのインストーラです。

補遺:なぜこれらは異なるのですか?回答:バージョン管理要件のためです。アセンブリバージョンを同じにすることは、更新されたバージョン(ファイルバージョンが高い)が変更なしでバインドされることを意味します。これはシリアル化(例:永続化されたワークフロー)に大きな影響を与えます。

ファイルと製品のバージョンは、問題のアセンブリが1つの製品(たとえば再利用可能なサードパーティライブラリ)に含まれていない場合にのみ異なる可能性があります。単一のアプリケーションで使用された場合、同じ。

+1

実際には、なぜこれらの3つを違うものにしたいのですか? Imo AssemblyVersionはルールする必要がありますか? –

+0

@Peter:良い質問...いくつかの短いコメントで拡張されましたが、それは本当にそれ自身の問題を必要とします。 – Richard

23

ファイルは、より大きいプロジェクトの一部として配布されます。個々のビルドバージョンxを持つファイルは、プロジェクトバージョンyの一部として配布されることがあります。 A.EXEを製品バージョンファイルB.DLLとC.DLLで1.1船で:手の込んだ

。すべての製品とファイルのバージョンが一致しています。その後、誰かが製品に深刻なバグを発見します。開発者はそれを調べ、B.dllのみを更新する修正プログラムを発行します。今や製品バージョンはおそらく、マイナーな修正を考慮に入れて1.1.1にアップデートされるでしょう。 B.dllのファイルバージョンも1.1.1になります。しかし、A.exeとC.dllは変更されていないため、ファイルのバージョンはまだ1.1です。これら二つの間に1つの以上の違いがある

+0

ありがとうございます。おそらく、これは一般的な知識と見なされますが、MSのドキュメントでこれが言及されていればうれしいでしょう。 – iforce2d

+2

他のDLLを持たない実行可能ファイルが1つしかない場合は、ファイルのバージョンと製品のバージョンを同じにして、新しいリリースごとに段階的に更新する必要がありますか? –

1

: ファイルバージョンでは、あなたは同じか、バージョンの部分に0より大きい整数のみを使用することを許可されています。あなたは、任意のテキストを使用することを許可している製品のバージョンで

、それは数字に解決されません場合には、警告を生成しますが、MSDNによると、その警告は無害です。

なぜバージョンではなく数字を使用するのですか? [パッチ] [小] [大]とパッチであなたが使用することを許可している::。。
まあ、セマンティックバージョニングによる(semver.org)バージョンは、次のようになります

  • リリース前のメタデータダッシュの後、例えば1.2.1-beta
  • ビルドメタデータ、プラスの後、例えばgit 1.2からの短いハッシュ。1 + f0f0f0f
関連する問題