在裝載 DLL、擴充功能或主控台的應用程式中啟用元件

如果您的應用程式裝載協力廠商 DLL、延伸模組、外掛程式或控制台,您可能會想要在應用程式中啟用元件,而不需為裝載的元件啟用此元件。 當裝載的元件需要程式碼變更才能使用元件時,就可能發生這種情況。 身為應用程式開發人員,您可能無法變更這些協力廠商元件。 在此情況下,您應該遵循本節所述的程式,讓您的應用程式可以使用元件,而不會影響裝載的元件。

  • 若要在應用程式中啟用元件,而不會影響任何裝載的 DLL、延伸模組、外掛程式或控制台,應將應用程式相依于元件的資訊清單包含在應用程式中作為資源。 未使用元件啟用的裝載元件不應包含描述此相依性的資訊清單。
  • 若要在應用程式和其裝載的 DLL、延伸模組、外掛程式或控制台中啟用元件,請在應用程式和其裝載的元件中包含資訊清單作為資源。 應用程式和裝載元件中包含的資訊清單應該分別描述元件相依性。 一般而言,應用程式開發人員會將資訊清單新增至應用程式,而裝載的元件開發人員會將資訊清單新增至 DLL、擴充功能、外掛程式或控制台。

下列方法可用來將資訊清單新增至應用程式或裝載的元件,該元件是 DLL、擴充功能、外掛程式或控制台。

若要在應用程式或裝載元件中啟用元件。

  1. 撰寫資訊清單,描述應用程式或延伸模組在元件上的相依性。

    例如,您可以複製下列範例資訊清單,並替代 assemblyIdentityprocessorArchitecturedescription的正確值,來建立 「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. 在類型RT_MANIFEST識別碼 2 的應用程式或擴充功能中建立資源。

    例如,如果應用程式的名稱是 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. 測試以確保應用程式所使用的元件在應用程式和裝載的元件中正常運作。

如需將元件新增至沒有擴充功能之應用程式的詳細資訊,請參閱 在沒有擴充功能的應用程式中啟用元件