Share via


DLL、拡張機能、またはコントロール パネルをホストするアプリケーションでアセンブリを有効にする

アプリケーションでサードパーティの DLL、拡張機能、プラグイン、またはコントロール パネルをホストしている場合は、ホストされているコンポーネントに対してもこのアセンブリを有効にせずに、アプリケーションでアセンブリを有効にすることができます。 これは、ホストされるコンポーネントでアセンブリを使用するためにコードの変更が必要な場合です。 アプリケーション開発者は、これらのサード パーティ製コンポーネントを変更できない場合があります。 この場合は、アプリケーションがホストされているコンポーネントに影響を与えることなくアセンブリを使用できるように、このセクションで説明されている手順に従う必要があります。

  • ホストされている DLL、拡張機能、プラグイン、またはコントロール パネルに影響を与えずにアプリケーションでアセンブリを有効にするには、アセンブリに対するアプリケーションの依存を説明するマニフェストをリソースとしてアプリケーションに含める必要があります。 アセンブリで有効になっていないホストされるコンポーネントには、この依存関係を説明するマニフェストを含めてはいけません。
  • アプリケーションとそのホストされている DLL、拡張機能、プラグイン、またはコントロール パネルでアセンブリを有効にするには、アプリケーションとそのホストされるコンポーネントの両方にリソースとしてマニフェストを含めます。 アプリケーションとホストされるコンポーネントに含まれるマニフェストは、それぞれアセンブリへの依存を記述する必要があります。 通常、アプリケーション開発者はアプリケーションにマニフェストを追加し、ホストされるコンポーネント開発者は DLL、拡張機能、プラグイン、またはコントロール パネルにマニフェストを追加します。

次のメソッドを使用して、DLL、拡張機能、プラグイン、またはコントロール パネルであるアプリケーションまたはホストされたコンポーネントにマニフェストを追加できます。

アプリケーションまたはホストされたコンポーネントでアセンブリを有効にするには。

  1. アセンブリに対するアプリケーションまたは拡張機能の依存を記述するマニフェストを作成します。

    たとえば、次のサンプル マニフェストをコピーし、 assemblyIdentityprocessorArchitecture、および description の正しい値を置き換えることで、"YourApplication" のマニフェストを作成できます。 32 ビット プラットフォームでビルドする場合は processorArchitecture の値を x86 に、64 ビット プラットフォームでビルドする場合は ia64 に設定します。 description 要素には、アプリケーションのオプションの説明が含まれています。 マニフェスト形式の詳細については、「 アプリケーション マニフェスト」を参照してください。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        version="1.0.0.0"
        processorArchitecture="x86"
        name="YourCompanyName.YourDivision.YourApp"
        type="win32"
    />
    <description>Your app description here</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Proseware.Research.SampleAssembly"
                version="6.0.0.0"
                processorArchitecture="X86"
                publicKeyToken="0000000000000000"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    </assembly>
    
  2. 種類が id 2 のアプリケーションまたは拡張機能RT_MANIFESTリソースを作成します。

    たとえば、アプリケーションの名前が YourApp の場合、アプリケーションには次のものが含まれている必要があります。

    #define MANIFEST_RESOURCE_ID 2
    MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
    
  3. -DISOLATION_AWARE_ENABLED フラグを使用してアプリケーションをコンパイルするか、#include "Windows.h" ステートメントの前にこのステートメントを挿入します。 複数のモジュールを持つアプリケーションの場合は、すべてのモジュールで -DISOLATION_AWARE_ENABLED フラグが必要です。

    #define ISOLATION_AWARE_ENABLED 1
    
  4. アプリケーションによって使用されるアセンブリが、アプリケーションとホストされるコンポーネントで正しく動作することをテストします。

拡張機能のないアプリケーションにアセンブリを追加する方法の詳細については、「拡張機能のないアプリケーション でアセンブリを有効にする」を参照してください。