Я хочу загрузить Сборка A во время выполнения. Эта сборка A существует в подпапке приложения и имеет зависимости во время выполнения от некоторых других собственных сборок, некоторых jar-файлов и папки jre (поэтому мы говорим о некоторой оболочке java). Все эти зависимости существуют в той же папке, что и Сборка A .
Диаграмма будет выглядеть примерно так:
Проблема is:
Поскольку Assembly A Зависимости времени выполнения не существуют в папке сборки приложения (потребителя), я получаю исключение и не могу его использовать.
Вот пример исходного кода для загрузки сборки во время выполнения и использования экземпляра типа, принадлежащего этой сборке. Исключение возникает, когда я вызываю _ = instance.GetSomething()
. Исключение:
System.TypeInitializationException: 'Инициализатор типа для AssemblyA_Dependency.Type' вызвал исключение. '
var assembly = Assembly.LoadFrom(@"Releases\VersionA\AssemblyA.dll");
var sdkProxyType = assembly
.GetExportedTypes()
.Where(type => typeof(ISdkProxy).IsAssignableFrom(type))
.First();
var instance = (ISdkProxy)Activator.CreateInstance(sdkProxyType);
_ = instance.GetSomething();
PS: Имейте в виду, что если я скопирую все Сборка зависимостей от папки пользовательской сборки будет работать нормально.
Есть ли способ решить эту проблему?