Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Instance AssemblyLoadContext.Default je zodpovědná za vyhledání závislostí sestavení. Tento článek popisuje logiku průzkumu instance AssemblyLoadContext.Default.
Vlastnosti průzkumu 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 | Description |
|---|---|
TRUSTED_PLATFORM_ASSEMBLIES |
Seznam cest k souborům sestavení platformy a aplikace |
PLATFORM_RESOURCE_ROOTS |
Seznam cest k adresářům pro hledání sestav satelitních zdrojový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é?
Jsou dva hlavní scénáře pro naplnění vlastností v závislosti na tom, zda existuje soubor <myapp>.deps.json.
- Když je přítomen soubor *.deps.json, je parsován, což slouží k naplnění sondovacích vlastností.
- 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í pro zjištění.
Navíc *.deps.json soubory pro všechny odkazované architektury jsou 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.
Poznámka:
Proměnná DOTNET_ADDITIONAL_DEPS prostředí a možnost příkazového --additional-deps řádku se vztahují pouze na aplikace závislé na rozhraní.
Tyto možnosti jsou ignorovány pro samostatné aplikace.
Další informace naleznete v tématu Závislé na rozhraní a v samostatném nasazení.
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 zobrazit prostřednictvím System.AppContext.GetData("APP_CONTEXT_DEPS_FILES").
Jak mohu 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.
Jak mohu odstraňovat chyby v konstrukci vlastností sondování?
Hostitel modulu runtime .NET Core bude generovat užitečné trasovací zprávy, když jsou povoleny určité proměnné prostředí.
| Proměnná prostředí | Description |
|---|---|
DOTNET_HOST_TRACE=1 |
Povolí trasování. |
DOTNET_HOST_TRACEFILE=<path> |
Trasuje cestu souboru namísto výchozí stderr. |
DOTNET_HOST_TRACE_VERBOSITY |
Nastaví úroveň podrobností od 1 (nejnižší) až po 4 (nejvyšší). |
Další informace najdete v tématu DOTNET_HOST_TRACE proměnných prostředí.
Výchozí zkušební nastavení spravovaného sestavení
Při hledání spravovaného sestavení AssemblyLoadContext.Default prohledává v následujícím pořadí:
- Soubory odpovídající AssemblyName.Name v
TRUSTED_PLATFORM_ASSEMBLIES(po odebrání přípon souborů) - Soubory sestavení v
APP_PATHSs běžnými příponami souborů.
Zkoumání sestavení satelitních 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 poté APP_PATHS připojte řetězec CultureInfo.Name, oddělovač adresáře, řetězec AssemblyName.Name a příponu '.dll'.
Pokud nějaký odpovídající soubor existuje, zkuste ho načíst a vrátit.
Nespravované (nativní) vyhledávání knihovny
Neřízený algoritmus hledá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, ,.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.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 vlastnosti
NATIVE_DLL_SEARCH_DIRECTORIESa zkuste ji načíst.Pokud DefaultDllImportSearchPathsAttribute není definován v rámci volajícího sestavení nebo volání p/invoke, anebo je definován a obsahuje
DllImportSearchPath.AssemblyDirectory, připojte název nebo kombinaci do adresáře volajícího sestavení a pokuste se načíst.Knihovnu můžete načíst přímo.
Označuje, že se knihovně nepodařilo načíst.