loadFromContext MDA

The loadFromContext مدارة تصحيح الأخطاء assistant (MDA) هو activated if an تجميع هو تم تحميله في the LoadFrom سياق. يمكن أن يحدث هذا الموقف كـ نتيجة استدعاء Assembly.LoadFromأو الأخرى وظائف مشابهة.

الأعراض

استخدم لتحميل بعض وظائف يمكن أن ينتج تجميعات التي يتم تحميلها في LoadFromسياق. يمكن أن يؤدي استخدام هذا سياق سلوكاً غير متوقع للسلسلة، بث، و دقة التبعية. بشكل عام، فإنه هو يستحسن أن تكون تجميعات المحملة في Loadسياق لتجنب هذه المشاكل. هو صعوبة تحديد أي سياق تجميع تم تم تحميله في دون th هو MDA.

السبب

w كـ sembly بشكل عام، كـ تحميله في LoadFromسياق إذا w كـ تحميل من مسار خارج Loadسياق، مثل كـ كـ sembly العمومية ذاكرة التخزين المؤقت أو AppDomainSetup.ApplicationBaseخاصية.

الدقة

تكوين التطبيقات مثل تلك LoadFromمكالمات تكون لا تعد ضرورية. يمكنك استخدم الأساليب التالية للقيام بذلك:

  • قم بتثبيت تجميعات في مخزن التجميع العمومي المؤقت.

  • قم بوضع تجميعات في ApplicationBaseالدليل AppDomain. في حالة من مجال الافتراضي، ApplicationBaseهو الدليل الذي يحتوي على الملف التنفيذي ملف التي بدأت عملية. Th هو قد يتطلب أيضا بإنشاء جديد AppDomainإذا أنه هو غير ملائمة للتنقل في تجميع.

  • قم بإضافة مسار probing لملف تكوين (.config) تطبيق الخاص بك أو لمجالات ثانوية للتطبيق في حالة تجميعات التابعة في الدلائل التابعة نسبة إلى الملف التنفيذي.

يمكن تم تغييره تعليمات برمجية في كل حالة إلى استخدام Assembly.Loadالأسلوب.

التأثير تشغيل وقت التشغيل

MDA ليس لها أي تأثير تشغيل CLR. عن سياق ذلك w كـ استخدام كـ نتيجة طلب التحميل.

الإخراج

تقارير MDA تم تجميع تحميلها في LoadFromسياق. تحدد اسم تجميع البسيطة و المسار. أيضا يقترح mitigations إلى تجنب استخدام LoadFromسياق.

التكوين

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

مثال

يوضح مثال التعليمة البرمجية التالية يمكن تنشيطها 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");
        }
    }
}

راجع أيضًا:

المبادئ

تشخيص الأخطاء مع المساعدين التصحيح مدارة