C#编译器csc环境变量配置及Visual C# 编译器选项

csc是.NET Framework 的SDK中提供的一个用于编译C#源程序文件的工具,是大部分拥有图形界面的C#集成开发环境的基础。在命令行的环境下我们需要用csc编译C#程序,首先需要配置C#编译器csc环境变量,再学习Visual C# 编译器选项。

一、 C#编译器环境变量配置

我的电脑是Windows 10,csc在C:\Windows\Microsoft.NET\Framework\v4.0.30319文件夹下,所以在环境变量Path中添加“C:\Windows\Microsoft.NET\Framework\v4.0.30319”即可。

二、 Visual C# 编译器选项

C:\Users\xieyincai\Desktop>csc /?
Microsoft (R) Visual C# Compiler version 4.7.3056.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

                        Visual C# 编译器选项

                        - 输出文件 -
/out:<文件>                    指定输出文件名(默认值: 包含主类的文件或第一个文件的基名称)
/target:exe                    生成控制台可执行文件(默认) (缩写: /t:exe)
/target:winexe                 生成 Windows 可执行文件 (缩写: /t:winexe)
/target:library                生成库 (缩写: /t:library)
/target:module                 生成能添加到其他程序集的模块 (缩写: /t:module)
/target:appcontainerexe        生成 Appcontainer 可执行文件 (缩写: /t:appcontainerexe)
/target:winmdobj               生成 WinMDExp 使用的 Windows 运行时中间文件 (缩写: /t:winmdobj)
/doc:<文件>                    要生成的 XML 文档文件
/platform:<字符串>             限制可以在其上运行此代码的平台: x86、Itanium、x64、arm、anycpu32bitpreferred 或 anycpu。默认值为 anycpu。

                        - 输入文件 -
/recurse:<通配符>              根据通配符规范,包括当前目录和子目录下的所有文件
/reference:<别名>=<文件>       使用给定的别名从指定的程序集文件引用元数据 (缩写: /r)
/reference:<文件列表>          从指定的程序集文件引用元数据 (缩写: /r)
/addmodule:<文件列表>          将指定的模块链接到此程序集中
/link:<文件列表>               嵌入指定的互操作程序集文件中的元数据 (缩写: /l)

                        - 资源 -
/win32res:<文件>               指定 Win32 资源文件(.res)
/win32icon:<文件>              对输出使用此图标
/win32manifest:<文件>          指定 Win32 清单文件(.xml)
/nowin32manifest               不包括默认 Win32 清单
/resource:<资源信息>           嵌入指定的资源 (缩写: /res)
/linkresource:<资源信息>       将指定的资源链接到此程序集 (缩写: /linkres)
                               其中 resinfo 的格式是 <file>[,<string name>[,public|private]]

                        - 代码生成 -
/debug[+|-]                    发出调试信息
/debug:{full|pdbonly}          指定调试类型(“full”是默认类型,可以将调试程序附加到正在运行的程序)
/optimize[+|-]                 启用优化 (缩写: /o)

                        - 错误和警告 -
/warnaserror[+|-]              将所有警告报告为错误
/warnaserror[+|-]:<警告列表>   将特定警告报告为错误
/warn:<n>                      设置警告等级(0-4) (缩写: /w)
/nowarn:<警告列表>             禁用特定的警告消息

                        - 语言 -
/checked[+|-]                  生成溢出检查
/unsafe[+|-]                   允许“不安全”代码
/define:<符号列表>             定义条件编译符号 (缩写: /d)
/langversion:<字符串>          指定语言版本模式: ISO-1、ISO-2、3、4、5 或 Default

                        - 安全性 -
/delaysign[+|-]                仅使用强名称密钥的公共部分对程序集进行延迟签名
/keyfile:<文件>                指定强名称密钥文件
/keycontainer:<字符串>         指定强名称密钥容器
/highentropyva[+|-]            启用高平均信息量的 ASLR
/enforcecodeintegrity[+|-]     Enforce code intergrity checks on all inputs to the compiler and enable loading compiled assemblies by other programs that enforce code integrity if the
                               operating system is configured to do so.

                        - 杂项 -
@<文件>                        有关更多选项,请阅读响应文件
/help                          显示此用法信息 (缩写: /?)
/nologo                        取消编译器版权信息
/noconfig                      不要自动包含 CSC.RSP 文件

                        - 高级 -
/baseaddress:<地址>            要生成的库的基址
/bugreport:<文件>              创建“Bug 报告”文件
/codepage:<n>                  指定打开源文件时要使用的代码页
/utf8output                    以 UTF-8 编码格式输出编译器消息
/main:<类型>                   指定包含入口点的类型(忽略所有其他可能的入口点) (缩写: /m)
/fullpaths                     编译器生成完全限定路径
/filealign:<n>                 指定用于输出文件节的对齐方式
/pdb:<文件>                    指定调试信息文件名(默认值: 扩展名为 .pdb 的输出文件名)
/errorendlocation              输出每个错误的结束位置的行和列
/preferreduilang               指定首选输出语言名称。
/nostdlib[+|-]                 不引用标准库(mscorlib.dll)
/subsystemversion:<字符串>     指定此程序集的子系统版本
/lib:<文件列表>                指定要在其中搜索引用的附加目录
/errorreport:<字符串>          指定如何处理内部编译器错误: prompt、send、queue 或 none。默认值为 queue。
/appconfig:<文件>              指定一个包含程序集绑定设置的应用程序配置文件
/moduleassemblyname:<字符串>   此模块所属程序集的名称

下面是微软官网给出的实例,简单明了。我复制过来,仅供参考:

Compiles File.cs producing File.exe:

csc File.cs 

Compiles File.cs producing File.dll:

csc -target:library File.cs

Compiles File.cs and creates My.exe:

csc -out:My.exe File.cs

Compiles all the C# files in the current directory with optimizations enabled and defines the DEBUG symbol. The output is File2.exe:

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

Compiles all the C# files in the current directory producing a debug version of File2.dll. No logo and no warnings are displayed:

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

Compiles all the C# files in the current directory to Something.xyz (a DLL):

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

Leave a Reply

Your email address will not be published. Required fields are marked *