2

我使用这篇文章并在项目中创建了多个类库。我想将所有模块加载到内核中。

为了加载所有模块,我在 MainViewModel 中使用此代码

public MainViewModel()
{
    IKernel kernel = new StandardKernel();
    kernel.Load(AppDomain.CurrentDomain.GetAssemblies());
    Plugins = kernel.GetAll<PluginBase>().ToList();
}

但不要加载模块(插件)AppDomain.CurrentDomain.GetAssemblies()

4

1 回答 1

2

我使用此代码加载程序集。我在那里找到了它。

var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
var loadedPaths = loadedAssemblies.Select(a => a.Location).ToArray();

var referencedPaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");
var toLoad = referencedPaths.Where(r => !loadedPaths.Contains(r, StringComparer.InvariantCultureIgnoreCase)).ToList();
toLoad.ForEach(path => loadedAssemblies.Add(AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(path))));
于 2013-07-29T06:22:44.990 回答