Výchozí zkušební verze

Instance AssemblyLoadContext.Default je zodpovědná za vyhledání závislostí sestavení. Tento článek popisuje logiku AssemblyLoadContext.Default sondování instance.

Vlastnosti probing nakonfigurované hostitelem

Po spuštění modulu runtime poskytuje hostitel modulu runtime sadu pojmenovaných vlastností sondy, které konfigurují AssemblyLoadContext.Default cesty sondy.

Každá vlastnost sondy je volitelná. Pokud je k dispozici, každá vlastnost je řetězcová hodnota, která obsahuje oddělený seznam absolutních cest. Oddělovač je ";" ve Windows a :na všech ostatních platformách.

Název vlastnosti Popis
TRUSTED_PLATFORM_ASSEMBLIES Seznam cest k souborům sestavení platformy a aplikace
PLATFORM_RESOURCE_ROOTS Seznam cest k adresářům pro hledání sestavení satelitních prostředků
NATIVE_DLL_SEARCH_DIRECTORIES Seznam cest k adresářům pro hledání nespravovaných (nativních) knihoven
APP_PATHS Seznam cest k adresářům pro hledání spravovaných sestavení

Jak jsou vlastnosti naplněné?

Existují dva hlavní scénáře pro naplnění vlastností v závislosti na tom, jestli <soubor myapp>.deps.json existuje.

  • Když je soubor *.deps.json k dispozici, parsuje se pro naplnění vlastností sondy.
  • Pokud soubor *.deps.json neexistuje, předpokládá se, že adresář aplikace bude obsahovat všechny závislosti. Obsah adresáře slouží k naplnění vlastností sondy.

Soubory *.deps.json pro všechny odkazované architektury jsou navíc podobně analyzovány.

Proměnnou DOTNET_ADDITIONAL_DEPS prostředí lze použít k přidání dalších závislostí. dotnet.exe obsahuje také volitelný --additional-deps parametr pro nastavení této hodnoty při spuštění aplikace.

Vlastnost APP_PATHS se ve výchozím nastavení nenaplní a pro většinu aplikací se vynechá.

Seznam všech *.deps.json souborů používaných aplikací lze získat přístup prostřednictvím System.AppContext.GetData("APP_CONTEXT_DEPS_FILES").

Návody zobrazit vlastnosti sondy ze spravovaného kódu?

Každá vlastnost je k dispozici voláním AppContext.GetData(String) funkce s názvem vlastnosti z výše uvedené tabulky.

Návody ladění konstrukce zkušebních vlastností?

Hostitel modulu runtime .NET Core bude výstupem užitečných trasovacích zpráv, když jsou povoleny určité proměnné prostředí:

Proměnná prostředí Popis
COREHOST_TRACE=1 Povolí trasování.
COREHOST_TRACEFILE=<path> Trasuje cestu k souboru místo výchozího stderrsouboru .
COREHOST_TRACE_VERBOSITY Nastaví úroveň podrobností od 1 (nejnižší) na 4 (nejvyšší).

Výchozí zkušební nastavení spravovaného sestavení

Při zkoumání hledání spravovaného sestavení AssemblyLoadContext.Default vypadá takto:

  • Soubory odpovídající in AssemblyName.NameTRUSTED_PLATFORM_ASSEMBLIES (po odebrání přípon souborů)
  • Soubory sestavení s APP_PATHS běžnými příponami souborů.

Sondování satelitního sestavení (prostředků)

Pokud chcete najít satelitní sestavení pro konkrétní jazykovou verzi, vytvořte sadu cest k souborům.

Pro každou cestu v PLATFORM_RESOURCE_ROOTS a pak APP_PATHSpřipojte CultureInfo.Name řetězec, oddělovač adresáře, AssemblyName.Name řetězec a příponu ".dll".

Pokud nějaký odpovídající soubor existuje, zkuste ho načíst a vrátit.

Nespravované (nativní) testování knihovny

Nespravovaný algoritmus sondování knihovny modulu runtime je na všech platformách stejný. Vzhledem k tomu, že skutečné zatížení nespravované knihovny provádí základní platforma, může se pozorované chování mírně lišit.

  1. Zkontrolujte, jestli zadaný název knihovny představuje absolutní nebo relativní cestu.

  2. Pokud název představuje absolutní cestu, použijte název přímo pro všechny následné operace. V opačném případě použijte název a vytvořte kombinace definované platformou, které je potřeba zvážit. Kombinace se skládají z předpon specifických pro platformu (například lib) a/nebo přípon (například .dll, , .dyliba .so). Nejedná se o vyčerpávající seznam, který nepředstavuje přesné úsilí na jednotlivých platformách. Je to jen příklad toho, co se považuje. Další informace najdete v tématu načítání nativní knihovny.

  3. Název a pokud je cesta relativní, každá kombinace se pak použije v následujících krocích. První úspěšný pokus o načtení okamžitě vrátí popisovač načtené knihovně.

    • Připojte ji ke každé cestě zadané ve NATIVE_DLL_SEARCH_DIRECTORIES vlastnosti a pokuste se načíst.

    • Pokud DefaultDllImportSearchPathsAttribute není definován v volání sestavení nebo volání p/invoke nebo je definována a obsahuje DllImportSearchPath.AssemblyDirectory, připojte název nebo kombinaci do volajícího adresáře sestavení a pokuste se načíst.

    • Knihovnu můžete načíst přímo.

  4. Označuje, že se knihovně nepodařilo načíst.