Compartilhar via


loadFromContext MDA

O loadFromContext Assistente de depuração gerenciada (MDA) é ativado se um conjunto é carregado para o LoadFrom contexto. Essa situação pode ocorrer como resultado da chamada Assembly.LoadFrom ou outros métodos semelhantes.

Sintomas

O uso de alguns métodos de carregador pode resultar em assemblies sejam carregados no LoadFrom contexto. O uso desse contexto pode resultar em comportamento inesperado para serialização, conversão e resolução de dependência. Em geral, é recomendável que assemblies sejam carregados para o Load o contexto para evitar esses problemas. É difícil determinar qual contexto um assembly foi carregado sem este MDA.

Causa

Geralmente, um assembly foi carregado no LoadFrom se ele foi carregado a partir de um caminho fora de contexto do Load contexto, como, por exemplo, o cache de assembly global ou a AppDomainSetup.ApplicationBase propriedade.

Resolução

Configure os aplicativos que LoadFrom chamadas não são mais necessários. Você pode usar as seguintes técnicas para fazê-lo:

  • Instale assemblies no cache global de assemblies.

  • Coloque os assemblies na ApplicationBase diretório para o AppDomain. No caso do domínio padrão, o ApplicationBase directory é aquele que contém o arquivo executável que iniciou o processo. Isso também pode requerer a criação de uma nova AppDomain se ele é não é conveniente mover o assembly.

  • Adicione um caminho de sondagem para seu arquivo de configuração (. config) do aplicativo ou domínios de aplicativo secundário se assemblies dependentes são os diretórios filhos relativo ao executável.

Em cada caso, o código pode ser alterado para usar o Assembly.Load método.

Efeito sobre o tempo de execução.

O MDA não tem qualquer efeito sobre o CLR. Ele informa que o contexto em que foi usado como resultado de uma solicitação de carga.

Saída

O MDA relata que o assembly foi carregado para o LoadFrom contexto. Especifica o nome simples do assembly e o caminho. Ele também sugere atenuações para evitar o uso de LoadFrom contexto.

Configuração

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

Exemplo

O exemplo de código a seguir demonstra uma situação que pode ativar 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 também

Conceitos

Diagnosticar erros com assistentes de depuração gerenciada