设置 AssemblyName.CodeBase 是否会强制在 LoadFrom 上下文中加载程序集?
我正在研究一种插件系统。我需要能够使用 Type.GetType 等...在我的代码中的任何地方,我都不必知道 Type 是否来自插件 dll。
我的插件位于我的应用程序(windows/web)的 bin 目录下的 Plugins 文件夹中,每个插件都在它自己的文件夹中。
我将探测路径设置为 Plugins(或 bin;bin\Plugins for web),即使它没有任何区别,因为它们位于子文件夹中。
我像这样加载我的插件
pluginInfo.EntryAssemblyName = new AssemblyName(myAssemblyName);
pluginInfo.EntryAssemblyName.CodeBase = assemblyPath;
pluginInfo.EntryAssembly = Assembly.Load(pluginInfo.EntryAssemblyName);
注意:PluginInfo 只是一个保持我的插件状态的类。
我想知道,因为我设置了程序集名称 Assembly.Load 的 CodeBase 属性,即使它不在探测路径中也能够找到我的程序集,这是否意味着程序集在默认上下文中加载或从上下文中加载?
再次为入口程序集引发 AssemblyResolve 事件是否正常?