命令行的编译
Table A中罗列出的工具允许你操作.NET开发的所有方面,但是编译是本文的核心。命令行编译是一个简单的过程,以下面的C# 代码为例:
public class BuilderTest {
public static void Main(string[] args) {
System.Console.WriteLine("Builder.com Rules!");
} }
我用Windows记事本创建了这个示例程序,然而,你可以选择你最热衷的文本编辑器。下面的命令编译程序为执行文件:
cscBuilderTest.csc
命令运行后显示一些新行,详细描述了编译器和框架的版本:
Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.
这个小程序的编译结果是产生了BuilderTest.exe执行文件,它可以在命令行中被执行。它是一个命令行程序,因为它包含了Main方法。从另一方面来说,如果查找出任何错误或是执行文件没有生成,将显示相应的消息。于是,我故意写错了代码(将WriteLine 中的e去掉),这样,显示了以下消息:
BuilderTest.csc(5,5): error CS0117: 'System.Console' does not contain
a definition for 'WriteLin'
其识别出在行列数(5,5)处有错误产生。VB.NET的实现方法也类似,但是,当然,代码是不同的。下面是用VB.NET编写的示例程序:
Module BuilderVBTest
Sub Main()
System.Console.WriteLine("Hello, VB.NET World!")
End Sub
End Module
代码被保存在称为BuilderVBTest.vbc的文件中,使用以下代码将其编译为执行文件:
vbcBuilderVBTest.vbc
同时,这个过程产生以下输出:
Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322.573
Copyright (C) Microsoft Corporation 1987-2002. All rights reserved.
此外,编译的结果是一个可以被命令行执行的可执行文件(代码中包含了Main方法)。命令行编译的方法不错,然而,编译器为了实现额外的功能要提供各种各样的选择参数。
基本编译之外
对绝大多数的命令行工具,编译器提供多种转换,在控制编译的同时也提供其他选项。VB.NET和C# 编译器的选择参数列表并不相同,其中两者选项内容和功能相同的包括以下这些:
* /debug--生成调试信息
* /define--定义有条件编译的符号(#define)
* /help--显示有效的命令行开关列表(same as /?)
* /nologo--隐藏版权信息(看前面的例子)
* /optimize--开启或关闭代码优化
* /out--为编译结果指定一个目标文件
* /target—使用下面四个选择项之一指定输出文件的格式:/target:exe, /target:library, /target:module, or /target:winexe
以上简单的举出了一些选项,让我们窥视了其强大的功能。举个例子,以下命令对VB.NET进行了编译,并且,隐藏标识信息、优化代码,最后输出为builder.exe.:
vbcBuilderVBTest.vbc /out:builder.exe /nologo /optimize
其他开发选项
我了解,有许多核心JAVA和UNIX开发者更偏向于使用命令行方式控制代码。要感谢.NET框架,它提供了这一方法和丰富多样的工具。最值的注意的是,命令行编辑器使你得以迅速的执行你的代码
