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.
Poznámka:
Tento článek je specifický pro .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.
Pomocník loadFromContext pro spravované ladění (MDA) se aktivuje, pokud je sestavení načteno LoadFrom do kontextu. K této situaci může dojít v důsledku volání Assembly.LoadFrom nebo jiných podobných metod.
Příznaky
Použití některých metod zavaděče může vést k načtení sestavení v LoadFrom kontextu. Použití tohoto kontextu může vést k neočekávanému chování serializace, přetypování a rozlišení závislostí. Obecně se doporučuje, aby se sestavení načetla do Load kontextu, aby se těmto problémům vyhnula. Je obtížné určit, do kterého kontextu bylo sestavení načteno bez tohoto MDA.
Příčina
Obecně platí, že sestavení bylo načteno do LoadFrom kontextu, pokud bylo načteno z cesty mimo Load kontext, například globální mezipaměť sestavení nebo AppDomainSetup.ApplicationBase vlastnost.
Resolution
Nakonfigurujte aplikace tak, aby LoadFrom volání už nebyla potřeba. K tomu můžete použít následující techniky:
Nainstalujte sestavení do globální mezipaměti sestavení.
Umístěte sestavení do ApplicationBase adresáře pro AppDomain. V případě výchozí domény je adresář ten, ApplicationBase který obsahuje spustitelný soubor, který proces spustil. To může také vyžadovat vytvoření nového AppDomain , pokud není vhodné přesunout sestavení.
Pokud jsou závislá sestavení v podřízených adresářích vzhledem ke spustitelnému souboru (.config) nebo sekundárním doménám aplikace, přidejte cestu k sondování konfigurace aplikace (.config).
V každém případě je možné kód změnit tak, aby používal metodu Assembly.Load .
Vliv na modul runtime
MdA nemá žádný vliv na CLR. Hlásí kontext, který byl použit jako výsledek požadavku na načtení.
Výstup
MdA hlásí, že sestavení bylo načteno LoadFrom do kontextu. Určuje jednoduchý název sestavení a cestu. Navrhuje také zmírnění rizik, aby se zabránilo použití LoadFrom kontextu.
Konfigurace
<mdaConfig>
<assistants>
<loadFromContext />
</assistants>
</mdaConfig>
Příklad
Následující příklad kódu ukazuje situaci, která může aktivovat tuto MDA:
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// The following call caused the LoadFrom context to be used
// because the assembly is loaded using LoadFrom and the path is
// located outside of the Load context probing path.
Assembly.LoadFrom(@"C:\Text\Test.dll");
}
}
}