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