方法: 登録を必要としないアクティベーション用の .NET Framework ベースの COM コンポーネントを構成するHow to: Configure .NET Framework-Based COM Components for Registration-Free Activation

.NET Framework ベースのコンポーネントの登録を必要としないアクティベーションは、COM コンポーネントの場合よりも少しだけ複雑です。Registration-free activation for .NET Framework-based components is only slightly more complicated than it is for COM components. セットアップには 2 つのマニフェストが必要です。The setup requires two manifests:

  • COM アプリケーションには、マネージド コンポーネントを識別するための Win32 スタイルのアプリケーション マニフェストが必要です。COM applications must have a Win32-style application manifest to identify the managed component.

  • .NET Framework ベースのコンポーネントには、実行時に必要なアクティベーション情報のコンポーネント マニフェストが必要です。.NET Framework-based components must have a component manifest for activation information needed at run time.

このトピックでは、アプリケーション マニフェストをアプリケーションに関連付ける方法、コンポーネント マニフェストをコンポーネントに関連付ける方法、およびコンポーネント マニフェストをアセンブリに埋め込む方法について説明します。This topic describes how to associate an application manifest with an application; associate a component manifest with a component; and embed a component manifest in an assembly.

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

  1. XML エディターを使用して、1 つ以上のマネージド コンポーネントと相互運用する COM アプリケーションによって所有されるアプリケーション マニフェストを作成または編集します。Using an XML editor, create (or modify) the application manifest owned by the COM application that is interoperating with one or more managed components.

  2. ファイルの先頭に次の標準ヘッダーを挿入します。Insert the following standard header at the beginning of the file:

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

    マニフェストの要素とその属性については、「Application Manifests」(アプリケーション マニフェスト) をご覧ください。For information about manifest elements and their attributes, see Application Manifests.

  3. マニフェストの所有者を指定します。Identify the owner of the manifest. 次の例では、myComApp バージョン 1 がマニフェスト ファイルを所有しています。In the following example, myComApp version 1 owns the manifest file.

    <?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="msil"   
      />  
    
  4. 依存アセンブリを指定します。Identify dependent assemblies. myComAppmyManagedComp に依存する例を次に示します。In the following example, myComApp depends on 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"  
          />  
        </dependentAssembly>  
      </dependency>  
    </assembly>  
    
  5. マニフェスト ファイルに名前を付けて保存します。Save and name the manifest file. アプリケーション マニフェストの名前は、アセンブリ実行可能ファイルの名前に拡張子 .manifest が付いたものです。The name of an application manifest is the name of the assembly executable followed by the .manifest extension. たとえば、myComApp.exe のアプリケーション マニフェスト ファイル名は myComApp.exe.manifest です。For example, the application manifest file name for myComApp.exe is myComApp.exe.manifest.

アプリケーション マニフェストは、COM アプリケーションと同じディレクトリにインストールできます。You can install an application manifest in the same directory as the COM application. また、アプリケーションの .exe ファイルにリソースとして追加することもできます。Alternatively, you can add it as a resource to the application's .exe file. 詳しくは、「About Side-by-Side Assemblies」(side-by-side アセンブリについて) をご覧ください。For additional information, For more information, see About Side-by-Side Assemblies.

コンポーネント マニフェストを作成するにはTo create a component manifest

  1. XML エディターを使用して、マネージド アセンブリを記述するコンポーネント マニフェストを作成します。Using an XML editor, create a component manifest to describe the managed assembly.

  2. ファイルの先頭に次の標準ヘッダーを挿入します。Insert the following standard header at the beginning of the file:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
    
  3. ファイルの所有者を指定します。Identify the owner of the file. アプリケーション マニフェスト ファイル内の <assemblyIdentity> 要素の <dependentAssembly> 要素は、コンポーネント マニフェスト内の要素と一致している必要があります。The <assemblyIdentity> element of the <dependentAssembly> element in application manifest file must match the one in the component manifest. 次の例では、myManagedComp バージョン 1.2.3.4 がマニフェスト ファイルを所有しています。In the following example, myManagedComp version 1.2.3.4 owns the manifest file.

    <?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"  
                        processorArchitecture="msil"  
           />  
    
  4. アセンブリ内の各クラスを指定します。Identify each class in the assembly. マネージド アセンブリ内の各クラスを一意に識別するには <clrClass> 要素を使用します。Use the <clrClass> element to uniquely identify each class in the managed assembly. この要素は、<assembly> 要素のサブ要素であり、次の表に示す属性を持っています。The element, which is a subelement of the <assembly> element, has the attributes described in the following table.

    属性Attribute 説明Description 必須Required
    clsid アクティブにするクラスを指定する識別子。The identifier that specifies the class to be activated. はいYes
    description ユーザーにコンポーネントを説明する文字列。A string that informs the user about the component. 既定では文字列は空です。An empty string is the default. いいえNo
    name マネージド クラスを表す文字列。A string that represents the managed class. はいYes
    progid 遅延バインディングによるアクティベーションで使用される識別子。The identifier to be used for late-bound activation. いいえNo
    threadingModel COM スレッド モデル。The COM threading model. "Both" が既定値です。"Both" is the default value. いいえNo
    runtimeVersion 使用する共通言語ランタイム (CLR: Common Language Runtime) のバージョンを指定します。Specifies the common language runtime (CLR) version to use. この属性を指定せず、CLR がまだ読み込まれていない場合は、インストールされている最新の CLR (CLR Version 4 よりも前のバージョン) でコンポーネントが読み込まれます。If you do not specify this attribute, and the CLR is not already loaded, the component is loaded with the latest installed CLR prior to CLR version 4. v1.0.3705、v1.1.4322、または v2.0.50727 を指定すると、インストールされている最新の CLR バージョン (CLR Version 4 よりも前のバージョン。通常は v2.0.50727) に自動的にロールフォワードされます。If you specify v1.0.3705, v1.1.4322, or v2.0.50727, the version automatically rolls forward to the latest installed CLR version prior to CLR version 4 (usually v2.0.50727). 別のバージョンの CLR が既に読み込まれていて、指定されたバージョンをインプロセスで並行して (side-by-side で) 読み込むことができる場合は、指定されたバージョンが読み込まれます。それ以外の場合は、読み込まれた CLR が使用されます。If another version of the CLR is already loaded and the specified version can be loaded side-by-side in-process, the specified version is loaded; otherwise, the loaded CLR is used. これにより、読み込みエラーが発生する可能性があります。This might cause a load failure. いいえNo
    tlbid クラスに関する型情報を格納するタイプ ライブラリの識別子。The identifier of the type library that contains type information about the class. いいえNo

    属性タグはすべて大文字と小文字が区別されます。All attribute tags are case-sensitive. OLE/COM オブジェクト ビューアー (Oleview.exe) で、エクスポートされたアセンブリのタイプ ライブラリを表示することによって、CLSID、ProgID、スレッド モデル、およびランタイムのバージョンを取得できます。You can obtain CLSIDs, ProgIDs, threading models, and the runtime version by viewing the exported type library for the assembly with the OLE/COM ObjectViewer (Oleview.exe).

    testClass1 および testClass2 という 2 つのクラスを識別するコンポーネント マニフェストを次に示します。The following component manifest identifies two classes, testClass1 and testClass2.

    <?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. マニフェスト ファイルに名前を付けて保存します。Save and name the manifest file. コンポーネント マニフェストの名前は、アセンブリ ライブラリの名前に拡張子 .manifest が付いたものです。The name of a component manifest is the name of the assembly library followed by the .manifest extension. たとえば、myManagedComp.dll の場合は、myManagedComp.manifest になります。For example, the myManagedComp.dll is myManagedComp.manifest.

コンポーネント マニフェストはリソースとしてアセンブリに埋め込む必要があります。You must embed the component manifest as a resource in the assembly.

コンポーネント マニフェストをマネージド アセンブリに埋め込むにはTo embed a component manifest in a managed assembly

  1. 次のステートメントを含むリソース スクリプトを作成します。Create a resource script that contains the following statement:

    RT_MANIFEST 1 myManagedComp.manifest

    このステートメントで、myManagedComp.manifest は埋め込むコンポーネント マニフェストの名前です。In this statement, myManagedComp.manifest is the name of the component manifest being embedded. この例では、スクリプト ファイル名は myresource.rc です。For this example, the script file name is myresource.rc.

  2. Microsoft Windows リソース コンパイラ (Rc.exe) を使用してスクリプトをコンパイルします。Compile the script using the Microsoft Windows Resource Compiler (Rc.exe). コマンド プロンプトに次のコマンドを入力します。At the command prompt, type the following command:

    rc myresource.rc

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

  3. もう一度アセンブリのソース ファイルをコンパイルし、/win32res オプションを使用してリソース ファイルを指定します。Compile the assembly's source file again and specify the resource file by using the /win32res option:

    /win32res:myresource.res  
    

    ここでも、myresource.res は埋め込むリソースを含むリソース ファイルの名前です。Again, myresource.res is the name of the resource file containing embedded resource.

関連項目See also