我目前正在尝试在单点触控应用程序中动态加载插件程序集。
为此,我在我的应用程序项目中引用了插件 dll,将 limker 设置为“仅 sdk”,然后在需要插件时尝试在我的应用程序中调用 Assembly.Load(filename)
。
这与我之前在 monodroid 中成功使用的方法相同。但是,目前,这在单点触控中失败并出现 FileLoadException。
这种方法在单点触控中可行吗?是否需要包含特殊的文件路径?还是aot环境不支持这个?
注意:显然还有其他方法可以达到类似的效果 - 我确实有一个备用计划......但这是我的首选路线(如果我可以做到的话)
最佳答案
代码如:
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);
关于xamarin.ios - 您可以在单点触控中使用 assembly.load 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12401588/