Carregamento de dependência no .NET

Todos os aplicativos .NET têm dependências. Até mesmo o aplicativo simples hello world tem dependências em partes das bibliotecas de classes do .NET.

Entender a lógica de carregamento de assembly padrão do .NET pode ajudar você a solucionar problemas típicos de implantação.

Em alguns aplicativos, as dependências são determinadas dinamicamente no tempo de execução. Nessas situações, é fundamental entender como assemblies gerenciados e dependências não gerenciadas são carregados.

AssemblyLoadContext

A API AssemblyLoadContext é fundamental para o design de carregamento do .NET. O artigo Entendendo o AssemblyLoadContext apresenta uma visão geral conceitual do design.

Carregando detalhes

Os detalhes do algoritmo de carregamento são abordados brevemente em vários artigos:

Criar um aplicativo com plug-ins

O tutorial Criar um aplicativo .NET com plug-ins descreve como criar um AssemblyLoadContext personalizado. Ele usa um AssemblyDependencyResolver para resolver as dependências do plug-in. O tutorial isola corretamente as dependências do plug-in do aplicativo de hospedagem.

Capacidade de descarregamento de assembly

O artigo Como usar e depurar a capacidade de descarregamento do assembly no artigo do .NET é um tutorial passo a passo. Ele mostra como carregar um aplicativo .NET, executá-lo e descarregá-lo. O artigo também apresenta dicas de depuração.

Coletar informações detalhadas de carregamento do assembly

O artigo Coletar informações detalhadas de carregamento do assembly descreve como coletar informações detalhadas sobre o carregamento do assembly gerenciado no runtime. Ele usa a ferramenta dotnet-trace para capturar eventos do carregador de assembly em um rastreamento de um processo em execução.