Aracılığıyla paylaş


loadFromContext MDA

Not

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

Bağlama loadFromContext bir derleme yüklenirse LoadFrom yönetilen hata ayıklama yardımcısı (MDA) etkinleştirilir. Bu durum, çağrının Assembly.LoadFrom veya diğer benzer yöntemlerin bir sonucu olarak ortaya çıkabilir.

Belirtiler

Bazı yükleyici yöntemlerinin kullanılması, bağlama derlemelerin yüklenmesine LoadFrom neden olabilir. Bu bağlamın kullanılması serileştirme, atama ve bağımlılık çözümlemesi için beklenmeyen davranışlara neden olabilir. Genel olarak, bu sorunlardan kaçınmak için bağlama derlemelerin yüklenmesi Load önerilir. Bu MDA olmadan bir derlemenin hangi bağlama yüklendiğini belirlemek zordur.

Neden

Genel olarak, bir derleme, genel derleme LoadFrom önbelleği veya AppDomainSetup.ApplicationBase özelliği gibi bağlamın dışındaki Load bir yoldan yüklendiyse bağlama yüklenir.

Çözüm

Artık çağrılara gerek kalmayacak şekilde LoadFrom uygulamaları yapılandırın. Bunu yapmak için aşağıdaki teknikleri kullanabilirsiniz:

  • Derlemeleri genel derleme önbelleğine yükleyin.

  • Derlemeleri ApplicationBase için dizinine AppDomainyerleştirin. Varsayılan etki alanı söz konusu olduğunda, ApplicationBase işlemi başlatan yürütülebilir dosyayı içeren dizindir. Bu, derlemenin taşınması uygun değilse yeni AppDomain bir oluşturma da gerektirebilir.

  • Bağımlı derlemeler yürütülebilir dosyaya göre alt dizinlerdeyse, uygulama yapılandırma (.config) dosyanıza veya ikincil uygulama etki alanlarına bir yoklama yolu ekleyin.

Her durumda, kod yöntemini kullanacak Assembly.Load şekilde değiştirilebilir.

Çalışma Zamanı üzerindeki etkisi

MDA'nın CLR üzerinde herhangi bir etkisi yoktur. Bir yük isteğinin sonucu olarak kullanılan bağlamı bildirir.

Çıktı

MDA, derlemenin bağlama yüklendiğini LoadFrom bildirir. Derlemenin basit adını ve yolunu belirtir. Ayrıca bağlamı kullanmaktan LoadFrom kaçınmak için azaltmalar önerir.

Yapılandırma

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

Örnek

Aşağıdaki kod örneği, bu MDA'yi etkinleştirebilen bir durumu gösterir:

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

Ayrıca bkz.