如何在不重新编译的情况下为C#应用程序添加功能

时间:2012-03-13 17:03:16

标签: c# .net dynamic compilation

人们在没有重新编译的情况下找到/用于向.NET / C#应用添加功能的方式是什么?

我想到的方法是让代码查找要读取的文件,解析该文件,然后根据文件中包含的内容动态创建控件及其事件处理程序等(可能是xml文件)。

或者是否会动态加载.DLL被视为“不重新编译”?

任何想法/“战争故事”?

3 个答案:

答案 0 :(得分:6)

所有你需要的 - MEF - Managed Extensibility Framework

答案 1 :(得分:2)

对于行为定义明确的相当简单的案例:

为您的插件定义一个界面。 在dll中实现接口。 使用Assembly.LoadFrom。

加载dll

我也会为每个dll添加一个GUID,以便您可以区分它们。

答案 2 :(得分:1)

看看ASP.Net是如何做到的 - 你可以在网站运行时添加ASPX / ASPX.cs文件。简短版本:ASP.Net监听文件更改并将新文件编译到新程序集中,而不是加载到现有AppDomain中以用于呈现新页面。