VS.NET集成开发环境右上方为解决方案资源管理器。其用户界面如下所示。
解决方案资源管理器包含一个工具条和一个解决方案资源树状列表。[袁永福版权所有]
解决方案资源树状列表的方式列出了C#工程中包含的所有的成员项目。这个树状列表中列出的常见的成员项目类型有以下几种。
这个树状列表的只有一个“解决方案”根节点,根节点下面列出了该解决方案下的所有的成员项目。解决方案下面一般是各种类型的工程项目节点。还可以是其他文件。
比如在上图中,树状列表根节点是“ ”,它下面包含了一个C#工程节点。
鼠标右击解决方案节点,会如下图弹出快捷菜单。
该快捷菜单中常用的菜单项目有
生成解决方案 | 对该解决方案下的所有的程序工程进行编译,输出编译结果。 这个进行是增量编译。在编译一个程序工程前会判断该工程及其内容是否发生改变,若改变了则进行编译,否则就是用最后一个编译结果。这能节省生成解决方案的执行时间。 比如对于一个C#工程,若在最后一次编译成功后所有的程序源代码文件,资源文件没有修改过,则生成解决方案时该C#工程不会编译而是用最后一次编译结果。 |
重新生成解决方案 | 也是将解决方案下的所有的程序工程进行编译,输出编译结果。但不会进行增量编译判断。 |
添加 | 该菜单项目有子菜单项目。 |
添加→新建项目 | 显示“添加新项目”对话框,若用户的操作新增了一个项目,则将新增的项目添加到这个解决方案中。下一次打开解决方案时也会加载这个刚刚新增的程序项目。 |
添加→现有项目 | 显示一个“添加现有项目”的文件选择对话框,若用户选择了一个VS.NET支持的程序项目文件,比如C#或者VB.NET项目文件,则VS.NET加载该项目并添加到这个解决方案中。下一次打开解决方案时也会加载这个程序项目。 |
添加→新建网站 | 显示一个“添加新网站”对话框,若用户的操作新增了一个网站类型的程序项目则将这个新增的项目添加到这个解决方案中。 |
添加→现有网站 | 显示一个“添加现有网站”对话框,若用户的操作打开了一个网站类型的程序项目,则VS.NET将这个程序项目添加到解决方案中。 |
重命名 | 修改解决方案的名称。 |
属性 | 在VS.NET的主工作区域中显示解决方案属性窗口。 |
解决方案节点下列出了该解决方案中的程序工程节点。一个解决方案可以包含多个和多种程序工程,比如一个解决方案可以包含若干个C#工程,若干个VB.NET工程或若干个VC++.NET工程,安装工程等等。[袁永福版权所有]
在上图中,节点“ ”就是程序工程节点。
点击程序工程节点,会如下图弹出快捷菜单
该快捷菜单中常用的菜单项目有
生成 | 对程序项目进行编译,输出编译结果。会进行增量编译判断,若最后一次生成后所有的源代码或资源文件没有修改过则不会重新生成而直接使用上一次的编译结果。 |
重新生成 | 对程序项目进行编译,输出编译结果。不会进行增量编译判断。 |
添加 | 这个菜单项目有若干子菜单。 |
添加→新增项 | 显示“添加新项”对话框,往这个程序项目中添加新的文件。 |
现有项 | 显示“添加现有项”对话框,可将多个已经存在的文件添加到程序项目中。 |
添加→新建文件夹 | 在程序项目中新建一个文件夹。 |
添加→Windows窗体 | 显示“添加新项”对话框,并自动设置项目类型为“Windows 窗体”。用于快速的向程序项目中添加新的Windows窗体类型。 |
添加→用户控件 | 显示“添加新项”对话框,并自动设置项目类型为“用户控件”。用于快速的向程序项目中添加新的用户控件类型。 |
添加引用 | 显示“添加引用”对话框,为程序项目添加一个程序集引用,使得软件能调用其他程序集中已经实现的软件功能。 |
添加Web引用 | 显示“添加Web引用”对话框,为程序项目添加一个Web引用,是的软件能调用WebService。 |
设为启动项目 | 在VS.NET中开发人员点击VS.NET的菜单“调试-启动调试”或者按在F5键以调试模式启动程序时,由于解决方案可以包含多个程序工程项目,而VS.NET不支持同时运行所有的程序项目,因此必须从多个程序工程项目中指定一个作为首先启动的项目。使用本菜单项目就是指定当前程序工程项目为启动项目。 启动项目必须为WinForm类型、命令行类型或者网站类型,不能为类库类型。 |
移除 | 在解决方案中删除该项目,但不会删除任何项目文件,只是让解决方案不再包含这个程序工程项目。 |
重命名 | 修改程序工程项目的名称。项目工程名称和文件名是相同的,修改工程项目名称也会修改文件名。注意,修改工程名称不会修改工程的程序集名称和默认命名空间。 比如在这里的C#工程“第一个Windows应用程序”,它的工程文件名为“第一个Windows应用程序.csproj”;若修改项目工程名称为“第二个Windows应用程序”,则它的工程文件名修改为“第二个Windows应用程序.csproj”。但这个工程编译输出结果还是“第一个Windows应用程序.exe”。 |
在树状列表的“引用”节点下列出了本C#工程引用的外部程序集。外部程序集就是其他人已经开发好的独立的程序模块,开发人员在开发自己的程序中可以调用这些现有的程序模块的功能,实现了软件的重用。[袁永福版权所有]
在本例中可以看到,C#工程“第一个Windows应用程序”引用了“System”、“System.Data”、“System.Deployment”、“System.Drawing”、“System.Windows.Forms”和“System.Xml”等6个外部程序集。
鼠标右击“引用”节点会弹出如下图所示的快捷菜单。
该快捷菜单中,“添加引用”菜单功能等于程序工程的快捷菜单中的“添加引用”,“添加Web引用”菜单功能等于程序工程的快捷菜单中的“添加Web引用”。
程序工程节点下大部分是程序文件节点。包括源代码文件、程序资源文件和其他文档文件。对于某些程序模块,比如窗体、用户控件、ASP.NET页面等,需要多个程序文件的支持,此时会将这些相关联的文件显示为主文件的子节点。
如下图所示,对于一个窗体一般包含三个文件。比如对于窗体“frm左对齐”,包含三个文件“frm左对齐.cs”、“frm左对齐.Designer.cs”和“frm左对齐.resx”。其中第一个文件是窗体源代码主文件,“Designer.cs”是窗体设计器自动生成的代码文件,“resx”文件是窗体资源文件,用于保存窗体中的诸如图片等资源数据。
如下图所示,鼠标右击文件节点,会显示一个快捷菜单。
该快捷菜单中常用的菜单项目有
打开 | 以该文件类型对应的默认的方式打开文件。在树状列表中鼠标双击某个文件就相当于执行了“打开”操作。 比如对于窗体代码文件则在VS.NET主工作区域中打开窗体设计器。 对于纯粹的源代码文件则在主工作区域中显示该源文件的内容。 对于Word文档则会调用MS Word程序打开该文件。 |
打开方式 | 显示如下图所示的“打开方式”对话框,选择某种打开方式来打开文件。 |
查看代码 | 直接查看文件的源代码,而不调用某种可视化的设计器。 比如对于窗体代码文件,默认是调用窗体设计器打开它的,而点击“查看代码”则显示该窗体代码文件的C#源代码。 |
查看设计器 | 尽量调用当前文件的文件类型配套的可视化设计器来查看和编辑文件内容。 比如对于本例中的Form1.cs调用窗体设计器来打开文件。 |
从项目中排除 | 将当前文件从程序项目中去掉,使得程序项目不再包含该文件。但不会从磁盘中删除该文件。今后还可以使用“添加现有项”的操作将文件重新包含在程序项目中。 |
剪切 | 剪切文件。 |
复制 | 复制文件。 |
删除 | 删除文件。注意,该操作将从磁盘中永久的删除文件,而且无法使用Windows的回收站功能恢复文件。 |
重命名 | 修改文件名。 |
属性 | 在属性列表中显示该文件的属性设置。 |
对于不同的文件类型,该快捷菜单的内容可能会发上改变,即使对于同一种扩展名的文件其菜单内容也可能不同。
比如对于文件Form1.cs,VS.NET检测到该文件是一个窗体的主源代码文件,因此它的快捷菜单有“查看设计器”项目,而且点击“打开”菜单会调用WinForm窗体设计器来打开该源代码文件;而对于Program.cs文件,VS.NET检测到该文件是一个纯粹的C#源代码文件,此时它的快捷菜单就没有“查看设计器”,而且点击“打开”菜单会以文本方式显示该C#源代码文件的内容。
当程序文件非常多时,可以使用文件夹以树状的结构组织和管理程序文件,比如同属一个大的功能模块的程序代码可以放在一个文件夹下。
对于C#工程,文件夹还会影响源代码的默认的命名空间的。在项目中的子文件夹中新增程序源代码文件,则源代码中的命名空间就是“项目默认命名空间.子文件夹名”。而且子文件夹中的资源文件在编译后的程序集中的资源名称也是“项目默认命名空间.子文件夹名.文件名”。[袁永福版权所有]
对于本例中的C#工程“第一个Windows应用程序”,其默认命名空间是“第一个Windows应用程序”。在解决方案资源树状列表的C#工程项目节点上鼠标右击弹出快捷菜单,点击“添加-新建文件夹”菜单项目,此时会在工程节点下面新建了一个“NewFolder1”的文件夹。
鼠标右击“MyFolder”文件夹,会弹出如下图所示的快捷菜单。
这个快捷菜单中常用的菜单项目有
添加 | 该项目有多个子菜单项目。这些子菜单项目用于在这个目录下添加新的文件或子文件夹。 |
从项目中排除 | 从项目中排除这个文件夹以及所有的子文件夹和文件,但不从磁盘中删除该文件夹及其内容。 |
重命名 | 修改该文件夹的名称。 |
点击“重命名”菜单项目将该文件夹名称修改为“MyFolder”。这样就完成了新增一个指定名称的文件夹的操作。
在MyFolder文件夹下面新增一个名为“MyClass”的C#类源代码文件。打开该文件可以看到其代码文本如下
using System; using System.Collections.Generic; using System.Text; namespace 第一个Windows应用程序.MyFolder { class MyClass { } }
可以看到,默认情况下,这个类型的命名空间就是“第一个Windows应用程序.MyFolder”。
注意,当修改该文件夹的名称后,该文件夹下已有的[袁永福版权所有]源代码的命名空间不会自动更新,但此后新增的源代码中的命名空间包含了新的文件夹的名称的。
开发人员可以在文件夹下再建立子文件夹,形成多级目录结构。此时在多层文件夹下面新增的C#代码文件其默认的命名空间就是“项目默认命名空间.文件夹名.子文件夹名”,以此类推。这种文件夹层级关系理论上没有限制,但在笔者的实践中至多用上3层。