アセンブリ |
InputMan for WPF のバージョン管理ポリシーとアセンブリの関係について説明します。
.NET Framework には、厳密なアセンブリ識別機構が盛り込まれており、Visual Studio で作成した実行ファイルやアセンブリは、それらが依存するアセンブリを名前とバージョンおよびその他の情報を使って判別します。
この仕組みは、DLL Hell を解消するためのもので、間違ったバージョンのアセンブリを参照することによる誤動作を避け、本来のバージョンのアセンブリを確実に参照することを目的としています。この機構により、Visual Studio で作成した実行ファイルやアセンブリは、それらが依存するアセンブリと同名のアセンブリが存在していても、アセンブリバージョンが一致しなければ動作しません。
InputMan for WPF のアセンブリでは、メンバの変更や機能拡張により互換性が保たれないと判断した場合、アセンブリバージョンとファイルバージョンの両方を変更します。この場合、修正版適用後にプロジェクトをリビルドする必要があります。
アセンブリのメンバに変更がない場合や十分な互換性が保たれる場合は、ファイルバージョンだけを変更します。この場合、既存のプロジェクトのソースコードを変更する必要はありません。
なお、互換性が保たれない場合で、大幅な機能追加などが含まれる場合には、製品の識別のために名前空間やアセンブリ名を変更する場合もあります。
変更の程度 | 名前空間やアセンブリ名 | アセンブリバージョン | ファイルバージョン | ソースの変更 | 再ビルド |
---|---|---|---|---|---|
重大な変更 | 更新される | 更新される | 更新される | 必要 | 必要 |
通常の変更 | 現状のまま | 更新される | 更新される | 不要 | 必要 |
軽微な変更 | 現状のまま | 現状のまま | 更新される | 不要 | 不要 |
プロジェクトで使用しているアセンブリのアセンブリバージョンとファイルバージョンは以下の手順で確認できます。
依存関係にあるアセンブリを正しく動作させるには、それらのアセンブリバージョンが互いに適合していることが必要です。たとえば、InputMan for WPF の最新版では、GrapeCity.WPF.InputMan.dll と GrapeCity.WPF.InputMan.Design.dll などのデザイナアセンブリは、互いに関連しています。そのため、これらのアセンブリバージョンを「2.0.4003.2012」に、またファイルバージョンを「2.0.4004.2012」に揃える必要があります。