System.Version 类

方法描述

表示程序集、操作系统、或者公共语言运行时的版本号。 此类不能被继承。

语法定义(C# System.Version 类 的用法)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class Version : ICloneable, 
	IComparable, IComparable, IEquatable

构造函数

构造函数名称 构造函数描述
Version() 初始化 Version 类的新实例。
Version(String) 使用指定的字符串初始化 Version 类的新实例。
Version(Int32, Int32) 使用指定的主要版本号值和次要版本号值初始化 Version 类的新实例。
Version(Int32, Int32, Int32) 使用指定的主要版本号、次要版本号和内部版本号值初始化 Version 类的新实例。
Version(Int32, Int32, Int32, Int32) 用指定的主要、次要、内部和修订号初始化 Version 类的一个新实例。

成员/方法

方法名称 方法描述
Clone 返回一个新的 Version 对象,该对象的值与当前的 Version 对象相同。
CompareTo(Object) 将当前 Version 对象与指定的对象进行比较,并返回二者相对值的一个指示。
CompareTo(Version) 将当前 Version 对象与指定的 Version 对象进行比较,并返回二者相对值的一个指示。
Equals(Object) 返回一个值,该值指示当前 Version 对象是否等于指定的对象。 (重写 Object.Equals(Object)。)
Equals(Version) 返回一个值,该值指示当前 Version 对象和指定的 Version 对象是否表示同一个值。
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 返回当前 Version 对象的哈希代码。 (重写 Object.GetHashCode()。)
GetType 获取当前实例的 Type。 (继承自 Object。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
Parse 将版本号的字符串表示形式转换为等效的 Version 对象。
ToString() 将当前 Version 对象的值转换为其等效的 String 表示形式。 (重写 Object.ToString()。)
ToString(Int32) 将当前 Version 对象的值转换为其等效的 String 表示形式。 指定的计数指示要返回的部分数。
TryParse 尝试将版本号的字符串表示形式转换为等效的 Version 对象,并返回一个指示转换是否成功的值。

提示和注释

版本号由二至四个部分组成:主要版本号、次要版本号、内部版本号和修订号。 主要版本号和次要版本号是必选的;内部版本号和修订号是可选的,但是如果定义了修订号部分,则内部版本号就是必选的。 所有定义的组件都必须是大于或等于零的整数。 版本号的格式如下所示(可选组件在方括号中演示([和]):

主要版本号.次要版本号[.内部版本号[.修订号]]

应根据下面的约定使用这些部分:

主要版本:名称相同但主要版本号不同的程序集不可互换。 更高版本号可能表明大幅重写无法假定向后兼容的产品。

次要版本:如果两个程序集的名称和主要版本号相同,而次要版本号不同,这指示显著增强,但照顾到了向后兼容性。 该较高的次要版本号可指示产品的修正版或完全向后兼容的新版本。

内部版本:生成号的不同表示对相同源所作的重新编译。 处理器、 平台或编译器更改时,可能使用不同的内部版本号。

修订号:名称、主要版本号和次要版本号都相同但修订号不同的程序集应是完全可互换的。 更高修订号可能在修复以前发布的程序集安全漏洞的版本中使用。

程序集的只有内部版本号或修订号不同的后续版本被认为是先前版本的修补程序 (Hotfix) 更新。

从 .NET Framework 2.0 开始,MajorRevision 和 MinorRevision 属性允许您在发布永久解决方案之前标识应用程序的一个临时版本,例如,纠正某个问题。 此外,Windows NT 操作系统使用 MajorRevision 属性对 Service Pack 号进行编码。

为程序集指定版本信息

通常,不使用 Version 类来为程序集指定版本号, 相反,AssemblyVersionAttribute 类是用来定义程序集的版本的,如这个主题中的示例作述。

检索版本信息

Version 对象最常用于存储有关某个系统或应用程序组件(如操作系统)、公共语言运行时、当前应用程序的可执行文件或特定程序集的版本信息。 下面的示例演示一些最常见情况:

检索操作系统的版本。 下面的示例使用 OperatingSystem.Version 属性检索操作系统的版本号。

C#

VB

复制

// Get the operating system version.

OperatingSystem os = Environment.OSVersion;

Version ver = os.Version;

Console.WriteLine("Operating System: {0} ({1})", os.VersionString, ver.ToString());

检索公共语言运行时的版本。 下面的示例使用 Environment.Version 属性检索有关公共语言运行时的版本信息。

C#

VB

复制

// Get the common language runtime version.

Version ver = Environment.Version;

Console.WriteLine("CLR Version {0}", ver.ToString());

检索当前应用程序的版本。 下面的示例使用 Assembly.GetEntryAssembly 方法来获取对表示应用程序可执行文件的 Assembly 对象的引用,然后检索应用程序可执行文件的版本号。

C#

VB

复制

// Get the version of the executing assembly (that is, this assembly).

Assembly assem = Assembly.GetEntryAssembly();

AssemblyName assemName = assem.GetName();

Version ver = assemName.Version;

Console.WriteLine("Application {0}, Version {1}", assemName.Name, ver.ToString());

检索当前程序集的版本。 下面的示例使用 Assembly.GetExecutingAssembly 方法来获取对表示当前程序集的 Assembly 对象的引用,然后检索当前程序集的版本信息。

C#

VB

复制

// Get the version of the current application.

Assembly assem = Assembly.GetExecutingAssembly();

AssemblyName assemName = assem.GetName();

Version ver = assemName.Version;

Console.WriteLine("{0}, Version {1}", assemName.Name, ver.ToString());

检索特定程序集的版本。 下面的示例使用 Assembly.ReflectionOnlyLoadFrom 方法来获取对具有特定文件名的 Assembly 对象的引用,然后检索其版本信息。 请注意,还有其他几种方法可按文件名或强名称实例化 Assembly 对象。

C#

VB

复制

// Get the version of a specific assembly.

string filename = @".\StringLibrary.dll";

Assembly assem = Assembly.ReflectionOnlyLoadFrom(filename);

AssemblyName assemName = assem.GetName();

Version ver = assemName.Version;

Console.WriteLine("{0}, Version {1}", assemName.Name, ver.ToString());

比较版本对象

可使用 CompareTo 方法确定其中一个 Version 对象是否早于、等于或迟于第二个 Version 对象。 下面的示例指示版本 2.1 高于版本 2.0。

C#

VB

复制

Version v1 = new Version(2, 0);

Version v2 = new Version("2.1");

Console.Write("Version {0} is ", v1);

switch(v1.CompareTo(v2))

{

case 0:

Console.Write("the same as");

break;

case 1:

Console.Write("later than");

break;

case -1:

Console.Write("earlier than");

break;

}

Console.WriteLine(" Version {0}.", v2);

// The example displays the following output:

// Version 2.0 is earlier than Version 2.1.

要使两个版本平等,则第一个 Version 对象的主版本号、次版本号、内部版本号和修订版本号必须与第二个的 Version 对象的上述内容相同。 如果 Version 对象的内部版本号或修订号尚未定义,则认为 Version 对象早于 Version 对象,后者的内部版本号或修订号等于零。 下面的示例通过比较具有未定义版本组件的三个 Version 对象演示这一点。

C#

VB

复制

using System;

enum VersionTime {Earlier = -1, Same = 0, Later = 1 };

public class Example

{

public static void Main()

{

Version v1 = new Version(1, 1);

Version v1a = new Version("1.1.0");

ShowRelationship(v1, v1a);

Version v1b = new Version(1, 1, 0, 0);

ShowRelationship(v1b, v1a);

}

private static void ShowRelationship(Version v1, Version v2)

{

Console.WriteLine("Relationship of {0} to {1}: {2}",

v1, v2, (VersionTime) v1.CompareTo(v2));

}

}

// The example displays the following output:

// Relationship of 1.1 to 1.1.0: Earlier

// Relationship of 1.1.0.0 to 1.1.0: Later

System.Version 类例子

在运行时,该示例使用 Assembly.GetExecutingAssembly 方法以获取可执行程序集的引用,并且该示例从 Assembly.GetName 方法返回的 AssemblyName 对象的 Version 属性中检索程序集的版本信息 。

using System;
using System.Reflection;

[assembly:AssemblyVersionAttribute("2.0.1")]

public class Example1
{
   public static void Main()
   {
      Assembly thisAssem = Assembly.GetExecutingAssembly();
      AssemblyName thisAssemName = thisAssem.GetName();

      Version ver = thisAssemName.Version;

      Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name);    
   }
}
// The example displays the following output:
//        This is version 2.0.1.0 of Example1.

继承层次结构

System.Object

System.Version

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。

相关资源

System 命名空间
MSDN