这可能是一个非常幼稚的问题,但我想知道这些内容是如何工作的:假设我们在Visual中有10个项目,其中5个使用相对路径引用外部DLL (例如Ext.dll)。
现在,当我的应用程序在客户端机器上部署运行时,Ext.dll是否会在内存中加载5次?还是只加载一次并被其他引用项目使用?
发布于 2014-02-11 17:47:50
程序集只在内存中加载一次。
CLR首先检查程序集是否已在当前AppDomain中加载,如果不是按AppDomain加载程序集,则从已加载的程序集中解析符号。
当然,除非您正在手动创建另一个具有自己的程序集的AppDomain。
此外,具有相同版本的程序集不能同时加载到内存中。CLR不允许那样。但是,您可以在内存中加载同一程序集的不同版本,如果程序集被强签名,也可以加载该版本。但是在您的情况下,版本是相同的,所以CLR无论如何不会加载相同的程序集两次。
如果要在特定时间间隔检查哪些程序集已加载到内存中,则可以使用这段代码获取所有已加载的程序集:
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();发布于 2014-02-11 17:52:07
https://stackoverflow.com/questions/21709190
复制相似问题