2.1.NET Framework部署目标
Microsoft
Windows多年来因不稳定和复杂而口碑不佳。
造成的原因:
1.应用程序都使用来自微软和厂商的动态链接库(dynamic-link
library,DLL),可能互相会干扰破坏。
2.安装的复杂性:应用程序安装需要将文件复制到目录、更新注册表、创建快捷方式。不能轻松将应用程序转移到另一天电脑,也无法保证卸载干净。
3.安全性:程序可能后台操作一些用户不希望发生的动作,比如下载,执行危险操作等。
附注:
.NET
Framew正尝试解决DLL hell的问题,但目前快捷方式的问题还不能解决。安全性上,.NET Framework包含一个名为“代码访问安全性”(code
access security)的安全模式,可以让用户很好的控制应用程序的权限。
2.2将类型生成到模块中
简单示例代码:
public sealed class Programe{ public static void Main(){ System.Console.WriteLine("Hi"); } }
解释:System.Console是微软已经实现好的类型,IL代码存储在MSCorLib.dll文件中。
命令执行:
csc.exe /out.Program.exe /t:exe
/r:MSCorLib.dll Program.cs
生成名为Program的
/out:Programe.exe
可执行文件
/t[target]:exe
Win32控制台应用程序类型
/r[reference]:MSCorLib.dll开关:告知编译器引用类型的位置,使之能解析。
/t:exe
控制台界面(console user interface,CUI)
/t:winexe图形界面(graphical user
interface,GUI)
MSCorLib.dll包含了所有核心类型:Byte,Char,String,Int32等等,C#编译器会自动默认引用。也可以通过/nostdlib开关来禁止引用。
故上面代码可简化为:
csc.exe
/out.Program.exe /t:exe Program.cs
另外,/out.Program.exe
/t:exe为C#编译器默认设定,继续简化为:
csc.exe
Program.cs
生成的Programe.exe文件的实质:
是标准的PE(可移植执行体,Portable
Executable)文件。
响应文件:
响应文件是包含一组编译器命令开关的文本文件。执行CSC.exe时,编译器会打开响应文件,使用其中的所有开关。
假如响应文件MyProject.rsp:
/out:MyProject.exe
/target:winexe
让CSC.exe使用这些设置,可以如下调用:
csc.exe @MyProject.rsp
CodeFile1.cs CodeFile2.cs
第一部分 CLR基础:第2章 生成、打包、部署和管理应用程序及类型
原文:http://www.cnblogs.com/zxx193/p/3552671.html