Загрузка зависимостей в .NET
Каждое приложение .NET имеет некоторые зависимости. Даже самое простое приложение hello world
зависит от нескольких разделов в библиотеках классов .NET.
Общие сведения о логике загрузки сборок по умолчанию в .NET помогут устранить типичные проблемы с развертыванием.
В некоторых приложениях зависимости определяются динамически во время выполнения. В таких ситуациях важно понимать, как загружаются управляемые и неуправляемые сборки.
AssemblyLoadContext
API AssemblyLoadContext является важнейшей частью системы загрузки в .NET. Статья Основные сведения об AssemblyLoadContext содержит высокоуровневое описание этой системы.
Загрузка сведений
Сведения об алгоритме загрузки кратко упоминаются в нескольких статьях:
- Алгоритм загрузки управляемых сборок
- Алгоритм загрузки вспомогательных сборок
- Алгоритм загрузки неуправляемых (собственных) библиотек
- Стандартное зондирование
Создание приложения с подключаемыми модулями
В руководстве по созданию приложения .NET с подключаемыми модулями описывается создание пользовательского assemblyLoadContext. Он использует AssemblyDependencyResolver для разрешения зависимостей подключаемого модуля. Этот учебник правильно изолирует зависимости подключаемого модуля от ведущего приложения.
Возможность выгрузки сборки
Пошаговое руководство по использованию и отладке выгрузки сборок в .NET . В нем показано, как загрузить приложение .NET, выполнить его, а затем выгрузить. Также в этой статье есть рекомендации по отладке.
Сбор подробных сведений о загрузке сборок
В статье Сбор подробных сведений о загрузке сборок объясняется, как получить подробные сведения о загрузке управляемой сборки в среде выполнения. В рамках той же статьи используется средство dotnet-trace для записи событий загрузчика сборки в трассировку выполняемого процесса.