Visual C++.NET(2008)典型案例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 项目与解决方案

Visual Studio提供了两种方式来管理开发过程中的所有项:解决方案和项目。解决方案和项目包含一些项,这些项表示创建应用程序所需的引用、数据连接、文件夹和文件。一个解决方案可包含多个项目,所有的项目都组织到“解决方案资源管理器”中。

根据实际的开发情况,项目可以比较简单,也可以很复杂。简单的项目可以仅由一个源代码文件或HTML文件组成,而复杂的项目可能还包含有数据库脚本、存储过程、对现有XML Web Services的引用等。

Visual Studio将项目作为解决方案中的一个独立的整体,并以逻辑方式来管理、生成和调试构成应用程序的项。项目的输出通常是可执行程序(*.exe)、动态链接库(*.dll)文件或模块等。

1.3.1 项目的创建

Visual C++.NET提供了多种项目模板,使用这些模板能够快速地创建出具有特定应用程序框架结构的项目。通过选择“文件”→“新建”→“项目”菜单命令,弹出“新建项目”对话框。当选中“项目类型”窗格中的“Visual C++”项时,将在“模板”窗格中列出所有可以使用Visual C++.NET创建的所有项目模板,如图1.14所示。

图1.14 “新建项目”对话框

1. 项目类型

在对话框中的“项目类型”窗格下,“Visual C++”项下列出了项目类型的类别。选中的项目类型下某个类别后,在“模板”窗格中列出该类别下的应用程序模板类型。Visual C++.NET包含多种项目类型的应用程序模板,这些应用程序模板如表1.1所示。

表1.1 Visual C++.NET应用程序模板

在创建新项目时,Visual C++.NET提供应用程序向导来根据项目模板生成应用程序的框架及程序的源文件和目录,并且还提供程序的结构、基本菜单、工具栏、图标、#include语句及相应的程序代码。

在这些项目类型中,“Win32”项目类型主要用于创建传统的基于Win32 API的Windows应用程序。其中,“Win32控制台应用程序”项目模板可以用来创建使用C/C++编写的控制台应用程序,这类程序通常用来熟悉C/C++语言,并且都运行在Windows命令行窗口中。“Win32”项目模板可以创建含有窗口元素的Windows应用程序、动态链接库等,这也是Windows应用程序的底层编程方式。

“MFC”项目类型提供了创建基于Microsoft基础类库的应用程序。这些应用程序包括MFC支持的ActiveX控件、动态链接库、可执行程序等。MFC可执行程序通常分为五类:标准Windows应用程序、基于对话框的应用程序、基于窗体的应用程序、资源管理器样式的应用程序和Web浏览器样式的应用程序。本教程也主要通过这种项目类型来介绍使用Visual C++.NET的编程方式。

“CLR”项目类型主要创建基于.NET框架的应用程序,这类类型依赖CLR的支持,并使用托管C++编程。使用托管C++同样可以创建控制台应用程序、Windows窗体应用程序、Windows服务等。

2. 创建项目

这里通过Win32应用程序模板来创建一个项目名为Example的项目,通过该项目的创建过程来简单了解使用Visual C++.NET创建项目的一般步骤。

(1)当选择“文件”→“新建”→“项目”菜单命令,并弹出如图1.14所示的“新建项目”对话框后,在对话框中的“项目类型”窗格中选中“Visual C++”项目类型,并在“模板”窗格中选中“Win32项目”模板。

(2)在“名称”文本框中输入新项目的名称Example,并在“位置”组合框中输入该项目将要保存的位置,可以单击“浏览”按钮选择适当的路径,取消选中“创建解决方案的目录”复选框,如图1.15所示。

图1.15 新建Example项目

(3)单击“确定”按钮后,将自动弹出一个如图1.16所示的应用程序向导对话框。应用程序对话框中包含两个部分:左边部分列出应用程序向导的所有向导页,而右面部分是该向导页中的属性选项。

图1.16 Win32应用程序向导——“概述”向导页

(4)单击向导页面中的“下一步”按钮后将显示应用程序向导的下一个向导;单击“上一步”按钮后将返回到之前的向导页面;单击“完成”按钮则跳过以后的向导并立即创建该项目。在这里单击“下一步”按钮,将显示如图1.17所示的“应用程序设置”向导页。

图1.17 Win32应用程序向导——“应用程序设置”向导页

(5)向导页中的属性选项指定了应用程序向导创建项目的特定方式。通常,应用程序向导根据创建的项目类型会指定一些默认的设置。单击“完成”按钮后,应用程序向导将根据这些向导页的设置开始创建项目的目录、文件,并生成项目所必需的程序代码。

1.3.2 项目的组织

正如前面讲到,Visual C++.NET集成开发环境是以解决方案和项目来管理的。在创建新项目时,集成开发环境会创建一个与项目同名的目录,并在该目录下包含该项目所有的源文件、资源文件及其他相关的文件。

同时,当创建新项目时,Visual C++.NET会自动生成一个解决方案。如果在“新建项目”对话框中选中“创建解决方案的目录”复选框后,集成开发环境允许为解决方案指定一个目录,并且此时创建的项目将被存放在该解决方案的目录下。

1. 项目文件

在Visual C++.NET创建的项目中,所有的项目信息被单独保存在一个文本格式的项目文件(*.vcproj)中,该文件记录了项目中各部分间的依赖关系。同时,将解决方案的相关信息保存在*.sln和*.suo两个文件中,其中*.sln文件记录解决方案中各个项目的信息,而*.suo文件包含了解决方案中的可选项及配置信息。项目中常见的文件类型如表1.2所示。

表1.2 Visual C++.NET项目中常见的文件类型

2. 项目结构

通常在新建Visual C++.NET项目后,集成开发环境会自动为项目生成一个目录,并自动生成一个与项目同名的解决方案。在项目目录中保存了该项目的所有源文件,同时还保存了该项目的项目文件(*.vcproj),及该项目的解决方案文件(*.sln)和解决方案用户选项文件(*.suo),如图1.18所示。

图1.18 项目的目录结构

当编译或生成项目后,开发环境还会生成一个Debug或Release目录,这两个目录下包含有编译项目后的中间文件及链接后的可执行文件。其中,Debug版本是调试版本,该版本的应用程序含有相关的调试信息,可以用该版本对程序进行调试;Release版本是发布版本,该版本的应用程序的代码经过优化,代码空间更小而且执行速度更快,通常Release版本是在调试完成后的正式发行版本。可以在工具的解决方案配置下拉列表中选择最后生成的可执行文件版本。

如果使用Visual C++.NET创建的是MFC项目类型,那么集成开发环境还会在项目目录下生成一个res目录,在该目录中保存了项目中所有用到的资源文件,如图标、位图等。

然而,如果在“新建项目”对话框中选中了“生成解决方案的目录”复选框,那么生成的项目被保存在以解决方案名称创建的目录下,而解决方案文件(*.sln)和解决方案用户选项文件(*.suo)也被保存在解决方案的目录中。另外,在解决方案目录下还生成了一个Debug或Release目录,所有解决方案编译后生成的最终文件都放在该目录下而非项目目录下的Debug目录。

另外,在Visual C++.NET集成开发环境中的解决方案资源管理器中,所有项目也以类似的层次结构被组织到一个解决方案中。解决方案根节点下包含了所有项目的子节点,其中,每个项目又将项目中的头文件、源文件、资源文件等单独地组织起来,并从层次上体现这几部分之间的关系。

1.3.3 项目的属性

项目的属性信息包含了整个项目的配置、编译、调试、生产文件的位置等信息。Visual C++.NET为项目提供了一个属性页来指定和应用项目设置。在“解决方案资源管理器”中选择一个项目并用鼠标右键单击,在弹出的快捷菜单中选择“属性”菜单命令,或者选择“项目”→“属性”菜单命令后将弹出如图1.19所示的“MFCExample属性页”对话框。

图1.19 “MFCExample属性页”对话框

常规属性页中用于配置生成项目的位置、项目开发的相关信息等。其中,输出目录和中间目录属性分别表示生成项目最终文件的位置以及编译项目后产生的中间文件的位置,这些属性的值是以宏的形式来指定的。

字符集属性用于指定在项目表示字符串所采用的字符编码方式,其中,“使用多字节字符集”表示常用的编码方式,而“使用Unicode字符集”则表示所有的字符将以16位的Unicode编码方式表示的。

工具语言运行时支持属性指定项目中的程序代码是否需要依赖CLR,即说明是否可以包含托管代码。其中“无公共语言时支持”表示程序中的代码作为非托管代码,并不需要CLR的支持;而“公共语言运行时支持”表示程序中的某些代码将作为托管代码,并需要CLR的支持。通常,在编写纯C++/CLI代码时或者在进行托管C++与非托管C++混合编程时需要设置该属性为“公共语言运行时支持”。

对于其他属性页中的属性往往涉及对项目的高级配置,包括项目的编译、连接、调试、资源等过程的配置,通常可以将这些属性设置为默认值。