Composable.AddLocation对我不起作用,甚至加载了dll(我可以在输出窗口中看到它),但GetExport总是返回null。 我使用了http://xsockets.net/docs/the-plugin-framework
中的标准示例这样可行:
Composable.LoadAssembly(Path.Combine(Helper.PluginsDirectory, "testplugin.dll"));
但这不是:
Composable.AddLocation(Helper.PluginsDirectory, SearchOption.AllDirectories, false);
所有其他代码都相同。
P.S。这是解决方案:当我删除XSockets Plug-in Framework dll和dll时,Composable.AddLocation开始工作,它描述了插件目录中的插件接口。
答案 0 :(得分:0)
我的猜测是这样的: 你有" Helper.PluginsDirectory"中的文件。已经由插件框架加载。 如果你加载其中一个,你将无法获得导出。
解决方法......
class Program
{
static void Main(string[] args)
{
Composable.RegisterExport<IAnimal>();
//Helper that fix your issue...
Helpers.AddLocation(@"C:\Users\Uffe\Desktop\DynamicAssemblies\Implementation\bin\Debug", SearchOption.AllDirectories);
Composable.ReCompose();
var a = Composable.GetExports<IAnimal>();
foreach (var animal in a)
{
animal.Says();
}
Console.ReadLine();
}
}
public static class Helpers
{
public static void AddLocation(string location, System.IO.SearchOption searchOption)
{
foreach (var assembly in Directory.GetFiles(location, "*.dll", searchOption))
{
AssemblyName verifyName = AssemblyName.GetAssemblyName(assembly);
if(!Composable.LoadedAssemblies.Any(p => p.FullName == verifyName.FullName))
Composable.LoadAssembly(assembly);
}
}
}