Включение сборки в приложении, в котором размещается библиотека DLL, расширение или панель управления

Если в приложении размещается сторонняя библиотека DLL, расширение, подключаемый модуль или панель управления, может потребоваться включить сборку в приложении без включения этой сборки для размещенных компонентов. Это может быть так, когда для использования сборки для размещенного компонента требуются изменения кода. Как разработчик приложения вы можете не вносить изменения в эти сторонние компоненты. В этом случае следует выполнить процедуру, описанную в этом разделе, чтобы приложение пользовалось сборкой, не затрагивая размещенные компоненты.

  • Чтобы включить сборку в приложении, не затрагивая размещенные библиотеки DLL, расширения, подключаемые модули или панели управления, манифест, описывающий зависимость приложения от сборки, должен быть включен в приложение в качестве ресурса. Размещенные компоненты, которые не включены в сборку, не должны содержать манифесты, описывающие эту зависимость.
  • Чтобы включить сборку в приложении и размещенные в ней библиотеки DLL, расширения, подключаемые модули или панели управления, включите манифесты в качестве ресурсов как в приложение, так и в его размещенные компоненты. Манифесты, включенные в приложение и размещенные компоненты, должны описывать зависимость от сборки. Как правило, разработчик приложения добавляет манифест в приложение, а разработчик размещенного компонента добавляет манифест в библиотеку DLL, расширение, подключаемый модуль или панель управления.

Следующий метод можно использовать для добавления манифеста в приложение или размещенный компонент, который является библиотекой DLL, расширением, подключаемым модулем или панелью управления.

Включение сборки в приложении или размещенном компоненте.

  1. Создайте манифест, описывающий зависимость приложения или расширения от сборки.

    Например, манифест для "YourApplication" можно создать, скопировав следующий пример манифеста и подставив правильные значения для assemblyIdentity, processorArchitecture и description. Задайте для параметра processorArchitecture значение x86 при сборке на 32-разрядной платформе и значение ia64 при сборке на 64-разрядной платформе. Элемент 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. Проверьте, правильно ли работают сборки, используемые приложением, в приложении и размещенном компоненте.

Дополнительные сведения о добавлении сборки в приложения без расширений см. в разделе Включение сборки в приложении без расширений.