手动使用Csc命令编译C#文件

      做为一名C#程序员,构建net应用程序的时候有许多IDE可以选择,相信大家用得最多的就是Visual Studio吧!在你不使用visual studio工具的时候,你是否有别的选择呢,当然有,比如TextPad和NotePad++之类的!在这里我们将探讨如何使用C#命令编译器csc.exe以及史上最简单的编辑器--记事本(NotePad).
      首先的工作是要先装.Net FrameWork 3.5SDK,当然装过visual studio的同学就不需要了,安装这个ide的时候,微软就帮我们默认安装了这个SDK了(下载地址:http://msdn.micro-soft.com/netframework)
   尽管你可能未用过notepad进行编程(为了提高开发效率),但理解如何亲手编译自己的代码文件的基本知识还是很重要的。

   开始吧,打开记事本(开始--程序--附件--记事本),然后键入以下代码
using System;

class TestApp
{
  static void Main()
  {
    Console.WriteLine("andy测试");
  Console.Read();
  }
}

然后保存为TestApp.cs文件,再将他编译成一个可运行的文件,装了netframework3.5之后,一般在此目录(C:\WINDOWS\Microsoft.NET\Framework\v3.5)下可以找到csc.exe这个文件,然后你打开运行命令窗口(开始--运行--输入"cmd"),再把当前路径转到上面那个目录下(一般为C:\WINDOWS\Microsoft.NET\Framework\v3.5\),然后你试着输入csc -?,如果一切正常的话,应该可以看到C#命令行编译器的命令行参数列表.

为了把我们刚刚写的那个类编译成控制台应用程序,我们只需在命令行中输入 csc 文件名(例:csc c:\TestApp.cs),然后在命令行当前目录下会生成一个TestApp.exe文件,这个就是最终的运行文件了! 这里的csc 文件名,只是一个缩写而以,全命令应该是这样 csc /target:exe 文件名,只是/traget:exe是C#编译器的默认输出而以!具体的命令可输入csc -? 参考。。

  上面看上去好像已经完成了一个过程!但如果我们的程序需要引用外部的程序集,那应该怎么办呢?让我们修改TestApp应用程序,显示一个Windows的窗体消息框吧!请键入以下代码:
using System;
using System.Windows.Forms;   //千万记得要加上这一行
class TestApp
{
  static void Main()
  {
    Console.WriteLine("andy测试");
    MessageBox.Show("哈罗");  //千万记得要加上这一行
  Console.Read();
  }
}

由于引用了外部的程序集,所以我们在编译时,也应该在命令中引用外部的程序集(PS:msCorlib.dll是默认引用的)
编译和刚刚一样,只是命令稍微有些不同而以,请输入: csc /r:System.Windows.Forms.dll 文件名(csc /r:System.Windows.Forms.dll c:\TestApp.cs),这样就搞定了!

这时,可能又会有朋友问,那我想引用多个外部的程序集,又怎么办的!其实这个很简单,请看以下示例:csc /r:System.Windows.Forms.dll;System.Drawing.dll 文件名
如果还有的话,就像这样,继续用分号隔开。还有一点。C#命令行编译器是支持通配符的,比如输入csc /r:System.Windows.Forms.dll *.cs 这样就是编译目录下的所有cs文件。
也可以同时编译两个文件,比如文件A使用到文件B的话,那就需要进行同时编译两个文件了!示例csc /r:System.Windows.Forms.dll A.cs B.cs 即可;


  通过上面的例子,可以想像在命令提示符下想构建一个复杂的C#应用程序,那么将不得不指定大量的选项以通知编译器如何处理源代码,这了减轻录入的负担,C#编译器彩了响应文件.就是把所有的命令放到一个.rsp文件里面,示例如下(注释用#字符标识,只限同一行):

#外部程序集的引用.
/r:System.Windows.Forms.dll

#用于编译的输出和文件(采用通配符)
/target:exe *.cs


现在假定该文件与将被编译的C#源代码文件保存在相同的目录里,这样就能按照以下步骤构建完整的例示了(注意采用了@符号);
csc @TestApp.rsp


好了!自己通过C#命令编译的过程就这样拉!大家可以通过csc -? 命令可以获取更多的信息...

posted on 2010-05-17 11:32  Ss_Andy  阅读(5374)  评论(4编辑  收藏  举报