《C#与.NET3.5高级程序设计(第4版)》笔记2

     

第二章 构建C#应用程序

构建.NET应用程序有许多工具可以选择,从简单的c#命令行编辑器CSC.EXE与记事本的配合使用,到轻量级编辑器(textpad和notepad++),另外开源的IDE开发工具sharpdevelop,再到微软的商用.NET开发工具,VISUAL STUDIO 2008等。

2.1 CSC命令行编译器

对于许多程序员来说,一开始就使用VS.NET作为开发平台,没有或很少利用命令行编译器,其实,所有的开发平台,最终都是要调用命令行编译器的,只不过这一过程对用户来说是透明的,然而,理解命令行编译方式,对于一个进阶为高级程序员来说,是必不可少的!

C#语言使用csc.exe,vb.NET用vbc.exe进行编译,这里只以csc为例。

在命令行编译器中,支持标志的所写,如 csc /out 和csc/t 是一个意思。另外,访问标志或选项,可以用“-”或者“/” 。

为了编译一个源代码(用记事本编辑即可),需要用CSC命令。

一般需要两类参数:

  •  
       
  • 输入输出参数:

    •  

输入当然就是需要编译的源文件名啦,比如*.CS。若有多个文件需要编译,则一个个列出来即可,若编译所有*.CS,只需用通配符即可,如csc *.cs

输出参数就是需要编译为什么文件,可选的是exe和dll或模块。可以查看具体参数。

这里要说明的是,dll是动态链接库,不可以直接运行,必须寄宿到其他可执行程序中运行。

exe文件时可以直接运行的。dll可以寄宿到exe中。区别在于exe文件要有入口点哦。

默认的是exe文件,但是如果没有入口点,将提示出错。有入口点的源代码可以编译为dll或者exe。

在将多个源代码编译时,如csc *.cs,则会编译为一个文件(可选的dll或者exe)。

  •  
    •  
  • 引用参数:

也就是编译的源代码如果引用了其他程序集中的类,则需要加入引用选项,从而让编译器知道如何去找到程序集,加以引用,这相当于IDE中使用项目-引用中的程序集。

包括了引用单个和多个程序集(分号隔开)。

另外,为了减轻录入负担,也可以自己建立一个响应文件(*.rsp),这里记录了编译期间要用到的所有指令。系统也提供了一个默认响应文件(c#的默认csc.rsp),里面是一些常用的引用程序集,当用csc编译时,这个文件自动被引用。

注:响应文件具有累加性,后面被加载的响应文件若与前面的冲突,将会覆盖相应的代码。

注:引用了没有使用的程序集,编译器将忽略它,因此没必要担心引用过多没有的程序集影响性能,当然,作为规范,没必要引用没有使用的程序集。(所以可以理解引用了许多无用的程序集和using了许多命名空间,不影响性能)

2.2 其它编译器

为了提高开发和编译的工作效率,提供了许多开发平台,他们实质上还是利用命令行编译器进行后台工作的,只是无需开发人员手动完成,形成了自动化工作流程。

如textpad(收费,但是可以无限制使用),notepad++(免费),sharpdevelop(免费),visual c# express(速成版,免费),visual studio 2008(商业版,收费),这里具体使用就不再多说了。主要说说vs2008的一些实用功能:

(1)目前的2008版本支持建立项目时选择框架的版本(2.0/3.0/3.5),这个功能不错,终于不需要在一台机子上装vs的多个开发平台了。

(2)2008提供了一个重构功能,这个功能非常的实用,可以改善现有代码,将之前许多手工劳动自动化了。

(3)代码扩展和围绕技术。提供了插入预制的c#代码块的能力,可用的代码扩展数量是惊人的!

(4)可视化的类设计器(express中没有这个功能)。新建一个类图文件之后,就可以利用工具箱中的工具,拖放各种类、接口等类型,并增加删除成员,表示各种类型的关系(继承等),配合实用class details窗口和class designer toolbox,加快了设计速度。

(5)对象测试平台。提供了可视工具(OTB,对象测试平台),可以快速创建一个类的实例并调用其成员,无需运行整个程序(个人觉得这个功能非常实用,好像只有Team版的VS才有)。如果需要测试一个具体方法而不想逐行执行其他无关的代码,这个很有用。你总不期望为了测试一个相对独立的模块,而让这个程序编译好几十秒吧,深受其害啊!

目前从书中看,这一操作只需要一步,直接在类视图下的OTB中中右击这个类实例,选择-调用方法,然后选择某个方法,即可执行。实际上,之前还需要一步,才能出现OTB窗口,就是在类视图中右击,选择创建实例,然后输入一个实例名字,这样,下面才会出现OTB窗口,才能调用方法。如下图所示:

  

原文地址:https://www.cnblogs.com/lerit/p/1663513.html