Не удалось загрузить сборку из пользовательской папки с помощью отражения - PullRequest
1 голос
/ 30 марта 2020

У меня есть приложение Xamarin Forms для Android, в котором указана моя dll. Давайте назовем это A.dll (. net стандарт 2.0).

У меня есть 2-й dll в папке пользователя (Environment.GetFolderPath(Environment.SpecialFolder.Personal)). Давайте назовем это B.dll (. net также стандарт 2.0)

Fuction в A.dll пытается загрузить класс из B.dll, используя отражение:

var privatePath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var asmPath = Path.Combine(privatePath, "B.dll");
if (File.Exists(asmPath))
{
    var asm = Assembly.LoadFrom(asmPath);
    foreach (var t in asm.GetTypes()) { }
}

Выдает исключение в методе GetTypes():

Не удалось загрузить нестандартный файл или сборку, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51 'или одна из ее зависимостей.

Странно то, что он работает в сборке Debug во время отладки (в эмуляторе), но не при попытке выпустить сборку (также в эмуляторе).

Вопрос в том, такая загрузка dll вообще возможна? Почему он не может загрузить сборку 'netstandard', когда A.dll уже загружен и имеет ту же версию. net стандарта? Почему это работает во время отладки, а не выпуска?

1 Ответ

1 голос
/ 31 марта 2020

Благодаря комментарию sisi я обнаружил, что мне нужно изменить параметр связывания (в Android Параметры проекта *. Android) с «Только сборки SDK» на « Нет ». Теперь это работает.

...