.net中的插件架构:卸载

时间:2010-03-12 01:04:48

标签: c# .net plugins

我需要在c#/ .net中实现插件架构才能加载

  • 自定义用户定义的操作
  • 自定义数据网格/转换/ ...的数据类型处理代码

来自非静态链接的程序集文件。

因为应用程序必须处理许多自定义用户定义的操作,所以Iam需要在执行后卸载它们以减少内存使用。

我发现了几篇关于插件架构的好文章,例如:

但他们都没有给我足够的香肠来正确卸下组件。

由于要分发程序并且用户定义的操作(如名称所示)用户定义:如何防止程序集执行恶意代码(例如关闭我的程序,删除文件)?

你们中有没有遇到其他陷阱吗?

3 个答案:

答案 0 :(得分:4)

一种技术是将其他程序集加载到单独的AppDomain中。卸载AppDomain将卸载程序集。

答案 1 :(得分:4)

您是否考虑过使用MS的Add-Ins和Extensiblity框架? http://msdn.microsoft.com/en-us/magazine/cc163476.aspx

迈克尔

答案 2 :(得分:1)

您无法卸载单个程序集。您只能通过卸载它们所属的AppDomain来卸载一组程序集。

这实际上是SQL CLR的工作方式,以及ASP.NET - 通过为用户提供的程序集提供临时AppDomain。