Comparteix a través de


loadFromContext MDA

Nota:

Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.

El loadFromContext asistente de depuración administrada (MDA) se activa si se carga un ensamblado en el LoadFrom contexto. Esta situación puede producirse como resultado de llamar a Assembly.LoadFrom u otros métodos similares.

Síntomas

El uso de algunos métodos del cargador puede dar lugar a que los ensamblados se carguen en el LoadFrom contexto. El uso de este contexto puede dar lugar a un comportamiento inesperado para la serialización, la conversión y la resolución de dependencias. En general, se recomienda cargar los ensamblados en el Load contexto para evitar estos problemas. Es difícil determinar en qué contexto se ha cargado un ensamblado sin este MDA.

Causa

Por lo general, un ensamblado se cargó en el LoadFrom contexto si se cargó desde una ruta de acceso fuera del Load contexto, como la caché global de ensamblados o la AppDomainSetup.ApplicationBase propiedad .

Resolution

Configure aplicaciones de forma que LoadFrom las llamadas ya no sean necesarias. Puede usar las siguientes técnicas para hacerlo:

  • Instale ensamblados en la caché global de ensamblados.

  • Coloque ensamblados en el ApplicationBase directorio para .AppDomain En el caso del dominio predeterminado, el ApplicationBase directorio es el que contiene el archivo ejecutable que inició el proceso. Esto también puede requerir la creación de un nuevo AppDomain si no es conveniente mover el ensamblado.

  • Agregue una ruta de acceso de sondeo al archivo de configuración de la aplicación (.config) o a dominios de aplicación secundarios si los ensamblados dependientes están en directorios secundarios relativos al ejecutable.

En cada caso, el código se puede cambiar para usar el Assembly.Load método .

Efecto en el tiempo de ejecución

El MDA no tiene ningún efecto en clR. Informa del contexto que se usó como resultado de una solicitud de carga.

Salida

El MDA informa de que el ensamblado se cargó en el LoadFrom contexto. Especifica el nombre simple del ensamblado y la ruta de acceso. También sugiere mitigaciones para evitar el uso del LoadFrom contexto.

Configuración

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

Ejemplo

En el ejemplo de código siguiente se muestra una situación que puede activar este 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");
        }
    }
}

Consulte también