Загрузка сборки происходит дважды

Мне нужно зарегистрировать некоторые типы, например, MyHandler: IRequest в autofac. Эти типы находятся в сборке «A», которая до сих пор не упоминалась и, следовательно, не загружалась в домен приложения. Я попытался загрузить сборку "A" с помощью Assembly.LoadFile(path), она загружается в домен приложения, но позже эта же dll снова загружается в домен приложения с помощью среды выполнения .net, и в домене приложения есть два экземпляра "A", что является проблемой в моем сценарии. использование регистрации Autofac также не поможет. Я просто хочу знать, чтобы предотвратить загрузку «A» во время выполнения, поскольку я уже загрузил его.

LoadFile() неверен в 99,9% всех случаев, вместо этого используйте LoadFrom(). Вы когда-либо используете LoadFile() только в том случае, если вы хочу загружаете сборку более одного раза, это очень редко.

Hans Passant 15.05.2019 12:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
1 272
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

С помощью метода Загрузить файл вы можете загружать сборки несколько раз из разных ПУТИ. Вместо LoadFile() попробуйте Загрузить из() или просто Нагрузка(). Последние методы гарантируют, что ваша сборка будет загружена только один раз.

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.loadfrom?view=netframework-4.8

Спасибо. Кстати, где в документации сказано, что LoadFile будет вызывать многократную загрузку сборок, а LoadFrom() и Load() - нет.

Ali 15.05.2019 21:17

в разделе комментариев ПримечанияИспользуйте метод LoadFile для загрузки и проверки сборок с одинаковыми идентификаторами, но расположенными по разным путям. LoadFile не загружает файлы в контекст загрузки и не разрешает зависимости с использованием пути загрузки, как это делает метод LoadFrom. LoadFile полезен в этом ограниченном сценарии, поскольку LoadFrom нельзя использовать для загрузки сборок с одинаковыми идентификаторами, но разными путями; он загрузит только первую такую ​​сборку.

user1832484 15.03.2020 13:44

Другие вопросы по теме