方法 : 登録を必要としないアクティベーション用の .NET ベースのコンポーネントを構成する

更新 : 2007 年 11 月

.NET ベースのコンポーネントの登録を必要としないアクティベーションは、COM コンポーネントの場合よりも少しだけ複雑です。セットアップには 2 つのマニフェストが必要です。

  • COM アプリケーションには、マネージ コンポーネントを識別するための Win32 スタイルのアプリケーション マニフェストが必要です。

  • .NET ベースのコンポーネントには、実行時に必要なアクティベーション情報のコンポーネント マニフェストが必要です。

このトピックでは、アプリケーション マニフェストをアプリケーションに関連付ける方法、コンポーネント マニフェストをコンポーネントに関連付ける方法、およびコンポーネント マニフェストをアセンブリに埋め込む方法について説明します。

アプリケーション マニフェストを作成するには

  1. XML エディタを使用して、1 つ以上のマネージ コンポーネントと相互運用する COM アプリケーションによって所有されるアプリケーション マニフェストを作成または編集します。

  2. ファイルの先頭に次の標準ヘッダーを挿入します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    

    マニフェストの要素とその属性については、MSDN Library で「Application Manifests Reference」を検索してください。

  3. マニフェストの所有者を指定します。myComApp バージョン 1 がマニフェスト ファイルを所有する例を次に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity type="win32" 
                        name="myOrganization.myDivision.myComApp" 
                        version="1.0.0.0" 
                        processorArchitecture="x86" 
      />
    
  4. 依存アセンブリを指定します。myComApp が myManagedComp に依存する例を次に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity type="win32" 
                        name="myOrganization.myDivision.myComApp" 
                        version="1.0.0.0" 
                        processorArchitecture="x86" 
                        publicKeyToken="8275b28176rcbbef"
      />
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type="win32" 
                        name="myOrganization.myDivision.myManagedComp" 
                        version="6.0.0.0" 
                        processorArchitecture="X86" 
                        publicKeyToken="8275b28176rcbbef"
                        language="*"
          />
        </dependentAssembly>
      </dependency>
    </assembly>
    
  5. マニフェスト ファイルに名前を付けて保存します。アプリケーション マニフェストの名前は、アセンブリ実行可能ファイルの名前に拡張子 .manifest が付いたものです。たとえば、myComApp.exe のアプリケーション マニフェスト ファイル名は myComApp.exe.manifest です。

アプリケーション マニフェストは、COM アプリケーションと同じディレクトリにインストールできます。また、アプリケーションの .exe ファイルにリソースとして追加することもできます。詳細については、MSDN Library で「Side-by-side Assemblies」を検索してください。

コンポーネント マニフェストを作成するには

  1. XML エディタを使用して、マネージ アセンブリを記述するコンポーネント マニフェストを作成します。

  2. ファイルの先頭に次の標準ヘッダーを挿入します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    
  3. ファイルの所有者を指定します。アプリケーション マニフェスト ファイル内の <dependentAssembly> 要素の <assemblyIdentity> 要素は、コンポーネント マニフェスト内の要素と一致している必要があります。myManagedComp バージョン 1.2.3.4 がマニフェスト ファイルを所有する例を次に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
           <assemblyIdentity
                        name="myOrganization.myDivision.myManagedComp"
                        version="1.2.3.4" />
                        publicKeyToken="8275b28176rcbbef"
    
  4. アセンブリ内の各クラスを指定します。マネージ アセンブリ内の各クラスを一意に識別するには <clrClass> 要素を使用します。この要素は、<assembly> 要素のサブ要素であり、次の表に示す属性を持っています。

    属性

    説明

    必須

    clsid

    アクティブにするクラスを指定する識別子。

    description

    ユーザーにコンポーネントを説明する文字列。既定では文字列は空です。

    ×

    name

    マネージ クラスを表す文字列。

    progid

    遅延バインディングによるアクティベーションで使用される識別子。

    ×

    threadingModel

    COM スレッド モデル。"Both" が既定値です。

    ×

    runtimeVersion

    この属性は無視されます。ランタイムが読み込まれていない場合は、クラスをアクティブにする前に最上位バージョンが読み込まれます。ランタイムが読み込まれている場合は、現在読み込まれているバージョンが使用されます。

    ×

    tlbid

    クラスに関する型情報を格納するタイプ ライブラリの識別子。

    ×

    属性タグはすべて大文字と小文字が区別されます。OLE/COM オブジェクト ビューア (Oleview.exe) で、エクスポートされたアセンブリのタイプ ライブラリを表示することによって、CLSID、ProgID、スレッド モデル、およびランタイムのバージョンを取得できます。

    2 つのメソッドを持つ単一のクラスを識別するコンポーネント マニフェストを次に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
           <assemblyIdentity
                        name="myOrganization.myDivision.myManagedComp"
                        version="1.2.3.4" />
                        publicKeyToken="8275b28176rcbbef"
           <clrClass
                        clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}"
                        progid="myManagedComp.testClass1"
                        threadingModel="Both"
                        name="myManagedComp.testClass1"
                        runtimeVersion="v1.0.3705">
           </clrClass>
           <clrClass
                        clsid="{367221D6-3559-3328-ABD3-45B6825F9732}"
                        progid="myManagedComp.testClass2"
                        threadingModel="Both"
                        name="myManagedComp.testClass2"
                        runtimeVersion="v1.0.3705">
           </clrClass>
           <file name="MyManagedComp.dll">
           </file>
    </assembly>
    
  5. マニフェスト ファイルに名前を付けて保存します。コンポーネント マニフェストの名前は、アセンブリ ライブラリの名前に拡張子 .manifest が付いたものです。たとえば、myManagedComp.dll の場合は、myManagedComp.manifest になります。

コンポーネント マニフェストはリソースとしてアセンブリに埋め込む必要があります。

コンポーネント マニフェストをマネージ アセンブリに埋め込むには

  1. 次のステートメントを含むリソース スクリプトを作成します。

    RT_MANIFEST 1 myManagedComp.manifest

    このステートメントで、myManagedComp.manifest は埋め込むコンポーネント マニフェストの名前です。この例では、スクリプト ファイル名は myresource.rc です。

  2. Microsoft Windows リソース コンパイラ (Rc.exe) を使用してスクリプトをコンパイルします。コマンド プロンプトに次のコマンドを入力します。

    rc myresource.rc

    Rc.exe は myresource.res リソース ファイルを生成します。

  3. もう一度アセンブリのソース ファイルをコンパイルし、/win32res オプションを使用してリソース ファイルを指定します。

    /win32res:myresource.res
    

    ここでも、myresource.res は埋め込むリソースを含むリソース ファイルの名前です。

参照

概念

登録を必要としない COM 相互運用機能の要件

登録を必要としないアクティベーション用の COM コンポーネントの構成

その他の技術情報

登録を必要としない COM 相互運用機能