Включение сборки в приложении с библиотекой DLL, расширением или панелью управления
Если приложение размещает стороннюю библиотеку DLL, расширение, подключаемый модуль или панель управления, вы можете включить сборку в приложении без включения этой сборки для размещенных компонентов. Это может быть так, если размещенный компонент требует изменения кода для использования сборки. Разработчику приложений может быть не удается внести изменения в эти сторонние компоненты. В этом случае следует выполнить процедуру, описанную в этом разделе, чтобы приложение пользовалось сборкой, не влияя на размещенные компоненты.
- Чтобы включить сборку в приложении, не затрагивая размещенные библиотеки DLL, расширения, подключаемые модули или панели управления, манифест, описывающий зависимость приложения от сборки, должен быть включен в приложение в качестве ресурса. Размещенные компоненты, которые не включены в сборку, не должны включать манифесты, описывающие эту зависимость.
- Чтобы включить сборку в приложении и размещенных библиотеках DLL, расширениях, подключаемых модулях или панелях управления, включите манифесты в качестве ресурсов как в приложении, так и в его размещенных компонентах. Манифесты, содержащиеся в приложении и размещенных компонентах, должны каждый описывать зависимость от сборки. Как правило, разработчик приложения добавляет манифест в приложение, а разработчик размещенного компонента добавляет манифест в библиотеку DLL, расширение, подключаемый модуль или панель управления.
Следующий метод можно использовать для добавления манифеста в приложение или размещенный компонент, который является библиотекой DLL, расширением, подключаемым модулем или панелью управления.
Разрешить сборку в приложении или хостированном компоненте.
Создайте манифест, описывающий зависимость приложения или расширения от сборки.
Например, манифест "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>
Создайте ресурс в приложении или расширении типа RT_MANIFEST id 2.
Например, если имя приложения — YourApp, приложение должно содержать следующее:
#define MANIFEST_RESOURCE_ID 2 MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
Скомпилируйте приложение с флагом -DISOLATION_AWARE_ENABLED или вставьте эту инструкцию перед инструкцией #include "Windows.h". В случае приложения с несколькими модулями для всех модулей требуется флаг -DISOLATION_AWARE_ENABLED.
#define ISOLATION_AWARE_ENABLED 1
Проверьте, правильно ли работают сборки, используемые приложением, в приложении и размещенном компоненте.
Дополнительные сведения о добавлении сборки в приложения без расширений см. в разделе Включение сборки в приложении без расширений.