Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Примечание.
Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
Помощник по отладке управляемого кода (MDA) loadFromContext активируется при загрузке сборки в контекст LoadFrom. Эта ситуация может возникнуть в результате вызова метода Assembly.LoadFrom или других аналогичных методов.
Симптомы
Использование некоторых методов загрузчика может привести к загрузке сборок в контекст LoadFrom. Использование этого контекста может привести к неожиданному поведению при сериализации, приведении типов и разрешении зависимостей. Чтобы избежать этих проблем, рекомендуется загружать сборки в контекст Load. Без этого помощника по отладке управляемого кода определить, в какой контекст загружена сборка, трудно.
Причина
Как правило, при использовании пути за пределами контекста Load, например глобального кэша сборок или свойства AppDomainSetup.ApplicationBase, сборка загружается в контекст LoadFrom.
Разрешение
Настройте приложения таким образом, чтобы вызовы LoadFrom больше не требовались. Это можно сделать следующими способами:
Установите сборки в глобальный кэш сборок.
Поместите сборки в каталог ApplicationBase для AppDomain. Для домена по умолчанию каталог ApplicationBase содержит исполняемый файл, который запустил процесс. Если перемещать сборку неудобно, также может потребоваться создать новый AppDomain.
Если зависимые сборки находятся в дочерних папках по отношению к исполняемому файлу, добавьте путь проверки в файл конфигурации приложения (.config) или во вторичные домены приложения.
В каждом случае можно изменить код, включив в него метод Assembly.Load.
Влияние на среду выполнения
Помощник по отладке управляемого кода не оказывает никакого воздействия на общеязыковую среду выполнения (CLR). В качестве результата запроса на загрузку он возвращает используемый контекст.
Выходные данные
Помощник по отладке управляемого кода сообщает, что сборка была загружена в контекст LoadFrom. В выводе указаны простое имя сборки и путь к ней. В выводе также указаны рекомендации, позволяющие избежать использования контекста LoadFrom.
Настройка
<mdaConfig>
<assistants>
<loadFromContext />
</assistants>
</mdaConfig>
Пример
В следующем примере кода показана ситуация, которая может привести к запуску помощника по отладке управляемого кода:
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");
}
}
}