2.2 Windows Forms控件
在本节中,我们在窗体中添加Button和PictureBox控件,就像第1章的程序清单1.2所做的那样。读者可能还记得,第1.2节还修改了这个应用程序的版本号,因此首先让我们来看看Visual Studio是如何完成这个任务的。
2.2.1 AssemblyInfo文件
当我们创建C# Windows应用程序项目时,Visual Studio会在这个项目中包含一个AssemblyInfo.cs文件。这个文件定义了这个程序集的各种属性,例如在“Windows资源管理器”中“属性”对话框的“版本”选项卡上所显示的版本号。在C#中,“属性”(Attribute)是个声明性的标签,它影响程序集、类型(例如类)或类型成员(例如方法或属性)的设置或程序集所展现的行为。所有的属性都是基本.NET 框架所定义的System.Attribute类,后者是System命名空间的一个组成部分。
AssemblyInfo.cs文件使用了这个命名空间所定义的与程序集相关的一些属性。这些设置是用标准属性格式定义的,作用于程序集文件:
[assembly: <attribute>(<setting>)] |
按照这个目的而定义的各种属性类包括AssemblyVersionAttribute类,它支持文件版本号设置。在C#中,类名的属性部分可以省略,结果是像下面这样的版本号设置:
[assembly: AssemblyVersion("1.0")] |
表2-1对这个文件所使用的属性进行了总结。
![]() |
大部分属性都接受一个字符串,它指定了这个属性的值。唯一的例外是AssemblyVersion属性。版本号是在内部使用的,对应用程序所使用的其他程序集(即程序或程序库)的期望版本号和实际版本号进行比较。版本号的格式是个像下面这样的字符串:
Major.Minor.Build.Revision |
这4个值都应该是整数。前2个值是目前大多数产品所使用的主版本号和次版本号。第3个值是生成号(内部版本号),用于区分同一程序集的同一个次版本号的几次不同编译。最后一个值是修订号,用于bug修正或其他偶尔的更新。当然,我们可以根据自己的意愿来设置这些编号的含义,前面所述的只是推荐的做法。
生成号和修订号在程序集每次被生成时由编译器自动插入。这是通过插入1个星号(*)来代替这2个编号的其中1个或2个来实现的。
在这种情况下,自动产生的生成号是2000年1月1日以来的天数(本地时间)。自动产生的修订号是前一个午夜(本地时间)以来所经历的秒数除以2。这些自动产生的值保证每次编译所生成的是新的生成号和修订号,并且生成号总是处于增长中,而修订号在同一个生成号内总是处于增长中。应该注意,这个方案即使用上几千年,修订号也绝不会超出32位整数所能容纳的范围。
在我们的应用程序中,为了建立书中的代码与从本书的网站所下载的代码之间的联系,我们把这个应用程序的版本号设置为2.2。在这里,我们还将为AssemblyInfo.cs中的其他设置进行赋值,并使用Application类的ProductVersion属性在标题栏中自动包含这个版本号。
![]() |
![]() |
在这个应用程序中,我们可以显式地设置生成号和修订号,或者允许.NET自动产生它们。在本书中,我们将不断地修改版本号,把书中的章节与应用程序的当前版本相对应。读者也可以根据自己的意愿修改版本号,或者对版本号不作修改。在下载代码中,这些版本号可以标识与本书的特定章节相关联的文件。
版本号标识了客户所使用的产品的一个特定实例。它对于文档和技术支持非常有用,并可以提醒用户这个产品在什么时候添加了新的特性或功能。注意,在一个称为“关于”的对话框中显示版本号是种常见的做法。这个对话框可以通过应用程序的顶层菜单“帮助”来访问。我们将在本书的后面包含这个特性。
当然,Form1类并不是一个非常具有描述性的名称。因此,我们接下来修改这个类的名称。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||