Блок. ReflectionOnlyLoadFrom, не работающий

У меня есть блок Library1.dll который содержит некоторые Интерфейсы, которые были сериализированы как массив байтов в базу данных. По некоторым причинам мы должны изменить свойства Interface и определение. таким образом, теперь я пишу утилиту миграции. Таким образом, у меня есть 2 версии Library1.dll , В моей утилите я создал папку, где я храню новую версию Library1.dll . Эта утилита в свою очередь также ссылки Library1.dll следовательно в мусорном ведре папка содержит Library1.dll но этот dll компилируется на более старой версии. Моя новая версия Library1.dll хранится в частном пути, к которому я являюсь передающим Assembly.ReflectionOnlyLoadFrom функция для инстанцирования и следовательно GetTypes на блоке, загруженном, который далее позволил бы мне сделать преобразование данных.

Но я всегда добираюсь ReflectionTypeLoadException при попытке загрузиться Library1.dll от частного пути.

Помогите парням!!!. любая справка ценилась бы. Я действительно застреваю.

Thanks, AG

9
задан GETah 26 April 2013 в 12:57
поделиться

1 ответ

Если ваша библиотека ссылается на другую dll, GetTypes завершится ошибкой при попадании в тип, использующий внешний тип. В отличие от обычной загрузки сборки, загрузка сборки ReflectionOnly не разрешает зависимости. Вы можете либо подписаться на AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve и загрузить зависимости по мере необходимости, либо вы можете предварительно загрузить их.

Это код, который я использую для этого:

var assembly = Assembly.ReflectionOnlyLoadFrom(assemblyPath);
foreach (var assemblyName in assembly.GetReferencedAssemblies()) {
  try {
    Assembly.ReflectionOnlyLoad(assemblyName.FullName);
  } catch {
    Assembly.ReflectionOnlyLoadFrom(Path.Combine(Path.GetDirectoryName(assemblyPath), assemblyName.Name + ".dll"));
  }
}

Это попытается загрузить все зависимости загруженной сборки, предназначенной только для отражения, сначала по полному имени, затем по пути (при условии, что зависимость находится в том же каталоге, что и загруженная сборка ).

19
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: