### csc命令详解 #### 概述 `csc` 是 Microsoft .NET Framework 提供的一个命令行工具,用于编译 C# 源代码到中间语言(IL)或本机机器代码。它允许开发者在没有集成开发环境 (IDE) 的情况下进行编译操作,非常适合自动化构建脚本和命令行下的编译需求。 #### 命令语法 ``` csc [选项] [文件名] ``` #### 重要选项说明 **1. /out:** 指定编译后的输出文件名。默认情况下,输出文件与源文件同名。例如: ``` csc /out:MyProgram.exe MyProgram.cs ``` **2. /target:** 定义输出类型: - `/target:exe`: 编译为可执行文件。 - `/target:winexe`: 编译为 Windows 可执行文件。 - `/target:library`: 编译为类库(DLL)。 - `/target:module`: 编译为模块。 **3. /define:** 定义预处理符号。这些符号可以在源代码中使用 `#if`、`#elif` 和 `#endif` 来控制代码的编译。 ``` csc /define:DEBUG MyProgram.cs ``` **4. /doc:** 生成 XML 文档注释文件。 ``` csc /doc:MyProgram.xml MyProgram.cs ``` **5. /recurse:** 递归编译当前目录及其子目录下的所有 C# 文件。 ``` csc /recurse:. ``` **6. /reference:** 引用其他程序集。这是链接程序集中的类型所必需的。 ``` csc /reference:System.Core.dll MyProgram.cs ``` **7. /addmodule:** 添加模块。用于编译多模块程序集时链接其他模块。 ``` csc /addmodule:MyModule.dll MyProgram.cs ``` **8. /win32res:** 指定 Win32 资源文件 (.res)。 ``` csc /win32res:MyResources.res MyProgram.cs ``` **9. /win32icon:** 设置程序图标。 ``` csc /win32icon:MyIcon.ico MyProgram.cs ``` **10. /resource:** 嵌入资源文件。 ``` csc /resource:MyResources.resx MyProgram.cs ``` **11. /linkresource:** 链接资源文件。 ``` csc /linkresource:MyResources.resx MyProgram.cs ``` **12. /debug:** 启用调试信息: - `/debug+`: 启用调试。 - `/debug-`: 关闭调试。 - `/debug:full`: 包含完整的调试信息。 - `/debug:pdbonly`: 只包含 PDB 文件。 **13. /optimize:** 优化代码: - `/optimize+`: 开启优化。 - `/optimize-`: 关闭优化。 **14. /incremental:** 增量编译: - `/incremental+`: 启用增量编译。 - `/incremental-`: 禁用增量编译。 **15. /warnaserror:** 警告视为错误: - `/warnaserror+`: 将警告视为错误。 - `/warnaserror-`: 不将警告视为错误。 **16. /warn:** 设置警告级别。 ``` csc /warn:3 MyProgram.cs ``` **17. /nowarn:** 忽略特定警告。 ``` csc /nowarn:100,200 MyProgram.cs ``` **18. /checked:** 启用检查上下文: - `/checked+`: 启用检查。 - `/checked-`: 关闭检查。 **19. /unsafe:** 允许不安全代码: - `/unsafe+`: 允许不安全代码。 - `/unsafe-`: 不允许不安全代码。 **20. @<file>:** 读取命令行参数文件。 ``` csc @buildparams.txt ``` **21. /help:** 显示帮助信息。 ``` csc /help ``` **22. /nologo:** 禁用显示版权信息。 ``` csc /nologo MyProgram.cs ``` **23. /noconfig:** 不使用 CSC.RSP 配置文件。 ``` csc /noconfig MyProgram.cs ``` **24. /baseaddress:** 设置程序的基础地址。 ``` csc /baseaddress:0x400000 MyProgram.cs ``` **25. /bugreport:** 生成一个 bug 报告文件。 ``` csc /bugreport:bugreport.txt MyProgram.cs ``` **26. /codepage:** 指定源文件的编码。 ``` csc /codepage:65001 MyProgram.cs ``` **27. /main:** 指定主方法。 ``` csc /main:Program.Main MyProgram.cs ``` **28. /m:** 指定主方法别名。 ``` csc /m:MainMethod MyProgram.cs ``` **29. /fullpaths:** 显示完整路径。 ``` csc /fullpaths MyProgram.cs ``` **30. /filealign:** 设置文件对齐方式。 ``` csc /filealign:512 MyProgram.cs ``` **31. /nostdlib:** 不链接标准库(mscorlib.dll)。 ``` csc /nostdlib+ MyProgram.cs ``` **32. /lib:** 添加搜索路径。 ``` csc /lib:c:\mylib MyProgram.cs ``` ### 示例 以下是一些使用 `csc` 命令的例子: 1. **编译一个简单的程序:** ```bash csc /target:exe /out:MyApp.exe MyApp.cs ``` 2. **编译并创建 XML 文档注释:** ```bash csc /target:library /doc:MyLibrary.xml MyLibrary.cs ``` 3. **编译并添加额外的程序集引用:** ```bash csc /reference:System.Core.dll /reference:System.Windows.Forms.dll MyApp.cs ``` 4. **编译并启用调试:** ```bash csc /debug+ /optimize- MyApp.cs ``` 5. **编译并添加图标:** ```bash csc /win32icon:app.ico MyApp.cs ``` 6. **递归编译当前目录下所有的 C# 文件:** ```bash csc /recurse:. *.cs ``` 通过以上内容,我们可以看到 `csc` 命令提供了丰富的功能,不仅支持基本的编译任务,还允许进行高级配置,满足各种编译需求。
大家还是要常用用csc,个人感觉有时vs有不少不太方便的东西。
C:\>csc /help |more
Microsoft (R) Visual C# 编译器版本7.00.9254 [CLR version v1.0.2914]
版权所有 (C) Microsoft Corp 2000-2001。保留所有权利。
Visual C# 编译器选项
- 输出文件 -
/out:<文件> 输出文件名(如果未指定,则从第一个源文件派生)
/target:exe 生成控制台可执行文件(默认) (缩写: /t:exe)
/target:winexe 生成 Windows 可执行文件 (缩写: /t:winexe)
/target:library 生成库 (缩写: /t:library)
/target:module 生成能添加到其他程序集的模块 (缩写: /t:module)
/define:<符号列表> 定义条件编译符号 (缩写: /d)
/doc:<文件> 要生成的 XML 文档文件
- 输入文件 -
/recurse:<通配符> 根据通配符规范,包括当前目录和子目录下的所有文件
/reference:<文件列表> 从指定的程序集文件引用元数据 (缩写: /r)
/addmodule:<文件列表> 将指定的模块链接到此程序集中
- 资源 -
/win32res:<文件> 指定 Win32 资源文件 (.res)
/win32icon:<文件> 使用该图标输出
- 粉丝: 5
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 15-Flink from YARN to Kubernetes: 资源优化和容器化实践
- (源码)基于PyTorch的BERT情感二分类系统.zip
- 14-Flink Kubernetes Operator 从1.4.0 升级到1.6.0的技术手册
- (源码)基于RTThread实时操作系统的g1632设备控制项目.zip
- 13-Flink Kubernetes Operator 高级特性详解 - 自动伸缩与高可用机制
- (源码)基于SpringBoot和Vue的家庭云系统.zip
- 12-Flink Kubernetes Operator部署与管理Flink应用实践
- 11-Flink kubernetes operator 常用的命令
- (源码)基于Python和ApacheJena的医药知识图谱智能问答系统.zip
- (源码)基于Arduino的vastara穿戴设备系统.zip