在.NET中动态加载不同的程序集版本

时间:2009-05-20 20:48:57

标签: .net dynamic assemblies

使用System.AsDombly.Load或使用System.AppDomain.CurrentDomain.CreateInstanceFromAndUnwrap将程序集直接加载到AppDomain中是否更好?我特别感兴趣的是调用在同一进程中运行的同一程序集的不同版本。我认为使用CreateInstanceFromAndUnwrap你的程序集必须具有[serializable]属性,但为什么会这样?

编辑:我正在尝试加载的程序集与调用者不在同一个位置。

1 个答案:

答案 0 :(得分:0)

由于位置不同,我猜你的意思是文件系统的其他地方,如果不是,请告诉我。

最好使用System.Assembly.Load,因为它是通用的低级程序集加载器。

另外,您提到要加载不同的版本。为此,您必须设置辅助AppDomain以加载程序集,然后在完成后卸载该AppDomain并为新程序集版本创建一个新的程序集,因为.Net不支持从给定的卸载程序集应用程序域。

CreateInstanceFromAndUnwrap用于加载以某种方式“发送”给你的代码,因此它所处理的东西必须是可序列化的。