安装好Visual Studio .NET 后,就可以开始编写第一个项目了。在Visual Studio .NET中,很少从一个空白文件开始,从头键入C#代码,编写项目的方式一般是先告诉Visual Studio .NET要创建什么类型的项目,然后Visual Studio .NET会自动生成文件和C#代码,给出该类型项目的基本框架。接着,用户就可以在其中添加自己的代码了。例如,如果要编写一个基于Windows GUI界面的应用程序(在.NET中,这称为Windows窗体),Visual Studio .NET就会建立一个文件,其中包含的C#源代码创建了一个基本窗体,这个窗体可以与Windows通信,接收事件。它还可以最大化、最小化、重新设置大小,用户只需在其中添加控件或其他功能。如果应用程序要设计为命令行工具(控制台应用程序),Visual Studio .NET就会提供一个基本命名空间、类和Main()方法。
最后,在创建项目时,Visual Studio .NET还设置了提供给C#编译器的编译选项—— 无论项目是编译为命令行应用程序、库,还是编译为Windows应用程序。它还告诉编译器需要引用的基类库(Windows GUI应用程序需要引用许多Windows.Forms相关的库,控制台应用程序则不需要)。当然如果必要,用户可以在编辑时,修改这些设置。
在第一次启动Visual Studio .NET时,出现的窗口称为起始页,如图1.3所示。这个起始页是一个HTML页面,其中包含各种链接,通过它们可以打开现有的项目,或者启动一个新项目。
图 1.3
1、选择项目类型
创建新项目时,既可以单击起始页面上的创建“项目”按钮,也可以单击文件菜单,选择“新建”︱“项目”。无论使用什么方式,都会显示“新建项目”对话框,如图1.4所示,其中给出了可以创建的各种项目。
图1.4
该对话框要求用户选择Visual Studio .NET为用户生成的某种初始框架文件和代码、编译选项,以及编译代码所使用的编译器:C#、VB.NET、J#或Visual C++.NET编译器。从这里可以看出,Microsoft为.NET提供了多种语言集成。对于本例,我们选择了C#控制台应用程序。
在C++方面,Visual Studio .NET可以创建所有旧的C++项目类型—— MFC应用程序、ALT项目等。在VB.NET方面,选项有一些变化,例如,可以创建VB.NET命令行应用程序(控制台应用程序)、.NET组件(类库)或者.NET控件(Windows控件库),但不能创建基于COM的旧风格的控件(.NET控件可以取代这种ActiveX控件)。
表1.1列出了Visual C# Projects可以创建的主要的项目:
表1.1
2、新建的控制台项目
在上述对话框中选择“控制台应用程序”选项,单击“确定”按钮,Visual Studio .NET就会提供许多文件,包括一个源文件Class1.cs,其中包含了最初的框架代码。图1.5显示了Visual Studio .NET编写的代码。
图1.5
可以看出,这是一个C#程序,但它实际上没有做任何工作,只是包含了C#可执行程序所必须的基本项目:一个命名空间和一个包含Main()方法的类,其中Main()方法是程序的入口点。命名空间可以不必要的,但不声明命名空间是一种不好的编程习惯。按下F5键,或者选择“调试”菜单中的“启动调试”,这段代码就可以编译和运行。在这样做之前,在程序中加入一行代码,让应用程序完成某个工作:
|
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApp
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Hello World");
- }
- }
- }
如果编译并运行了该项目,就会显示一个控制台窗口,但该窗口几乎立即就消失了,用户几乎看不到输出的信息。原因是在创建该项目,Visual Studio .NET记住了用户指定的设置,所以会把它编译并运行为控制台应用程序。然后,Windows知道需要运行一个控制台应用程序,但没有运行该程序的控制台窗口。所以,Windows就创建一个控制台窗口,并运行该程序。只要程序退出,Windows就认为不再需要该控制台窗口,因此就即时删除了它。这些都是非常逻辑化的操作,但如果希望能看到项目的输出结果,这些操作对用户就没有什么帮助。要避免这个问题,可以在Main()方法结束前插入下述代码:
|
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApp
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Hello World");
- Console. ReadKey ();
- }
- }
- }
样,代码运行后,会显示其输出结果,之后执行Console. ReadKey ()语句,用户按下如何键后,程序退出。这表示在用户按下键之前,控制台窗口一直会挂起。
这仅是在Visual Studio .NET中试运行控制台应用程序的问题。如果编写的是一个Windows应用程序,该应用程序显示的窗口会自动停留在屏幕上,直到用户显式退出程序为止。同样,如果在命令行提示符上运行一个控制台应用程序,就没有窗口消失的问题。
3、其他文件的创建
Class1.cs源代码文件不是Visual Studio .NET创建的惟一文件。如果查看一下Visual Studio .NET创建项目的文件夹,就会看到其中不仅仅有C#文件,还有如图1.6所示的完整目录结构。
图1.6
文件夹bin和obj存储编译好的文件和中间文件,obj的子文件夹存储各种临时或中间文件,bin的子文件夹存储编译好的程序集。
在项目的主文件夹ConsoleApp中,剩余的文件ConsoleApp.csproj是由Visual Studio .NET建立的,它们包含项目的信息是C#项目文件,这样Visual Studio .NET就知道如何编译项目,在下一次打开该项目时,知道如何读取它。