Windows应用程序开发入门到精通十四:复杂的问题,一流的解决方案-20050414
WindowsMobile开发新手入门教程

WindowsMobile开发新手入门教程对于Windows Mobile的开发者来说,入门是非常重要的。
下面是一个简单的入门教程,帮助初学者快速入门Windows Mobile开发。
第一步:安装开发工具第二步:创建新项目安装完开发工具后,你可以打开Visual Studio,并创建一个新的Windows Mobile项目。
在菜单栏上选择"文件"->"新建"->"项目",然后选择"Windows Mobile"作为项目类型。
接着,选择一个适合的模板并点击"确定"来创建一个新项目。
第三步:设计界面第四步:编写代码完成界面设计后,你可以开始编写代码。
在Visual Studio中,你可以在代码视图中编写你的应用程序逻辑。
例如,你可以为按钮添加点击事件处理程序,在用户点击按钮时执行相应的代码。
第五步:调试和测试完成代码编写后,你可以通过调试和测试来验证你的应用程序是否正常运行。
使用Visual Studio提供的调试工具,你可以逐步执行你的代码,并查看变量的值。
你还可以使用模拟器来测试你的应用程序在不同设备上的运行情况。
第六步:发布应用程序一旦你的应用程序通过了测试,你可以准备将其发布到Windows Mobile应用商店或其他发布渠道。
在发布之前,你可能需要创建一个应用程序包,并为应用程序提供必要的描述信息和版本号。
总结通过以上的步骤,你可以快速入门Windows Mobile开发。
当你熟悉了这些基本步骤后,你可以进一步学习和掌握Windows Mobile开发的更高级技术和功能。
希望这个教程能够帮助你入门Windows Mobile开发,并且能够在你的开发之路上为你提供一些指导。
祝你在Windows Mobile开发中取得好成果!。
Windows编程基础

28
基本数据类型-2/2
数据类型 LPSTR LPCTSTR
对应基本类型 char * const char*
LRESULT
WORD WPARAM
long unsigned short unsigned int
说明
32位字符串指针
32位字符串指针,指向一个 常量字符串,用于移植到双字 节字集 来自窗口过程或回调函数的 32位返回值 16位无符号整数
• C语言开发应用程序的过程:数据结构+算法 – 开发平台:使用Win32 Console Application
• 编写Windows应用程序主要有三种方法 – 方法1: 调用Windows环境提供的Win32 API函数(面向过 程) • 大量程序代码由用户自己编写 – 方法2:使用MFC(微软基础类库)直接编写(面向对象) • 提供大量预先编好的类和支持代码 – 方法3:使用MFC和向导(Wizards)编写(面向对象) • 用AppWizard来生成Windows应用程序框架 – 注意:MFC编程方法仍然可以使用Windows API函数。
6
MFC & API
• API (Application Programming Interface )是由 Windows操作系统提供的函数定义、参数定义和消息格 式的集合,可供应用程序使用。
• MFC微软基础类(Microsoft Foundation Classes),实际 上是微软提供的,用于在C++环境下编写Win32应用程序 的一个框架和引擎。
31
Windows API程序架构
//过程函数声明 LRESULT CALLBACK WinProc( HWND hwnd, UINT uMsg,
Windows应用开发教程

Windows应用开发教程第一章:介绍Windows应用开发Windows应用开发是指使用Microsoft Windows操作系统环境进行软件开发的过程。
Windows应用可以运行在桌面、笔记本电脑和平板电脑等设备上,为用户提供各种功能和服务。
本章将介绍Windows应用开发的基本概念和发展历程。
第二章:Windows应用开发的基础知识在进行Windows应用开发之前,了解一些基础知识是必要的。
本章将介绍Windows操作系统的架构,包括内核、系统组件和用户界面。
同时,还将介绍常用的开发工具和语言,如Visual Studio 和C#。
第三章:Windows应用开发的项目准备在开始Windows应用开发之前,需要进行一系列的准备工作。
本章将介绍如何创建新的项目,设置项目参数和引用必要的库文件。
同时,还将介绍如何选择适合的项目模板和布局。
第四章:Windows应用开发的界面设计界面设计是Windows应用开发中非常重要的一环。
本章将介绍Windows应用界面的设计原则和常用控件的使用方法。
同时,还将介绍如何进行布局设计和界面优化。
第五章:Windows应用开发的数据处理在Windows应用中,数据的处理是非常常见的任务。
本章将介绍如何使用数据库来存储和管理数据,如何进行数据的输入和输出。
同时,还将介绍如何处理常见的数据格式,如XML和JSON。
第六章:Windows应用开发的功能扩展Windows应用的功能扩展是提高用户体验和增加软件价值的一种方式。
本章将介绍如何添加功能模块和插件,如何使用第三方库和API,如何进行软件的更新和版本管理。
第七章:Windows应用开发的测试和调试测试和调试是保证Windows应用质量的重要手段。
本章将介绍如何进行测试计划和测试用例的编写,如何使用调试工具和技术来定位和修复错误。
第八章:Windows应用开发的发布和分发Windows应用的发布和分发是将软件推向市场的最后一步。
windows编程教程

windows编程教程Windows编程是指使用Microsoft Windows操作系统的相关技术进行软件开发的过程。
Windows操作系统具有广泛的应用领域,包括桌面应用程序、游戏、服务端应用程序等。
要进行Windows编程,首先需要了解Windows操作系统的基本概念和体系结构。
Windows操作系统是以图形用户界面为特点的操作系统,它包含了多个子系统,如内核模式子系统、用户模式子系统等。
在编写Windows应用程序时,我们主要关注的是用户界面的开发。
Windows编程的基础知识主要包括以下几个方面:1. Windows API:Windows提供了一组API(应用程序接口),用于编写对系统资源的访问和控制。
通过使用Windows API,我们可以创建窗口、处理用户输入、绘制图形等。
2. GUI编程:图形用户界面(GUI)是Windows应用程序的核心。
使用图形库,如Windows Forms、WPF等,我们可以创建按钮、文本框、列表框等控件,来构建用户界面。
同时,还可以通过事件处理机制,响应用户的交互操作。
3. 多线程编程:在Windows应用程序中,使用多线程可以实现并发执行,提高程序的响应性能。
多线程编程需要了解线程的创建、同步和通信技术,以及如何避免线程安全问题。
4. 数据持久化:通常,Windows应用程序需要将数据保存到磁盘或数据库中,以便下次程序运行时可以恢复之前的状态。
在Windows编程中,我们可以使用文件操作、数据库访问等技术实现数据的持久化。
在进行Windows编程时,我们通常会选择合适的编程语言和开发工具。
常用的编程语言包括C++、C#、等,而开发工具则有Visual Studio等。
这些工具提供了方便的开发环境和丰富的开发工具箱,可以大大提高开发效率。
总之,Windows编程是一门广泛应用的技术,对于想要开发Windows应用程序的开发者来说是必备的技能。
通过学习Windows编程,可以掌握Windows操作系统的开发技术,进一步提升软件开发的能力和水平。
从入门到精通学习编写自己的应用程序的步骤与技巧

从入门到精通学习编写自己的应用程序的步骤与技巧学习编写自己的应用程序一直是很多人的梦想和目标。
从入门到精通这个过程,需要掌握一系列的步骤和技巧。
在本文中,我将分享一些学习编写应用程序的经验,帮助你迈出自己的编程之路。
1. 学习编程基础知识在开始编写自己的应用程序之前,首先需要打好编程的基础。
了解计算机的工作原理,学习编程语言的语法和结构,理解算法和数据结构的基本原理等。
这些基础知识是学习编写应用程序的基石,对进一步的学习和实践非常重要。
2. 明确学习目标与项目需求在学习编写应用程序之前,需要明确自己的学习目标和项目需求。
是想开发一个网站应用程序?还是开发一个手机应用程序?或者是其他类型的应用程序?根据不同的需求,你可以选择不同的编程语言和开发平台。
3. 学习一门编程语言选择一门适合自己需求的编程语言进行学习,并逐步掌握该语言的基本语法和编程范式。
常用的编程语言包括Java、Python、C++等,每一种编程语言都有其特点和应用领域。
选择一门合适的编程语言,可以根据自己的兴趣和需求来进行选择。
4. 学习开发工具与环境学习一门编程语言之后,接下来要学习如何使用相应的开发工具和环境。
例如,学习使用集成开发环境(IDE)来编写代码,学习使用调试工具来排查和修复错误。
这些工具和环境将大大提高你的开发效率和代码质量。
5. 参与实践项目与开源社区学习是一个不断实践和提升的过程。
参与实践项目和开源社区,可以锻炼你的编程能力和解决实际问题的能力。
通过与他人共同开发项目,你可以学习到更多的技术和经验,不断提高自己的编程水平。
6. 持续学习与提升编程领域的技术和工具在不断发展和更新,因此学习编写应用程序是一个持续的过程。
保持学习的状态,通过阅读书籍、参加技术培训、关注技术论坛和博客等方式,了解最新的技术动态和编程实践经验。
不断提升自己的技术水平,才能在编写应用程序的过程中更加熟练和高效。
总结起来,学习编写自己的应用程序需要扎实的基础知识、明确的学习目标、选择合适的编程语言、掌握开发工具与环境、积极参与实践项目和开源社区以及持续学习和提升。
Windows应用程序开发入门到精通 Object Oriented Concepts NET WinForms Application

演示四
Form派生 派生
封装
封装通常是指数据隐藏 private和protected可以用来控制私有成员的访问权 和 可以用来控制私有成员的访问权 限 数据封装可以通过属性的get/set方法来更好的实现 方法来更好的实现 数据封装可以通过属性的
访问权限
private / Private – 只有在类内部是可见的 protected / Protected – 只有在类内部或派生类中是可见的 internal / Friend – 只有在同一个工程中 程序集中是可见的 只有在同一个工程中/程序集中是可见的 protected internal / Protected Friend – 只有在类内部、相同的工 只有在类内部、 程/程序集当中的类和派生类中是可见的 程序集当中的类和派生类中是可见的 public / Public – 全局可见的 Field Properties 只读Readonly 只写Writeonly
演示六
多态与接口
继承与接口
纯虚类与接口不同的是, 纯虚类与接口不同的是,它们可以包含一些实现 用纯虚类包含一些基本的功能或方法 用接口来定义客户端与组件之间的通讯方法 虚基类的实现的变化可能会影响派生类 使用接口要比使用继承具有更强的适应性
总结
面向对象开发方法能够帮助加快开发速度, 面向对象开发方法能够帮助加快开发速度,并增 强可维护性 .NET中的面向对象开发方法最大程度的实现了代 中的面向对象开发方法最大程度的实现了代 码的重用 可以通过继承控件或窗体来完成共同的“Look and 可以通过继承控件或窗体来完成共同的“ Feel”,并在派生类中实现特定的方法或功能 ,
Class D derived from A Class E
c windows程序设计教程
c windows程序设计教程C语言是一种通用的编程语言,广泛应用于Windows操作系统的程序开发。
在C语言中,可以通过Windows API来使用Windows操作系统提供的功能和服务。
本文将介绍C语言在Windows程序设计中的基本知识和常用技巧。
首先,我们需要了解Windows API的使用方法。
Windows API是一组函数和数据结构的集合,可以通过函数调用的方式来调用Windows操作系统提供的功能。
在C语言中,可以通过在代码中包含Windows头文件(例如windows.h)来使用Windows API。
通过调用不同的API函数,我们可以实现窗口创建、消息处理、用户界面设计等功能。
接下来,让我们来了解Windows窗口的创建和消息处理。
在Windows程序中,窗口是用户界面的基本元素。
我们可以使用CreateWindow函数来创建窗口,并指定窗口的属性,例如窗口类名、窗口标题、窗口大小等。
创建窗口后,我们需要使用消息循环来处理窗口的消息。
消息循环是一个无限循环,用于接收和处理窗口的各种消息,例如鼠标点击、键盘输入等。
在消息处理过程中,我们可以根据接收到的消息类型执行相应的操作,例如更新窗口内容、响应用户的操作等。
此外,Windows程序中常常需要使用各种控件来实现用户界面。
Windows API提供了一些常用的控件,例如按钮、文本框、列表框等。
我们可以使用CreateWindowEx函数来创建这些控件,并设置其属性,例如位置、大小、样式等。
创建完控件后,我们可以使用消息处理函数中的相应处理方式来处理控件的消息。
例如,点击按钮后,可以在消息处理函数中执行相应的操作,例如弹出消息框、更新窗口内容等。
另外,对于一些需要在窗口中绘制图形的应用程序,我们可以使用GDI(图形设备接口)来实现。
GDI提供了一组函数和数据结构,用于实现在窗口中绘制图形、文本等。
通过调用GDI函数,我们可以在窗口的设备上下文中进行绘制操作,例如绘制线条、填充矩形等。
Windows-编程基础——概述
Windows-编程基础——概述Windows是目前全球使用最广泛的操作系统之一,被应用于桌面电脑、服务器、移动设备等各种领域,其应用程序的开发也日益重要,成为了IT行业的一支重要力量。
本文将为大家介绍Windows编程基础概念及其相关知识。
Windows编程概述所谓 Windows编程,就是在 Windows系统上开发应用程序,这些应用程序既可以是桌面应用程序(如记事本、画图等),也可以是网络应用程序(如浏览器、邮件客户端等),甚至可以是系统级别的应用程序(如驱动程序、网络协议栈等)。
Windows编程语言众多,如C++、C#、Visual Basic、Java等,每种语言都有其优缺点和适用场景,选择编程语言时应根据应用程序的需求及开发环境做出选择,并且应掌握一定的编程技能和与Windows相关的知识。
Windows编程基础Windows APIWindows应用程序通常使用Windows API来访问Windows操作系统提供的各种功能,如窗口管理、文件系统、网络、图形界面等。
Windows API是一组由Microsoft提供的函数及其组件,为开发者提供了丰富的功能特性,并允许开发者扩展和自定义应用程序。
Windows API是C/C++语言的API,学习前应具备一定的C/C++编程基础,诸如指针、数组、结构体等。
.NET框架.NET框架是由Microsoft提供的一个跨平台、可移植性强的开发框架,其提供了一套高效可靠的工具,可以帮助开发人员快速地构建高质量的应用软件。
.NET框架应用广泛,能够支持多种编程语言,如C#、Visual Basic等,其主要特性包括面向对象、自动内存管理、多语言互操作等。
Windows应用程序开发窗体应用程序窗体应用程序是指在Windows系统中运行的应用程序,具有典型的图形界面和交互形式。
Windows操作系统提供了一套窗口管理接口,可以方便地实现各种用户界面。
Windows基本操作_从入门到精通(实用版)
常用菜单区
传统菜单区
退出系统区
WINDOWS基本操作
常用菜单区:位于“开始”菜单左边,其中显示了用户最常用的命令和 “所有程序”菜单项。单击就可以启动该程序。 所有程序(P):用户安装的所有应用软件,系统软件,工具软件和系统 自带的一些程序和工具都可从这里启动,将鼠标移动到绿色箭头上,就会 自动将下拉箭头展开。 运行(R):通过输入DOS命令来运行某些程序。 搜索(S):主要用于搜索计算机中的文件和文件夹。用户可以使用该命 令按钮查找文件或文件夹(知道计算机中有此文件/文件夹,但是回忆不 起来放在何处),单击该按钮就会在当前窗口的左侧出现搜索对话框,在 “要搜索的文件或文件夹名为(M):”中输入你要搜索的文件或文件夹 的名称;在“搜索范围(L):”输入你要搜索的范围(D盘—代表只在D 盘里边寻找),如果知道它的日期,类型,大小话就单击前面的方格进行 更近一 步的设置,这样查找速度就会很快!最后单击“立即搜索”,计 算机就会查找该文件/文件夹,查找成功的话就会在右边空白处显示出来
WINDOWS基本操作
WINDOWS基本操作
屏幕保护程序:“屏幕保护程序”是系统自动在用户一定时间内不对 计算 机进行任何操作时系统自动打开预设的画面。画面用户可以自行定 义,单击“屏幕保护程序”下边的下拉箭头可以选择相应的画面,单 击 “设置”改变画面运行的速度,单击“等待”后面的上下箭头可以改 变等待 时间;单击“电源”按钮(这里边的设置可以降低电量消耗----用户暂 时 不使用计算机但有不想关机,用户需要使用时只需按键盘上任意键即 可恢复初始状态)在出现的对话框通过下拉箭头选择时间改变“关闭 监 视器”,“关闭硬盘”和“待机系统”,最后单击“确定”即可。 任务栏和语言栏 桌面任务栏如下图所示:
WINDOWS应用程序的工作原理
WINDOWS应用程序的工作原理概述在现代计算机系统中,Windows应用程序是我们日常工作和学习中不可或缺的一部分。
然而,很少有人真正了解Windows应用程序的工作原理。
本文将详细介绍Windows应用程序的基本工作原理,并通过列举要点的方式来解释。
Windows应用程序的核心组件Windows应用程序的工作原理涉及多个核心组件,包括:1.操作系统:Windows操作系统是应用程序运行的基础。
它提供了各种功能和服务,包括进程管理、内存管理和文件系统等。
Windows应用程序是在操作系统的环境下运行的。
2.应用程序代码:应用程序代码是应用程序的核心部分。
它定义了应用程序的功能和行为。
应用程序代码可以使用各种编程语言(如C++、C#、Java 等)来编写。
3.用户界面:Windows应用程序通常具有图形用户界面(GUI),这使得用户可以通过可视化的方式与应用程序交互。
用户界面包括窗口、菜单、按钮和文本框等组件。
4.进程和线程:Windows应用程序在操作系统中作为进程运行。
进程是操作系统分配给应用程序的一块内存空间。
每个进程可以包含一个或多个线程,线程是进程内的执行单元。
Windows应用程序的工作流程下面是Windows应用程序的基本工作流程,其中的要点如下:•启动:当用户双击应用程序图标时,操作系统会启动应用程序的进程。
•初始化:在应用程序启动时,操作系统会执行初始化过程,包括加载依赖的库和资源。
•用户界面显示:一旦初始化完成,应用程序会显示用户界面。
用户可以通过界面与应用程序进行交互。
•响应用户输入:用户可以通过键盘、鼠标或触摸屏等输入设备与应用程序交互。
应用程序会根据用户输入做出相应的响应。
•业务逻辑处理:应用程序会根据用户输入执行相应的业务逻辑。
这可能涉及数据处理、计算、网络通信等操作。
•数据存储:应用程序可能需要将用户输入或计算结果保存到硬盘或数据库等存储介质中。
•关闭:当用户关闭应用程序时,应用程序会执行清理和关闭操作,释放占用的资源并终止进程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可以从这里下载到这个工具:
/team/fxcop/
/library/default.asp?url=/library/enus/dnpag/html/scalenethowto13.asp
CLR Profiler
if(null==_Instance) _Instance = new Singleton();
return _Instance;
} }
抽象工厂模式
外观模式
观察者模式
模型-视图-控制器模式
所谓MVC,指的是一种划分系统功能的方法,它将一 个系统划分为三个部分: 模型:封装了数据源和所有对这些数据的操作 视图:封装了是对数据源的一种显示。一个模型可 以由多个视图,而一个视图理论上也可以同不同的 模型关联起来 控制器:封装了是外界作用于模型的操作。通常, 这些操作会转发到模型上,并调用模型中相应的一 个或者多个方法 控制器在模型和视图之间起到连接的作用,处理用 户在视图上的输入,会转发给模式。这样模型和视 图两者之间可以实现松散耦合
.NET开发入门到精通十四: 复杂的问题,一流的解决方案
讲师:付仲恺
微软特邀开发专家
基础预习
熟悉.NET开发
有软件工程的相关经验
LEVEL 400
议题
代码插入
自定义对象在逻辑层间的传输
设计模式 小组构建工具 测试驱动开发 其它工具
代码插入
使用跟踪信息来调试并且配置代码
演示三
在逻辑层中传输数据
设计模式
设计模式描述了一组在设计中重复出现的问题的 解决方案 设计模式描述了对象的设计以及相互之间的作用 设计模式分类:
创建型模式 描述怎样创建一个对象,以及如 何隐藏对象创建的细节,从而使得程序代码不 依赖于具体的对象
结构型模式 描述类和对象之间如何进行有效 的组织,形成良好的软件体系结构。 行为型模式 描述类或对象之间如何交互以及 如何分配职责
BuildIt - 由Microsoft开发的自动化构建工具
演示五
NAnt自动化构建
测试驱动开发
测试先行
单元测试数据的选择
正常数据 边界条件
坏数据
数据组合
NUnit - 用户自动化单元测试的工具
/projects/nunit
可以选择是否对数据流进行加密
产生基于64字节编码的可序列化的字符串并且返回
在属性的set方法中:执行相反的操作
解码字符串到一个字节数组中
如果字符串是经过加密的,则进行解密 反序列化字节成为一个非序列化成员
各层对异常的处理
NorthwindTrader中对于操作结果的传递
设计一个抽象类Result
.NET提供了两种代码插入方式:
Debug Trace
派生自System.Diagnostics 命名空间。 对调试版本使用 DEBUG,而对所有版本使用 TRACE 遵循严格的格式设置并且只输出帮助了解程序流 所需的最少内容
Trace和Debug类
方法:Write, WriteIf, WriteLine, WriteLineIf
定义 DEBUG 时,Debug 类是活动的
定义 TRACE 时,Trace 类是活动的 Debug.WriteLineIf ( ShowTrace, “ShowTrace" ) ; 使用TraceSwitch控制Trace类的输出
TraceSwitch类
继承自Microsoft System.Diagnostics TraceSwitch 是一个简单的条件类,它使得跟踪各个程序集 、模块和类变得更加容易 TraceSwitch 的目的是可以轻松地确定跟踪级别,以便代码 能够即时生成适当的输出
ResultSucess, ResultException, ResultBrokenBusinessRule继承自Result抽象类
Web方法声明返回Result类,并且使用 XmlIncludeAttribute来指明继承自Result的类 实现数据类的XML序列化 在客户端编写逻辑代码以测试从Web方法中返 回的结果的类型
单件(Singleton)
//在每个应用程序中确保只有一个实例 public class Singleton { private static Singleton _Instance = null; private Singleton() { }
public static Singleton GetInstance() {
常用的设计模式
单件 - 确保一个类只有一个实例,并且为它提供一 个全局的访问点 抽象工厂 -提供一个创建一系列相关或相互依赖对 象的接口,而无须指定它们的具体类 外观 –提供了统一的接口以访问系统内部的复杂 的子系统 观察者 - 在对象之间定义一对多的依赖关系,当一 个对象的状态发生更变得时候,将通知并且更新所 有与它相关的对象 模型-视图-控制器 - 模块化应用程序的用户界面功 能,以便于能够方便的修改各个部分
演示二
TraceListener输出调试信息到MSMQ
自定义对象在逻辑层间的传输
依赖于中间层的实现选择:
EnterpriseServices
Remoting XML Web Service
从 Web Services中,自定义对象使用 XML 序建后自动对组件执行单元测试
演示六
测试驱动开发
其它工具
FXCop是用于帮助检查.NET文件集问题的工具. 关于这个工具的文章:
/msdnmag/issues/04/06/Bugslayer/defaul t.aspx
只有对象中的公共字段和公共读/写属性被序列 化为 XML 专用字段、索引生成器、专用属性、只读属性 及对象图不会被序列化
解决XML序列化限制
使用XmlIgnoreAttribute属性来标记不可序列化的成员
创建可以被序列化为字符串类型的公共属性
在属性的get方法中:
使用二进制序列化将不可序列化成员序列化到 MemoryStream流中
System.Diagnostics.DefaultTraceListener System.Diagnostics.EventLogTraceListener System.Diagnostics.TextWriterTraceListener 通过继承System.Diagnostics.TraceListener抽象类, 实现自定义输出类型 Trace.Listeners.Add( new ConsoleTraceListener() ); Trace.WriteLine( "Hello World!" ); 在App.config中也可以添加监听器
通过 TraceSwitch 类的属性来确定跟踪级别,
提供了五种跟踪级别: Trace Level Off Value 0
Errors
Warnings Info Verbose
1
2 3 4
演示一
代码插入
TraceListener类
通过监听器实现代码跟踪的输出
系统自带了三种监听类:
DebugView
下载地址:
演示七
CLR Profiler
总结
Trace和Debug类在实现代码跟踪中发挥着重要作 用 解决XML序列化在传递自定义对象时的局限性 设计模型能够帮助你构建更为灵活的代码
许多工具能够帮助开发者构建.NET应用程序
演示四
设计模式
小组构建工具
NAnt - 用于.NET自动化构建的工具
/projects/nant /library/default.asp?url=/librar y/en-us/dnbda/html/tdlg_app.asp