Использование параллельных сборок в качестве ресурса

Вы можете добавить манифест в приложение как ресурс в двоичный исполняемый файл заголовка приложения. Значение MANIFEST_RESOURCE_ID определяет, как зависимости параллельной сборки, описанные в манифесте, используются загрузчиком.

Если для MANIFEST_RESOURCE_ID задано значение 1, загрузчик использует зависимости параллельной сборки, указанные в манифесте в качестве процесса по умолчанию. Все подключаемые модули также используют этот процесс по умолчанию.

В следующей таблице показано, как загрузчик использует манифест для различных значений MANIFEST_RESOURCE_ID при компиляции приложения с флагом -DISOLATION_AWARE_ENABLED. Обратите внимание, что значения 1–16 зарезервированы для использования Windows XP. Разработчик может использовать другие значения, если он хочет управлять контекстами активации, используя функции, описанные в справочнике по контексту активации .

Значение MANIFEST_RESOURCE_ID Манифест задаёт значение по умолчанию для процесса? Используется для статических импортов? Каково назначение файла EXE? Для чего используется DLL? Использует параллельную версию сборок при компиляции с помощью -DISOLATION_AWARE_ENABLED?
1 Да Да Да Нет Да
2 Нет Да Да Да Да
3 Нет Нет Да Да Да

 

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

MANIFEST_RESOURCE_ID 2 следует использовать для приложений, в которых размещаются сторонние элементы управления или подключаемые модули. В этом случае манифест влияет на все параллельные сборки, загруженные статическими загрузками, вызовами DllMain и вызовами, перенаправленными по -DISOLATION_AWARE_ENABLED. Дополнительные сведения см. в разделе Включение сборки в приложении, в котором размещена библиотека DLL, расширение или панель управления.

MANIFEST_RESOURCE_ID 3 следует использовать только для перенаправления вызовов с помощью -DISOLATION_AWARE_ENABLED. Загрузка другими методами остаётся неизменной.