zoukankan      html  css  js  c++  java
  • C# 编译器 csc 简单用法

     

    csc.exe

    csc.exe是.NET Framework SDK中的一个工具,当然用VS舒服多了...

    不怕麻烦或者小硬盘的可以用用看,下面是些基本编辑,编译,调试操作(很不详细,详细请看MSDN :) ):
    1.配置C#命令行编辑器:
    我的电脑 - 属性 - 高级 - 环境变量 - 系统变量列表对话框 - 双击Path变量 - 
    在当前路径值的末尾加入(路径变量里各值用分号区隔): C:\Windows\Microsoft.NET\Framework\v2.0.50727 (注意,路径和版本号会因为你的安装和下载的不同而不同,自己到安装目录下看看)

    如果配置成功,在命令窗口中输入: csc /? 将显示C#编译器支持的选项列表.

    2.配置其他.NET命令行工具:
    将附加路径变量加入系统变量列表框: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

    如果配置成功,在命令窗口中输入:gacutil /? 查看GAC工具gacutil.exe的各个选项.

    3.使用csc.exe和记事本构建C#应用程序:
    - 使用记事本编辑源代码,并保存为.cs格式,如TestApp.cs,存储路径C:\CscExample\
    //TestApp.cs 
    using System;
    class TestApp
    {
       public static void Main()
       {
        Console.WriteLine("Testing!");
       }
    }
    - 打开cmd,转到源文件保存的目录
    - 输入命令: csc /target:exe TestApp.cs 将TestApp.cs编译成名为TestApp.exe的console应用程序

    C#编译器的输出选项(详细查阅相关手册或MSDN):
    选项    作用
    ------------------------------------------------------------------------------------------------------------------
    /out    该选项用于指定被构建出的程序集的名字。默认条件下,程序集的名字或者与最初输入的*.cs文件名字相同(生成
        *.dll文件的情况下),或者与包含程序的Main()方法的那个类型的名字相同(生成*.exe文件的情况下)
    ------------------------------------------------------------------------------------------------------------------
    /target:exe   本选项构建一个可执行的控制台应用程序。这是默认的文件输出类型,并且在创建该应用程序类型时可被忽略。
    ------------------------------------------------------------------------------------------------------------------
    /target:library 本选项构建一个单一文件*.dll程序集。
    ------------------------------------------------------------------------------------------------------------------
    /target:module 本选项构建一个模块(module)。所谓模块是指组成多文件程序集的元素。
    ------------------------------------------------------------------------------------------------------------------
    /target:winexe 本选项构建一个可执行的windows应用程序,尽管使用/target:exe也能创建窗体应用程序,但本选项创建的程序
        运行时不会有控制窗口出现在桌面背景上。
    ------------------------------------------------------------------------------------------------------------------

    4.引用外部程序集:
    修改TestApp.cs,显示一个Windows窗体消息框:
    //TestApp.cs 
    using System;
    using System.Windows.Forms;

    class TestApp
    {
       public static void Main()
       {
        Console.WriteLine("Testing!");
        MessageBox.Show("Hello!");
       }
    }
    在命令行中,必须通知csc.exe,哪个程序集包含了“所用的“命名空间。因此,必须使用/reference标志指定System.Windows.Forms.dll

    csc /reference:System.Windows.Forms.dll TestApp.cs

    5.使用csc.exe编译多个源文件:
    - 显式的列出各个导入文件来编译C#文件: csc /r:System.Windows.Forms.dll TestApp.cs HelloMsg.cs
    - 使用通配符(*)通知csc.exe: csc /r:System.Windows.Forms.dll *.cs
    //TestApp.cs
    using System;

    class TestApp
    {
       public static void Main()
       {
        Console.WriteLine("Testing!");
        HelloMessage h = new HelloMessage();
        h.Speak();
       }
    }

    //HelloMsg.cs
    using System;
    using System.Windows.Forms;

    class HelloMessage
    {
       public void Speak()
       {
        MessageBox.Show("Hello!");
       }
    }

    6.引用多个外部程序集:
    - 使用分号列出各个程序集: csc /r:System.Windows.Forms.dll;System.Drawing.dll *.cs

    7.使用csc.exe响应文件(respose file):
    - C#响应文件包含了在当前构建的编译期间要用到的所有指令,通常约定,响应文件的扩展名为*.rsp
    - 响应文件中注释使用“#”字符标识
    - 在编译指令中响应文件前加@符号: csc @TestApp.rsp
    - /reference标志具有累加性,而其他标志(如/out)将用后面的命令覆盖前面的命令
    - 可以指定多个响应文件作为输入(例如csc @FirstFile.rsp @SecondFile.rsp @ThirdFile.rsp)
    - 也可混合使用响应文件和标志(例如csc /out:TestApp.exe @TestApp.rsp)

    # 建立4中TestApp.exe的响应文件 TestApp.rsp
    #
    # 外部程序集引用
    /r:System.Windows.Forms.dll
    #
    # 用于编译的输出和文件
    /target:exe /out:TestApp.exe *.cs

    8.默认的响应文件csc.rsp:
    - C#编译器有一个相关联的默认响应文件csc.rsp, 该响应文件与csc.exe在同一目录.
    - 当用csc.exe构建C#程序时,该文件将自动被引用(即使提供了自定义*.rsp文件时)
    - 要取消自动读取csc.rsp,可以指定 /noconfig 选项
    ################################################################################
    命令行调试器(cordbg.exe):

    - 使用cordbg /? 查看调试器提供的标志选项

    部分有用的cordbg.exe命令行标志:
    标志(全称/缩写) 作用
    ----------------------------------------------------
    b[reak]   设定或显示当前断点
    del[ete]   去除一个或多个断点
    ex[it]    退出调试器
    g[o]    继续调试当前进程直至发现下一个断点
    o[ut]    退出当前函数
    p[rint]    打印所有加载的变量(局部,实参等)
    si    进入下一行
    so    越过下一行
    ----------------------------------------------------
    在命令行进行调试:
    - 给应用程序生成调式数据: csc @TestApp.rsp /debug , 将生成一个名为TestApp.pdb的关联文件
    - 将欲调试的.NET程序集指定为命令行实参,进入调试模式(*.pdb文件将被自动加载: cordbg.exe TestApp.exe 
    - 使用cordbg.exe命令行标志进行调试

  • 相关阅读:
    文档数据库 海量文本分析 搜索引擎 NoSql 数据库 NewSql 数据库 图数据库 知识图谱 联想 白盒人工智能
    我发起了 一个 桌面程序 窗体界面 开源项目 WinFormXml
    调幅 是 电子技术, 调频 是 量子技术
    出一道题 : 证明 超外差收音机 的 混频原理
    研究一下 容器 的 原理
    设计 一个 CPU 的 存储管理部件
    我发起了 一个 操作系统 开源项目, 名字待定
    ServerFul 架构
    谈谈 ServerFul 架构
    状态机 控制机 任务机
  • 原文地址:https://www.cnblogs.com/zhyj/p/2945569.html
Copyright © 2011-2022 走看看