位置:海鸟网 > IT > ASP.NET >

csc.exe在命令行上生成可执行文件

用惯了VS来写C#代码,要是用记事本写会不会觉得很好玩,然后再CMD窗口下编译运行,当然写一些简单的Console代码还是可以这么玩玩的,如果你觉得打开VS太麻烦的话。

 

csc.exe在命令行上生成可执行文件

    把后缀名改成.cs,test.cs。

    打开cmd…

csc.exe在命令行上生成可执行文件

csc.exe是.net framework SDK中的一个工具,用起来很不错,详细怎么用参见MSDN吧。

今天用这个配置了下editplus,以后一些小程序可以在editplus编译运行了,

可以通过键入其可执行文件 (csc.exe) 的名称来调用 c# 编译器在命令提示。

如果使用 Visual Studio 命令提示 窗口中,所有必要的环境变量为您设置。 在 windows 7 中,可以通过打开 Microsoft Visual Studio Version\Visual Studio Tools 文件夹从 Start 菜单进入该窗口。 在 windows 8 中,Visual Studio 命令提示调用 VS2012 开发人员命令提示,因此,您可以通过从开始搜索屏幕中找到它。

如果使用标准命令提示符窗口,必须调整路径,然后才能调用 csc.exe 可从计算机上之前的任何子目录。 您还必须运行 vsvars32.bat 设置适当的环境变量来支持命令行生成。 有关 vsvars32.bat 的更多信息,包括如何的命令可以查找和运行它,请参见 如何:设置环境变量。

如果您处理只有 Windows 软件开发包 (SDK)的计算机,则可以使用 C# 编译器在 SDK 命令提示,则从 Microsoft .NET Framework SDK 菜单选项打开。

也可以使用 MSBuild 生成 C# 编程模型。 有关更多信息,请参见MSBuild。

csc.exe 可执行文件通常位于 windows 目录下的 Microsoft.NET\framework\版本 文件夹在。 其位置可能基于特定计算机的完全相同的配置。 如果多个 .NET framework 版本安装在计算机上,您将发现此文件的多个版本。 有关此类安装的更多信息,请参见确定安装的 .NET Framework 版本。

提示
使用 Visual Studio IDE 时,将生成项目,可以显示 csc 命令及其关联的编译器选项在 输出 窗口。 若要显示此信息,请按照 如何:查看、保存和配置生成日志文件 的命令来更改日志数据的详细标准到 普通 或 详细。 在重新生成您的项目,然后搜索 输出 窗口 csc 查找 C# 编译器的调用。
命令行语法规则主题内容

命令行示例

C# 编译器和 C++ 编译器输出之间的差异

C# 编译器的命令行语法规则

在解释操作系统命令行上给出的参数时,C# 编译器使用下列规则:

参数用空白分隔,空白可以是一个空格或制表符。

^ 字符 (^) 未被识别为转义符或者分隔符。 该字符在被传递给程序中的 argv 数组前,由操作系统的命令行分析器进行处理。

无论其中是否包含空白,带双引号的字符串 ("string") 均被解释为单个参数。 带引号的字符串可以嵌入在参数内。

前面有反斜杠的双引号 (\") 被解释为原义双引号字符 (")。

反斜杠按其原义解释,除非它们紧位于双引号之前。

如果偶数个反斜杠后跟双引号,则每对反斜杠中有一个反斜杠放置在 argv 数组中,而双引号被解释为字符串分隔符。

如果奇数个反斜杠后跟双引号,则每对反斜杠中有一个反斜杠放置在 argv 数组中,而双引号由剩余那个反斜杠进行“转义”。 这会将双引号字符 (") 添加到 argv 中。

C# 编译器的示例命令行

编译 File.cs 以产生 File.exe:

csc File.cs

编译 File.cs 以产生 File.dll:

csc /target:library File.cs

编译 File.cs 并创建 My.exe:

csc /out:My.exe File.cs

通过使用优化和定义 DEBUG 符号,编译当前目录中的所有 C# 文件。 输出为 File2.exe:

csc /define:DEBUG /optimize /out:File2.exe *.cs

编译当前目录中的所有 C# 文件,以生成 File2.dll 的调试版本。 不显示任何徽标和警告:

csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs

将当前目录中的所有 C# 文件编译为 Something.xyz(一个 DLL):

csc /target:library /out:Something.xyz *.cs

C# 编译器和 C++ 编译器输出之间的差异

没有由于调用 C# 编译器创建的对象 (.obj) 文件;输出文件直接创建对象。 因此,C# 编译器不需要链接器。