我使用这个article并在项目中创建了多个类库。我想在内核中加载所有模块。
用于加载所有模块,我在MainViewModel中使用此代码
public MainViewModel()
{
IKernel kernel = new StandardKernel();
kernel.Load(AppDomain.CurrentDomain.GetAssemblies());
Plugins = kernel.GetAll<PluginBase>().ToList();
}
但不要在AppDomain.CurrentDomain.GetAssemblies()
答案 0 :(得分:2)
我将此代码用于加载程序集。我发现它there。
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))));