在新的应用程序域中加载插件

本文关键字:加载 插件 应用程序域 | 更新日期: 2023-09-27 18:32:08

我知道有很多关于在新应用程序域中加载插件的线程。我的错,我以前没有读过它们。我有这个学校项目 - 基于插件的应用程序,它几乎完成了。除了一个重要的点 - 插件必须在新域中加载。我使用这篇文章创建基于插件的应用程序 http://www.codeproject.com/Articles/6334/Plug-ins-in-C

目前正在及时按下项目截止日期,并且我被困在同一应用程序域中的插件中。您能否告诉我是否可以在链接中对应用程序进行一些简单的更改以在单独的应用程序域中加载插件?我真的不会从一开始就编写应用程序。:(

谢谢你的所有建议。

在新的应用程序域中加载插件

试试这个

AppDomain domain = AppDomain.CreateDomain("domain name");
// TODO: configure appdomain as needed
// to load the dll and get a type you can reference in your current appdomain
string pathToDll = @"C:'somedir'Mydll.dll";
Type myType = typeof(SomeType);
SomeType myObj = (SomeType)domain.CreateInstanceFromAndUnwrap(pathToDll, myType.FullName);

// to just load the dll into the new appdomain
byte[] file = File.ReadAllBytes(pathToDll);
domain.Load(file);

我曾经尝试将我的WinForms应用程序划分为单独的应用程序域,但这并不容易。但是,在您的情况下,这应该不是很困难。

尝试创建新的 AppDomain 并在其中加载插件类型。然后使用反射或公共基接口与该对象通信(请记住,如果要避免将插件程序集加载到主机 AppDomain 中,则不能在主机应用程序中引用插件类型)。

您可能还想查看 System.AddIn 命名空间 - 它是专门为简化插件开发而实现的。

您可以使用System.Addin。查看此示例(或本 CodePlex 页面中的其他示例)

http://clraddins.codeplex.com/releases/view/9454