次の方法で共有


RegistrationServices.RegisterAssembly メソッド

マネージ アセンブリ内のクラスを登録して、COM から作成できるようにします。

Public Overridable Function RegisterAssembly( _
   ByVal assembly As Assembly, _   ByVal flags As AssemblyRegistrationFlags _) As Boolean Implements IRegistrationServices.RegisterAssembly
[C#]
public virtual bool RegisterAssembly(Assemblyassembly,AssemblyRegistrationFlagsflags);
[C++]
public: virtual bool RegisterAssembly(Assembly* assembly,AssemblyRegistrationFlagsflags);
[JScript]
public function RegisterAssembly(
   assembly : Assembly,flags : AssemblyRegistrationFlags) : Boolean;

パラメータ

  • assembly
    登録するアセンブリ。
  • flags
    assembly を登録する場合に使用する特殊な設定を示す AssemblyRegistrationFlags 値。

戻り値

assembly が正常に登録された型を格納している場合は true 。アセンブリが適格な型を格納していない場合は false

実装

IRegistrationServices.RegisterAssembly

例外

例外の種類 条件
ArgumentNullException assembly が null 参照 (Visual Basic では Nothing) です。
InvalidOperationException assembly の完全名が null 参照 (Visual Basic では Nothing) です。

または

ComRegisterFunctionAttribute でマークされたメソッドが、静的 (Visual Basic では Shared) ではありません。

または

階層の特定のレベルに、 ComRegisterFunctionAttribute でマークされた複数のメソッドがあります。

または

ComRegisterFunctionAttribute でマークされたメソッドのシグネチャが有効ではありません。

解説

RegisterAssembly は、指定したアセンブリ内の型を表す適切なレジストリ エントリを追加します。このメソッドは、アセンブリで検索された登録関数も呼び出します。

Assembly.Load を使用して、アセンブリを取得します。

使用例

レジストリに次のエントリが追加されます。

HKEY_CLASSES_ROOT\progid
   (default) = progId
HKEY_CLASSES_ROOT\progid\CLSID
   (default) = clsid
HKEY_CLASSES_ROOT\CLSID\{clsid}
   (default) = progid
HKEY_CLASSES_ROOT\CLSID\{clsid}\InProcServer32
   (default) = mscoree.dll
   Class = ClassName
   ThreadingModel = Both
   Assembly = Stringized_assembly_reference
   Codebase = path_of_private_assembly
   RuntimeVersion = version_of_the_runtime
HKEY_CLASSES_ROOT\CLSID\{clsid}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}
HKEY_CLASSES_ROOT\CLSID\{clsid}\ProgId
   (default) = progid
   

/codebase スイッチを使用する場合は、次の追加のエントリがレジストリに作成されます。 /codebase スイッチを使用する場合は、アセンブリに厳密な名前を付ける必要があります。

HKEY_CLASSES_ROOT\CLSID\{clsid}\InProcServer32
   Codebase = path_of_private_assembly

/tlb スイッチを使用する場合は、タイプ ライブラリが生成され、次の追加のエントリがレジストリに作成されます。

HKEY_CLASSES_ROOT\{clsid}\TypeLib
   (default) = tlbid
HKEY_CLASSES_ROOT\Typelib\{tlbid}\x.y\lcid\win32
   (default) = location of type library file
HKEY_CLASSES_ROOT\Typelib\{tlbid}\x.y\FLAGS
   (default) = 0

ここで使用されているパラメータは次のとおりです。

progid は、クラスに割り当てられたプログラム ID です。

clsid は、クラスに割り当てられた GUID です。

tlbid は、タイプ ライブラリを識別する GUID です。

x.y は、タイプ ライブラリのメジャー バージョンとマイナ バージョンです。

lcid は、タイプ ライブラリのロケール ID です。

InProcServer32 キーの下で見つかった stringized_assembly_reference は、クラスを格納しているアセンブリの名前の文字列形式です。その文字列は AssemblyName.FullName から取得され、クラスの作成時にアセンブリを検索し、読み込むために使用します。文字列化されたアセンブリ名は、たとえば "FunnyFarm.BarnYard.Mammal, Ver=1.2.5.1" のようになります。

path_of_private_assembly フィールドは、グローバル アセンブリ キャッシュにはインストールされないプライベート アセンブリだけで使用してください。パスには、アセンブリが配置されている場所のファイル名を含む絶対パスを指定します。

version_of_the_runtime フィールドは、複数のランタイム バージョンがシステムにインストールされている場合に、どのバージョンのランタイムを使用するかを識別します。

GUID の 62C8FE65-4EBB-45e7-B440-6E39B2CDBF29 によって識別されるコンポーネント カテゴリは、すべての .NET コンポーネントを識別します。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

RegistrationServices クラス | RegistrationServices メンバ | System.Runtime.InteropServices 名前空間