У меня есть приложение 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 стандарта? Почему это работает во время отладки, а не выпуска?