Вы можете использовать сборку.загрузить в есть некоторые подробности?
В настоящее время я пытаюсь динамически загрузить сборку плагина в приложении monotouch.
Для этого я ссылаюсь на dll плагина в моем проекте приложения, устанавливая ограничитель в "sdk only", а затем пытаюсь вызвать Assembly.Load(filename)
в моем приложении, когда требуется плагин.
Возможен ли такой подход в monotouch? Есть ли специальный путь к файлу, который вам нужно включить? Или это не поддерживается в среде aot?
Примечание: очевидно, есть и другие способы добиться подобного эффекта - и у меня есть запасной план... но это мой предпочтительный маршрут (если я могу заставить его работать)
2 ответа:
Код типа:
var a = Assembly.Load ("mscorlib.dll"); Assert.NotNull (a);
Прекрасно работает как с симулятором, так и с устройствами. Однако параметр для
Load
являетсяassemblyString
, который является не именем файла (даже если вызванное исключение заставляет вас думать, что это так).Существует много других перегрузок (для
Load
) и другие методы тоже (например,LoadFrom
), но они не все могут работать внутри MonoTouch (так как некоторая поддержка времени выполнения может отсутствовать).Примечание
Обработка
mscorlib.dll
является специальной (и работает в большем количестве случаев чем другие сборки, то есть ярлыки). Однако методы, основанные на отражении, как представляется, работают, как и ожидалось, в большем числе случаев, например:string filename = System.IO.Path.GetFileName (GetType ().Assembly.Location); Assembly assembly = Assembly.ReflectionOnlyLoadFrom (filename);