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 stderr souboru . |
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.Name
TRUSTED_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_PATHS
př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.
Zkontrolujte, jestli zadaný název knihovny představuje absolutní nebo relativní cestu.
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
, ,.dylib
a.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.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.
Označuje, že se knihovně nepodařilo načíst.