loadFromContext MDA
Kommentar
Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.
Den loadFromContext
hanterade felsökningsassistenten (MDA) aktiveras om en sammansättning läses in i kontexten LoadFrom
. Den här situationen kan inträffa till följd av anrop Assembly.LoadFrom eller andra liknande metoder.
Symtom
Användningen av vissa inläsningsmetoder kan leda till att sammansättningar läses in i kontexten LoadFrom
. Användningen av den här kontexten kan resultera i oväntat beteende för serialisering, gjutning och beroendematchning. I allmänhet rekommenderar vi att sammansättningar läses in i kontexten Load
för att undvika dessa problem. Det är svårt att avgöra vilken kontext en sammansättning har lästs in i utan denna MDA.
Orsak
I allmänhet lästes en sammansättning in i kontexten om den LoadFrom
lästes in från en sökväg utanför kontexten Load
, till exempel den globala sammansättningscacheminnet eller AppDomainSetup.ApplicationBase egenskapen.
Åtgärd
Konfigurera program så att LoadFrom anrop inte längre behövs. Du kan använda följande tekniker för att göra det:
Installera sammansättningar i den globala sammansättningscacheminnet.
Placera sammansättningar i ApplicationBase katalogen för AppDomain. När det gäller standarddomänen ApplicationBase är katalogen den som innehåller den körbara fil som startade processen. Detta kan också kräva att du skapar en ny AppDomain om det inte är praktiskt att flytta sammansättningen.
Lägg till en avsökningssökväg till programkonfigurationsfilen (.config) eller till sekundära programdomäner om beroende sammansättningar finns i underordnade kataloger i förhållande till den körbara filen.
I varje fall kan koden ändras för att använda Assembly.Load metoden.
Effekt på körningen
MDA har ingen effekt på CLR. Den rapporterar kontexten som användes som ett resultat av en belastningsbegäran.
Output
MDA rapporterar att sammansättningen lästes in i kontexten LoadFrom
. Den anger det enkla namnet på sammansättningen och sökvägen. Det föreslår också åtgärder för att undvika att använda kontexten LoadFrom
.
Konfiguration
<mdaConfig>
<assistants>
<loadFromContext />
</assistants>
</mdaConfig>
Exempel
Följande kodexempel visar en situation som kan aktivera denna 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");
}
}
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för