Megosztás a következőn keresztül:


loadFromContext MDA

Feljegyzés

Ez a cikk a .NET-keretrendszer vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.

A loadFromContext felügyelt hibakeresési segéd (MDA) akkor aktiválódik, ha egy szerelvény betöltődik a LoadFrom környezetbe. Ez a helyzet hívás vagy más hasonló módszer eredményeként Assembly.LoadFrom fordulhat elő.

Hibajelenségek

Egyes betöltőmetszetek használata a szerelvények betöltését eredményezheti a LoadFrom környezetben. Ennek a környezetnek a használata váratlan viselkedést eredményezhet szerializálás, casting és függőségfeloldás esetén. Általában ajánlott a szerelvényeket a környezetbe betölteni, hogy elkerüljük ezeket a Load problémákat. Nehéz meghatározni, hogy az MDA nélkül melyik környezetbe lett betöltve egy szerelvény.

Ok

A rendszer általában akkor tölt be egy szerelvényt a LoadFrom környezetbe, ha a környezeten kívüli Load elérési útról, például a globális szerelvény-gyorsítótárból vagy a AppDomainSetup.ApplicationBase tulajdonságból lett betöltve.

Resolution (Osztás)

Olyan alkalmazásokat konfiguráljon, amelyek LoadFrom már nem igényelnek hívásokat. Ehhez az alábbi technikákat használhatja:

  • Szerelvények telepítése a globális szerelvény-gyorsítótárba.

  • Helyezze a szerelvényeket a ApplicationBase könyvtárba a AppDomain. Az alapértelmezett tartomány esetében a ApplicationBase könyvtár tartalmazza a folyamatot elindító végrehajtható fájlt. Ehhez szükség lehet egy új AppDomain létrehozására is, ha nem kényelmes áthelyezni az szerelvényt.

  • Adjon hozzá egy próbaútvonalat az alkalmazáskonfigurációs (.config) fájlhoz vagy a másodlagos alkalmazástartományokhoz, ha a függő szerelvények gyermekkönyvtárakban találhatók a végrehajtható fájlhoz képest.

A kód minden esetben módosítható a Assembly.Load metódus használatára.

Effektus a futtatókörnyezetre

Az MDA-nak nincs hatása a CLR-re. A jelentés a terhelési kérelem eredményeként használt környezetet jelenti.

Hozam

Az MDA jelentése szerint a szerelvény be lett töltve a LoadFrom környezetbe. Megadja a szerelvény egyszerű nevét és az elérési utat. Emellett megoldásokat is javasol a LoadFrom környezet használatának elkerülése érdekében.

Konfiguráció

<mdaConfig>
  <assistants>
    <loadFromContext />
  </assistants>
</mdaConfig>

Példa

Az alábbi példakód egy olyan helyzetet mutat be, amely aktiválhatja ezt az MDA-t:

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");
        }
    }
}

Lásd még