Я пытаюсь получить список сборок. Но я столкнулся с исключением в portable
проекте UWP.
Следующий код работает в
.netframework
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
Xamarin portable
var currentdomain = typeof(string).GetTypeInfo().Assembly.GetType("System.AppDomain").GetRuntimeProperty("CurrentDomain").GetMethod.Invoke(null, new object[] { });
var getassemblies = currentdomain.GetType().GetRuntimeMethod("GetAssemblies", new Type[] { });
var assemblies = getassemblies.Invoke(currentdomain, new object[] { }) as Assembly[];
Но тот же код выше не работает в UWP portable
. (Я думаю, что в UWP портативный тоже работает)
При получении первой строки у меня возникает следующая проблема
'typeof (string) .GetTypeInfo (). Assembly.GetType ("System.AppDomain"). GetRuntimeProperty ("CurrentDomain"). GetMethod.Invoke (null, new object [] {})' вызвала исключение типа 'System.InvalidOperationException'
Данные: {System.Collections.ListDictionaryInternal}
HResult: -2146233079
HelpLink: ноль
InnerException: ноль
Сообщение: «API« System.AppDomain.get_CurrentDomain () »не может использоваться на текущей платформе. См. http://go.microsoft.com/fwlink/?LinkId=248273 для получения дополнительной информации».
Источник: "Мскорлиб"
StackTrace: "at System.Reflection.RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, связыватель Binder, параметры Object [], CultureInfo culture) \ r \ n в System.Reflection.MethodBase.Invoke (Object obj, Object [] параметры) «
Если я использую код ниже
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
Assembly[] assembly = ((dynamic)Thread.GetDomain()).GetAssemblies() as Assembly[];
var loadedAssemblies = ((dynamic)Thread.GetDomain()).GetAssemblies() as Assembly[];
тогда я получаю следующую ошибку.
Имя AppDomain не существует в текущем контексте
Имя 'Нить' не существует в текущем контексте
Имя 'Нить' не существует в текущем контексте
Я проверил Есть ли альтернатива AppDomain.GetAssemblies в переносимой библиотеке? , но это не помогло исправить мою проблему.