技术开发 频道

.NET中的幕后英雄:MSCOREE.DLL

IT168 技术文档现在做.NET Framework的开发的朋友应该是越来越多了,但是可能并非人人都对MSCOREE.DLL非常了解。而事实上,毫不夸张地说,MSCOREE.DLL是.NET Framework中最为核心的DLL之一,没有这个DLL,托管程序根本无法开始执行起来,但是由于这个DLL藏在System32目录下,根本无人问津,可以说是有点委屈了这位.NET Framework中的幕后英雄。本文主要讨论MSCOREE.DLL的几大作用,以及MSCOREE.DLL的兼容性问题。

MSCOREE是托管程序的入口点 

让我们来做一个小实验:
首先写一个最最简单的Hello World程序,用csc编译(当然你用VS我也没意见):

public class Program { public static void Main(string[] args) { System.Console.WriteLine("Hello World!"); } }

然后,在命令行中键入:

C:\Windows\System32> ren mscoree.dll mscoree_.dll
请注意在Vista系统上需提升权限,否则重命名失败。
之后,运行刚才编译出来的EXE程序。Windows直接报错:


然后,再把mscoree.dll名字改回去,再次运行A.EXE,这次正确打印出了Hello World


那么为什么一旦没有MSCOREE.DLL,就算是最简单的Hello World也无法运行呢?

有在Windows用C/C++编程的朋友们应该熟悉上面那个出错对话框的意思,这个对话框通常在程序找不到所需的DLL的时候出现。我们可以通过运行Visual Studio中自带的Depends.exe来查看A.EXE的对于DLL的依赖关系:

0
相关文章