我正在尝试在运行时将DLL加载到我的应用程序中:
Assembly dllAssembly = Assembly.LoadFile(dllFileInfo.FullName);
assemblies.Add(dllAssembly);
foreach (Type type in dllAssembly.GetExportedTypes())
{
if (typeof(IPlugin).IsAssignableFrom(type))
{
IPlugin i = (IPlugin)Activator.CreateInstance(type);
PluginManager.Add(i);
}
}
但是,问题是LoadFile
会阻止程序集(只要IIS正在运行就无法替换它)。通过引用加载的DLL不会发生这种情况。甚至更整洁,它们可以被替换,IIS会自动使用新的DLL重新启动应用程序。
如何在运行时加载的插件DLL获得相同的行为?