不使用IDE,直接利用编译器处理源码,然后生成相应的exe文件,点击执行。下面就来说一下C#的编译器csc的用法.
csc编译器的配置
使用记事本编写一个C#程序,保存后将扩展名改为cs,存储在D盘中。这个文件会成为本例中的一个样本。代码大意为向命令行中写下“i love u”。
using System; namespace Wrox { public class MyFirstClass { static void Main() { Console.WriteLine("i love u!"); Console.ReadKey(); return; } } }
直接运行csc编译器会提示找不到命令,首先要进行环境变量的配置:
在.NET Framework的安装路径上,可以看到标识有本台机器上已经安装的.NET Framework各版本的文件夹,选择写有最新版本的文件夹进入。如本机中.NET Framework版本为“v4.0.30319”。具体的目录是:
C:\Windows\Microsoft.NET\Framework\v4.0.30319
把这个目录放到系统的path环境变量中。
此时就可以使用csc命令对cs文件进行编译了。在设置完环境变量后,cmd需要重启一次,才能执行csc命令。
把cmd切换到D盘中,就可以直接编译这个test.cs源码文件了。编译完成后就出现一个对应的test.exe可执行程序,点击就可以运行了。
csc的编译命令
1 ./refrence
此选项可使得当前编译工程使用指定文件中的公共类型信息。这个选项对于初学者是很重要的。此选项的简写是/r。你必须引用在程序代码中使用"using"关键字导入的所有文件,如果在你的程序中,使用了自己编写的类库,在编译时也必须引用。
例子:编译文件,并引用在程序中使用的文件
csc /r:system.dll;myExec.exe;myLibrary.dll myProject.cs
(注:其中那个myExec.exe和myLibrary.dll时自己创建的)
2 ./target
这个选项是告诉编译器你所想得到什么类型的输出文件。除非使用/target:module选项,其他选项创建的输出文件都包含着汇编名单。汇编名单存储着编译中所有文件的信息。在一个命令行中如果生成多个输出文件,但只创建一个汇编名单,并存储在第一个输出文件中。
下面是/target的4种用法:
/target:exe 创建一个可执行(EXE)的控制台应用程序
/target:library 创建一个代码库(DLL)
/target:winexe 创建一个windows程序(EXE)
/target:module 创建一个模块(DLL)
例子:
csc /target:exe myProj.cs // 创建一个EXE文件 csc /target:winexe myProject.cs file://创建一个windows程序 csc /target:library myProject.cs file://创建一个代码库 csc /target:module myProject.cs file://创建一个模块
3. /debug
此选项是在调试时候使用的,当调试者启用了这个选项来调试自己的程序,将会创建一个.pdb文件,并把各种调试信息写到此文件里。有2中选项来指定调试的类型:
/debug [+/-] :当选用/debug +就会把创建.pdb文件,并把调试信息存储到里面;/debug -是一个缺省设置,就是不产生任何调试信息。
/debug:[full/pdbonly] :当使用/debug:full就是创建缺省的调试信息,有点类似/debug+选项。/debug: pdbonly选项是创建.pdb文件,并且你只能使用源代码调试在调试工具里。
例子:编译Hello.cs并且为Hello.cs创建调试信息
csc /debug+ HelloWorld.cs
4. /define
此选项在程序中定义了一个符号,他和在源程序中使用#define预处理程序指示功能相同,此符号保持已定义状态,直到源文件中的#undef指示符删除定义或者编译器已到达了文件末尾。你可以用/d简写来代替。
例子:下面是my.cs的源程序
using System; public class myBuild { public static void Main() { #if (final) Console.WriteLine("Final Build"); #else Console.WriteLine("Trial Build"); #endif Console.ReadKey(); } }
如果用csc /define:final my.cs来编译就会显示"Final Build",如果没有/define,编译后执行就会显示"Trial Build"。