Propriedades de investigação configuradas pelo host
Quando o runtime é iniciado, o host de runtime fornece um conjunto de propriedades de investigação nomeadas que configuram caminhos de investigação AssemblyLoadContext.Default.
Cada propriedade de investigação é opcional. Se presente, cada propriedade é um valor de cadeia de caracteres que contém uma lista delimitada de caminhos absolutos. O delimitador é o caractere ";" no Windows e ":" em todas as outras plataformas.
Nome da propriedade
Descrição
TRUSTED_PLATFORM_ASSEMBLIES
Lista de caminhos de arquivo de assembly para plataforma e aplicativo.
PLATFORM_RESOURCE_ROOTS
Lista de caminhos de diretório para procurar assemblies de recursos satélites.
NATIVE_DLL_SEARCH_DIRECTORIES
Lista de caminhos de diretório para pesquisar bibliotecas não gerenciadas (nativas).
APP_PATHS
Lista de caminhos de diretório para pesquisar assemblies gerenciados.
Como as propriedades são preenchidas?
Há dois cenários principais para preencher as propriedades, dependendo se o arquivo <myapp>.deps.json existe.
Quando o arquivo *.deps.json está presente, ele é analisado para preencher as propriedades de investigação.
Quando o arquivo *.deps.json não está presente, supõe-se que o diretório do aplicativo contenha todas as dependências. O conteúdo do diretório é usado para preencher as propriedades de investigação.
Além disso, os arquivos *.deps.json de quaisquer estruturas referenciadas são analisados da mesma forma.
A variável de ambiente DOTNET_ADDITIONAL_DEPS pode ser usada para adicionar mais dependências. dotnet.exe também contém um parâmetro opcional --additional-deps para definir esse valor na inicialização do aplicativo.
A propriedade APP_PATHS não é preenchida por padrão e é omitida para a maioria dos aplicativos.
A lista de todos os arquivos *.deps.json usados pelo aplicativo pode ser acessada por meio de System.AppContext.GetData("APP_CONTEXT_DEPS_FILES").
Como fazer para ver as propriedades de investigação por meio do código gerenciado?
Cada propriedade está disponível chamando a função AppContext.GetData(String) com o nome da propriedade listado na tabela acima.
Como fazer para depurar a construção das propriedades de investigação?
O host de runtime do .NET Core produzirá mensagens de rastreamento úteis quando determinadas variáveis de ambiente estiverem habilitadas:
Variável de ambiente
Descrição
COREHOST_TRACE=1
Habilita o rastreamento.
COREHOST_TRACEFILE=<path>
Rastreia um caminho de arquivo em vez do padrão stderr.
COREHOST_TRACE_VERBOSITY
Define o detalhamento de 1 (mais baixo) até 4 (mais alto).
Arquivos correspondentes a AssemblyName.Name em TRUSTED_PLATFORM_ASSEMBLIES (após remover extensões de arquivo).
Arquivos do assembly em APP_PATHS com extensões de arquivo comuns.
Investigação de assembly (recurso) satélite
Para encontrar um assembly satélite de uma cultura específica, construa um conjunto de caminhos de arquivo.
Para cada caminho em PLATFORM_RESOURCE_ROOTS e depois em APP_PATHS, acrescente a cadeia de caracteres CultureInfo.Name, um separador de diretório, a cadeia de caracteres AssemblyName.Name e a extensão ".dll".
Se houver algum arquivo correspondente, tente carregá-lo e devolvê-lo.
Investigação de biblioteca não gerenciada (nativa)
O algoritmo de investigação de biblioteca não gerenciada do runtime é idêntico em todas as plataformas. No entanto, como a carga real da biblioteca não gerenciada é executada pela plataforma subjacente, o comportamento observado pode ser ligeiramente diferente.
Verifique se o nome da biblioteca fornecida representa um caminho absoluto ou relativo.
Se o nome representar um caminho absoluto, use o nome diretamente para todas as operações subsequentes. Caso contrário, use o nome e crie combinações definidas pela plataforma para serem consideradas. As combinações consistem em prefixos (por exemplo, lib) e/ou sufixos (por exemplo, .dll, .dylib e .so) específicos da plataforma. Essa não é uma lista completa e não representa os esforços exatos feitos em cada plataforma. É apenas um exemplo do que é considerado. Para obter mais informações, consulte o carregamento da biblioteca nativa.
O nome (e, se o caminho for relativo, cada combinação) será usado nas etapas a seguir. A primeira tentativa de carregamento bem-sucedida retorna imediatamente o identificador para a biblioteca carregada.
Acrescente-o a cada caminho fornecido na propriedade NATIVE_DLL_SEARCH_DIRECTORIES e tente carregar.
Se DefaultDllImportSearchPathsAttribute não estiver definido no assembly de chamada ou p/invoke ou estiver definido e incluir DllImportSearchPath.AssemblyDirectory, acrescente o nome ou a combinação ao diretório do assembly de chamada e tente carregar.
Use-o diretamente para carregar a biblioteca.
Indique que a biblioteca falhou ao carregar.
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Crie um projeto do .NET e aprenda a adicionar pacotes e a gerenciar as dependências de pacote no projeto. Use a CLI do .NET Core e o registro do NuGet para adicionar bibliotecas e ferramentas aos aplicativos C# usando o Visual Studio Code.