バージョン依存属性の適用
更新 : 2007 年 11 月
.NET Framework Version 1.1 以降を使用している場合は、マネージ ソース コードにデザイン時属性を適用することで、Windows のレジストリに登録されている型を適切にアクティブ化できます。このトピックでは、ComCompatibleVersionAttribute 属性および TypeLibVersionAttribute 属性を適用する場合について説明します。
生成される GUID と固定 GUID
タイプ ライブラリ エクスポータ (Tlbexp.exe) と、/tlb オプションを指定したアセンブリ登録ツール (Regasm.exe) は、COM で使用するためにエクスポートしたアセンブリのバージョン番号に基づいて、クラス ID (CLSID) を生成します。エクスポートしたアセンブリの各バージョンには、そのバージョンに固有の CLSID が含まれています。COM アプリケーションでは、CoCreateInstance メソッドを呼び出すときに、CLSID を使用してクラスを指定します。
この動作は、アセンブリの新しいバージョンが以前のバージョンと互換性がない場合に便利です。たとえば、新しいアセンブリで 1 つ以上の型が削除されている場合、古いバージョンと新しいバージョンは互換性がありません。
メモ : |
---|
CLSID とは異なり、プログラム ID (ProgID) はアセンブリのバージョンが新しくなっても変更されません。新しい、互換性のないアセンブリを作成したときに、ProgID を手動で変更するには、ProgIdAttribute を適用します。 |
ただし、多くのアセンブリは以前のバージョンと互換性があり、アセンブリの開発者はアプリケーションで最新バージョンが使用されることを想定しています。アセンブリの複数のバージョンで固定 GUID を使用して、同じ CLSID を保持すると、既存の COM アプリケーションが、新しいバージョンのアセンブリに含まれる型を利用できます。この場合は、古いアセンブリを用意したり、再コンパイルしたりする必要がありません。
ComCompatibleVersionAttribute は、強制的に、現在のバージョンのアセンブリに含まれるすべての CLSID を、以前のバージョンの CLSID と同じにします。この属性の適用方法の詳細については、「ComCompatibleVersionAttribute」のリファレンス ドキュメントを参照してください。
タイプ ライブラリのバージョン
タイプ ライブラリのバージョン番号には、そのタイプ ライブラリを作成するために使用したアセンブリのメジャー番号とマイナ番号が含まれています。一方、アセンブリのバージョン番号は 4 つの部分で構成されています。COM で使用するためにエクスポートした場合、アセンブリの 2 つのバージョンが完全に異なる場合 (1.0.0.0 と 1.2.500.0) は、自動的に異なるバージョンのタイプ ライブラリ (1.0 と 1.2) が作成されます。ただし、これよりも近いバージョン (1.2.0.0 と 1.2.500.0) では、同じバージョン (1.2) のタイプ ライブラリが作成されます。
TypeLibraryVersionAttribute を使用して、マネージ ソース コードでタイプ ライブラリのバージョン番号を明示的に指定できます。この属性の使用方法の詳細については、「TypeLibVersionAttribute」のリファレンス ドキュメントを参照してください。
参照
概念
side-by-side 実行のための COM アプリケーションの構成