Поделиться через


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

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

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

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

Разрешить сборку в приложении или хостированном компоненте.

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

    Например, манифест "YourApplication" можно создать путем копирования следующего примера манифеста и замены на корректные значения для assemblyIdentity, processorArchitectureи description. Задайте значение processorArchitecture как x86, если сборка производится на 32-разрядной платформе, и как ia64, если производится на 64-разрядной платформе. Элемент описания содержит описание опции приложения. Дополнительную информацию о формате манифеста можно найти в разделе о манифестах приложений .

    <?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 id 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. Проверьте, правильно ли работают сборки, используемые приложением, в приложении и размещенном компоненте.

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