中国开发网: 论坛: .NET/C#: 贴子 495582
李战
备一下
记事本编写的C#程序

常常在论坛里听见高手们教育菜鸟说“用记事本也能写程序”,菜鸟们无不惊愕。其实,这不是什么新鲜事,我们就来做一做。
  我们首先打开记事本,编写下面的代码:



class A{static void Main(){}}





这就是世界上最最简单的C#程序!它什么也不做,甚至不输出“Hello Word”,不过它确可以正确运行。

请将以上代码保存到某个目录,并取名A.cs文件。然后,打开Windows的命令提示符窗口,并在命令提示符下进入A.cs文件所在的目录。输入:

csc A.cs

其中,csc是C#的编译程序,一般位于C:\WINDOWS\Microsoft.NET\Framework\vXXX目录下(其中的XXX是Framework版本号)。所以,要想以上命令正确执行,请首先将该目录加入当前的环境变量中。

编译命令执行后,将在该目录下生成一个A.exe的可执行文件。如果你此时在该目录的命令行下输入A.exe,程序将被执行,然后结束退出。如果,你在Windows 的资源管理器中双击运行此A.exe文件,你将看一个控制台窗口一闪而过,表示该程序已经正确执行。

没有比这个更简单的C#程序了,再减少其中的任何一个字符,都会导致编译警告或错误。其他的能正确编译和运行的C#程序都不会比这个更短,只有29个字节。

用记事本写完这个最最简单的C#程序之后,是不是已经有点儿高手的感觉了?

虽然,这个程序什么也不做,但我们却要从这里敲开.NET的原子世界。



这个A.exe到底和以前的可执行文件有什么不同呢?可以让我们的老朋友depends来看看嘛,depends可是分析可执行模块引用关系的好帮手。用depends打开A.exe文件后,你可以看到以下信息的窗口:






从这个窗口中可以明显看出,A.exe引入了唯一的一个MSCOREE.DLL文件。这是个什么文件呢?

搜索硬盘,可以发现MSCOREE.DLL位于C:\WINDOWS\system32目录下。查阅其属性的版本信息可以得知其描述为:Microsoft .NET Runtime Execution Engine,即,微软.NET运行时执行引擎。

在MSCOREE.DLL的被引用列表中,只存在唯一的_CorExeMain的入口点函数。查阅有关_CorExeMain函数的资料,我们可以得知这里才是进入.NET程序运行空间的大门。
李战(leadzen)

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录