我正在使用 StructureMap 在我的应用程序开始时加载插件。在应用程序启动时,当我创建容器时,我会进行简单的扫描,例如:
internal static IContainer Init()
{
var container = new Container(a =>
{
a.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.AssembliesFromPath($"{AppDomain.CurrentDomain.BaseDirectory}Plugins");
});
});
ConfigureDebugSubstitutions(container);
return container;
}
但我在控制台中看到了这些错误:
StructureMap could not load assembly from file <filepath>
我最终通过手动将文件加载到 AppDomain 中来解决它,如下所示:
private static void LoadPluginAssemblies()
{
var pluginAssemblies = Directory.GetFiles($"{AppDomain.CurrentDomain.BaseDirectory}plugins", "*.dll");
pluginAssemblies.Each(a =>
{
Assembly.LoadFile(a);
});
}
但我很好奇为什么我一开始就从结构图中收到这条消息。我查看了代码,看起来任何错误都得到了处理。有什么想法吗?我使用的是 4.0.1.318 版本,直到我从 3.1.4.143 版本升级 StructureMap 时才注意到这一点。另外,如果重要的话,我正在使用 .Net v4.6.1。