我目前正在尝试在单点触控应用程序中动态加载插件程序集。

为此,我在我的应用程序项目中引用了插件 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/

10-10 15:16