Включение сборки в приложении, в котором размещается библиотека DLL, расширение или панель управления
Если в приложении размещается сторонняя библиотека DLL, расширение, подключаемый модуль или панель управления, может потребоваться включить сборку в приложении без включения этой сборки для размещенных компонентов. Это может быть так, когда для использования сборки для размещенного компонента требуются изменения кода. Как разработчик приложения вы можете не вносить изменения в эти сторонние компоненты. В этом случае следует выполнить процедуру, описанную в этом разделе, чтобы приложение пользовалось сборкой, не затрагивая размещенные компоненты.
- Чтобы включить сборку в приложении, не затрагивая размещенные библиотеки DLL, расширения, подключаемые модули или панели управления, манифест, описывающий зависимость приложения от сборки, должен быть включен в приложение в качестве ресурса. Размещенные компоненты, которые не включены в сборку, не должны содержать манифесты, описывающие эту зависимость.
- Чтобы включить сборку в приложении и размещенные в ней библиотеки DLL, расширения, подключаемые модули или панели управления, включите манифесты в качестве ресурсов как в приложение, так и в его размещенные компоненты. Манифесты, включенные в приложение и размещенные компоненты, должны описывать зависимость от сборки. Как правило, разработчик приложения добавляет манифест в приложение, а разработчик размещенного компонента добавляет манифест в библиотеку DLL, расширение, подключаемый модуль или панель управления.
Следующий метод можно использовать для добавления манифеста в приложение или размещенный компонент, который является библиотекой DLL, расширением, подключаемым модулем или панелью управления.
Включение сборки в приложении или размещенном компоненте.
Создайте манифест, описывающий зависимость приложения или расширения от сборки.
Например, манифест для "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>
Создайте ресурс в приложении или расширении типа RT_MANIFEST с идентификатором 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
Проверьте, правильно ли работают сборки, используемые приложением, в приложении и размещенном компоненте.
Дополнительные сведения о добавлении сборки в приложения без расширений см. в разделе Включение сборки в приложении без расширений.