概述

CSC是什么呢?CSC就是 C-Sharp Compiler (中文就是C#编译器),作用是把我们的 cs 源文件变异成dll 或者是exe ,    一般安装完VS 后,就会有这个文件;

这里有个图解释一下

因为我装的 VS 2019 ,我本机的 csc.exe 的目录在 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Roslyn ,大家如果装的有其他的版本的话,可以搜索一下就找的到了。

使用

安装完 VS后,可以在开始菜单中找到 VS 的命令行工具

第二个和第三个 分别是 cmd 模式和 PowerShell 模式 随便打开一个即可,然后在命令行内 输入 csc ,如果是出来下面的内容,说明这一步已经没有问题了

编译源文件

我在 D盘下 新建一个记事本文件,输入一下内容,并改名为 Program.cs

using System; 

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DateTime.Now.ToString()); Console.ReadKey(); }
}
}

CD 命令 切换到 D 盘 ,并输入  csc  Program.cs ,执行后发现生成了 Program.exe ,并且可以成功运行,现在 已经用 csc.exe 成功编译了源文件

如果源文件的语法有问题,会成功编译通过吗?

我把Program.cs 改成下面的

using System; 

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DateTime.Now.ToString()); Console.ReadKey();

重新编译, 执行命令 csc Program.cs

发现编译失败了,说明 csc.exe 会对我们的语法做检查。

常用命令

   //编译生成 File.exe 的 File.cs :
csc File.cs //编译生成 File.dll 的 File.cs :
csc -target:library File.cs //编译 File.cs 并创建 My.exe :
csc -out:My.exe File.cs //编译当前目录中的所有 C# 文件,对其进行优化并定义 DEBUG 符号。 输出为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# 使用 csc.exe 实现命令行生成的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (40) ------ 第七章 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-5  从跟踪器中获取实体 问题 你想创建一个扩展方法,从跟踪器中获取实体,用于数 ...

  2. cocos命令行生成项目

    cocos命令行生成项目: cocos new GoodDay(项目名称) -p com.boleban.www(包名字) -l cpp(项目类型) -d D:\DevProject\cocos2dx ...

  3. Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项

    摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...

  4. [转]Explorer.exe的命令行参数

    本文来自:Explorer.exe的命令行参数 摘要 本文讲述explorer.exe(资源管理器)的命令行. 语法 EXPLORER.EXE [/n][/e][,/root,<object&g ...

  5. Beyond Compare 命令行生成目录下所有文件比对的Html网页report

    MAC环境下,使用Beyond Compare命令行生成两个文件夹差异的html,按目录递归生成. #1. 创建compare #2. 创建compare/old #3. compare/new #4 ...

  6. 用OpenSSL命令行生成证书文件

    用OpenSSL命令行生成证书文件 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加 ...

  7. Jmeter之命令行生成HTML报告

    其实每次使用jemter.bat文件启动JMeter时,命令行窗口都会提示我们不要使用GUI窗口进行测试,除非是进行调试脚本 使用命令行生成结果也很测试报告也很简单 jmeter -n -t [jmx ...

  8. thinkphp命令行生成模型类

    thinkphp命令行生成模型类 当你需要创建大量的模型类的时候,不妨考虑下命令行生成,可以快速创建模型类. 在windows下面,使用Win+R输入cmd进入命令控制台,切换到项目根目录(也就是th ...

  9. php命令行生成与读取配置文件

    接着之前的文章:php根据命令行参数生成配置文件 ghostinit.php <?php class ghostinit{ static $v = 'ghost version is 1.1'; ...

随机推荐

  1. Ubuntu18.04下搭建LNMP教程-超详细图文(Nginx+MySQL+PHP含各种解决报错问题)

     笔者最近在VM15.0上安装了Ubuntu18.,先来安装一个LNMP(Nginx+MySQL+PHP)网站服务器架构,为后续的实验做准备~    LNMP是指一组通常一起使用来运行动态网站或者服务 ...

  2. 调用rest api杀死yarn上的应用

    调用rest api杀死yarn上的应用 调用yarn reat api,通过app name 获取application id public static String getApplication ...

  3. 数据库Oracle数字函数

    数字函数不多: ROUND(arg1):四舍五入保留整数. arg1:数字类型.原数字. arg2:整数类型.小数点保留的位数. SQL> select round(1256.564,2) fr ...

  4. 【Go入门学习】理解区分数组和切片

    一.前言 学过 Go 的都知道在 Go 语言中有四种复合数据类型:数组.切片(Slice).哈希表(Map)和结构体(Struct),而很多 Go 初学者也很容易把数组和切片弄混淆,所以要怎么把这两个 ...

  5. MT9V034 全局快门体验总结

    MT9V034 全局快门体验总结 部分照片来源网络,尊重版权. . 这个是实物照片 全局快门(相对滚动快门) 拍摄高速物体的效果 高动态效果 低照度和高照度对比 实际拍照效果图(来自网友华健) 特殊应 ...

  6. 使用 defineProperty 劫持数据属性的改变

    使用defineProperty劫持数据属性的变化 例子一:有一个全局变量a,有一个全局函数b,实现一个`bindData`,执行后,a的任何赋值都会触发b的执行 // var a = 1;a = 1 ...

  7. InputStream 读取中文乱码 扩展

    对于InputStream读取中文乱码,下面这段话给出了很好的解释,以及后续编码上的扩展. BufferedInputStream和BufferedOutputStream是过滤流,需要使用已存在的节 ...

  8. 【H5】316- 移动端H5跳坑指南

    最近在一个移动端的 Web 项目中踩了很多的坑,感觉有必要把它们记录下来,分享给即将踏入移动端 Web 开发大门的朋友们,更好的解决ios和android兼容. 1.input获取焦点时,页面被放大 ...

  9. Vue中router路由异步加载组件-优化性能

    何时使用异步加载组件 当首页app.js文件太大时,可以拆分组件异步加载,如果app.js文件很小时,不建议使用异步加载组件,因为异步加载组件时每次都要发送一个HTTP请求,这样的代价远比首页一次性加 ...

  10. v-if和v-show 的区别

    区别 1.手段:v-if是通过控制dom节点的存在与否来控制元素的显隐:v-show是通过设置DOM元素的display样式,block为显示,none为隐藏: 2.编译过程:v-if切换有一个局部编 ...