次の方法で共有


バージョン依存属性の適用

更新 : 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 つ以上の型が削除されている場合、古いバージョンと新しいバージョンは互換性がありません。

7ydsx43e.alert_note(ja-jp,VS.90).gifメモ :

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」のリファレンス ドキュメントを参照してください。

参照

概念

COM アプリケーションからのランタイム初期化

バージョン依存レジストリ キー

side-by-side 実行のための COM アプリケーションの構成

COM コンポーネントと side-by-side 実行

その他の技術情報

COM 相互運用機能の side-by-side 実行