1

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

我目前正赶上项目截止日期,并且我被同一应用程序域中的插件困住了。如果可以对链接中的应用程序进行一些简单的更改以在单独的应用程序域中加载插件,您能否建议我?我真的不会从一开始就编写应用程序。:(

感谢您的所有建议。

4

3 回答 3

2

尝试这个

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);
于 2012-04-24T13:52:11.527 回答
1

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

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

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

于 2012-04-24T13:35:22.767 回答
0

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

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

于 2012-04-24T13:41:01.317 回答