1、解决方案、项目、程序集、命名空间
恼火,书上一笔带过。还是有人写过一个比较清楚,百度是好老师。
初学者很容易把这些概念搞混淆。先说说项目(Project),通俗的说,一个项目可以就是你开发的一个软件。
在.Net下,一个项目可以表现为多种类型,如控制台应用程序,Windows应用程序,类库(Class Library),
Web应用程序,Web Service,Windows控件等等。如果经过编译,从扩展名来看,应用程序都会被编译为.exe文件,
而其余的会被编译为.dll文件。既然是.exe文件,就表明它是可以被执行的,表现在程序中,这些应用程序都有一个主程序入口点,
即方法Main()。而类库,Windows控件等,则没有这个入口点,所以也不能直接执行,而仅提供一些功能,给其他项目调用。
在Visual Studio.Net中,可以在“File”菜单中,选择“new”一个“Project”,来创建一个新的项目。例如创建控制台应用程序。
注意在此时,Visual Studio除了建立了一个控制台项目之外,该项目同时还属于一个解决方案(Solution)。
这个解决方案有什么用?
如果你只需要开发一个Hello World的项目,解决方案自然毫无用处。但是,一个稍微复杂一点的软件,都需要很多模块来组成,
为了体现彼此之间的层次关系,利于程序的复用,往往需要多个项目,每个项目实现不同的功能,最后将这些项目组合起来,
就形成了一个完整的解决方案。形象地说,解决方案就是一个容器,在这个容器里,分成好多层,好多格,用来存放不同的项目。
一个解决方案与项目是大于等于的关系。建立解决方案后,会建立一个扩展名为.sln的文件。
在解决方案里添加项目,不能再用“new”的方法,而是要在“File”菜单中,选择“Add Project”。添加的项目,可以是新项目,
也可以是已经存在的项目。
程序集叫Assembly。学术的概念我不想提,通俗的角度来说,一个项目也就是一个程序集。从设计的角度来说,
也可以看成是一个完整的模块(Module),或者称为是包(Package)。因此,一个程序集也可以体现为一个dll文件,
或者exe文件。怎样划分程序集也是大有文章的,不过初学者暂时不用考虑它。
命名空间,常用如下:
System 根命名空间,提供所有应用程序都使用的功能,如类型、回收器、属性、异常等。
System.Data 实现ADO.Net功能,数据访问
System.Drawing 提供GDI+功能
System.Windwos.Forms 提供创建窗体应用程序功能
System.XML 处理XML的类
在引用文件夹中的体现 :
2、大纲显示(分级显示)、智能感应
大纲显示(有些翻译为分级显示,搞得查看N久,只有这个),可以折叠显示代码,让视觉更清爽。
智能感应,利于我们这样不常用的人。
大纲显示除了系统定义的外,还可以人为定义
#region "这个是我定义的区域折叠"
.......................'可折叠的代码
#end region
3、程序集AssemblyInfo.vb
这是程序集的属性,一些产品标识、版本控制,不是用代码来设置的,是通过属性设置后体现在这里面。
4、窗体文件(Form1.Designer.vb)
VB6的窗体文件后缀名是frm,是不能用文本打开。VB.net可以打开:
打开后如下:
- <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
- Partial Class Form1
- Inherits System.Windows.Forms.Form
-
- 'Form 重写 Dispose,以清理组件列表。
- <System.Diagnostics.DebuggerNonUserCode()> _
- Protected Overrides Sub Dispose(ByVal disposing As Boolean)
- Try
- If disposing AndAlso components IsNot Nothing Then
- components.Dispose()
- End If
- Finally
- MyBase.Dispose(disposing)
- End Try
- End Sub
-
- 'Windows 窗体设计器所必需的
- Private components As System.ComponentModel.IContainer
-
- '注意: 以下过程是 Windows 窗体设计器所必需的
- '可以使用 Windows 窗体设计器修改它。
- '不要使用代码编辑器修改它。
- <System.Diagnostics.DebuggerStepThrough()> _
- Private Sub InitializeComponent()
- Me.TextBox1 = New System.Windows.Forms.TextBox()
- Me.Button1 = New System.Windows.Forms.Button()
- Me.SuspendLayout()
- '
- 'TextBox1
- '
- Me.TextBox1.Location = New System.Drawing.Point(21, 16)
- Me.TextBox1.Name = "TextBox1"
- Me.TextBox1.Size = New System.Drawing.Size(99, 21)
- Me.TextBox1.TabIndex = 0
- '
- 'Button1
- '
- Me.Button1.Location = New System.Drawing.Point(144, 16)
- Me.Button1.Name = "Button1"
- Me.Button1.Size = New System.Drawing.Size(75, 23)
- Me.Button1.TabIndex = 1
- Me.Button1.Text = "Button1"
- Me.Button1.UseVisualStyleBackColor = True
- '
- 'Form1
- '
- Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
- Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(244, 149)
- Me.Controls.Add(Me.Button1)
- Me.Controls.Add(Me.TextBox1)
- Me.Name = "Form1"
- Me.Text = "Form1"
- Me.ResumeLayout(False)
- Me.PerformLayout()
-
- End Sub
- Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
- Friend WithEvents Button1 As System.Windows.Forms.Button
-
- End Class
第一部分是重写释放资源
第二部分组件的初始化
先添加新控件
再分别设置初始值(TextBox1,Button1)
最后加入控件集合中
注意,为了提高效率,先用SuspendLayout()暂停布局,在所有设置妥当后,再ResumeLayout()恢复布局,
第三部分(最后两句)指明响应相应控件的事件
5、Debug和Release版本
Visual Studio 2012 项目中,程序的发行版本和调试版本使用不同的配置。
顾名思义,生成调试版本的目的是用于调试,而生成发行版本的目的是用于版本的最终分发。
如果您使用 Visual Studio 创建程序,Visual Studio 会自动创建这些配置并设置适当的默认选项和其他设置。 在默认设置下:
程序的“调试”配置用全部符号调试信息编译,不进行优化。 优化会使调试复杂化,因为源代码和生成的指令之间的关系更加复杂。
程序的“发布”配置被完全优化,不包含任何符号调试信息。 根据使用的编译器选项,可在 [OBSOLETE] 程序数据库文件 (C++)中生成调试信息。
如果以后还必须调试发行版本,创建 PDB 文件就非常有用。
可使用“标准”工具栏或配置管理器在发行版本和调试版本之间进行切换。
|