日期:2014-05-17  浏览次数:20854 次

程序执行时,mscorlib.dll的代码会全部载入内存还是只载入必须的那部分代码?
我在写程序的过程中想到如题的问题。程序代码如下:

static void Main(string[] args)
{
//获得当前应用程序已经加载的程序集
System.Reflection.Assembly[] asm = System.AppDomain.CurrentDomain.GetAssemblies();
foreach (System.Reflection.Assembly item in asm)
{
  string s = item.FullName;
  System.Console.WriteLine(s.Substring(0,s.IndexOf(',')));
}
System.Console.ReadKey();
}

编译执行后打印mscorlib和本程序集名。
我知道mscorlib.dll这个程序集里包含了.Net的很多基本类,我当前的程序只是调用了几个方法而已,在程序执行的时候会将整个mscorlib的代码全部加载进内存吗?
mscorlib 程序集

------解决方案--------------------
当然是全部。

不必担心浪费,它是共享的,你不用别人还用呢
------解决方案--------------------
这就像你在程序中引用了某个dll,你只使用到里面的一个方法,当你发布的时候,你会发现,这个dll会和你的程序“完整”的在一起,只不过你只使用到里面的一小部分而已。