浅谈.NET中的版本管理
- 格式:docx
- 大小:90.09 KB
- 文档页数:5
浅谈.NET中的版本管理
目录
摘要
概念
正文
附注
总结
摘要:
随着社会的发展,人们对于科技应用到各个领域有新的认识,同时,这就使我们技术人员对于开发平台也有更高的要求。大家都知道,或者都听过,.NET有很强悍的版本控制,可以让我们很轻松的进行程序集的版本控制,实现程序的灵活配置和简单升级,告别Dll地狱,本文将用一个具体的实例说明如何使用这个功能。
概念:
(一)DotNet中的版本组成
DotNet中的版本由4个物理号码组成,如图(一)
图(一)
在程序集里面,我们可以通过加上AssemblyVersion特性来设置它,
如[assembly: AssemblyVersion("2.0.2.11")]
(二)GAC:
计算机范围内的代码缓存,它存储专门安装的程序集,这些程序集由计算机上的许多应用程序共享。在全局程序集缓存中部署的应用程序必须具有强名称,一个程序集如果注册到了GAC里,被其他程序集合引用的时候,将不会拷贝副本到引用的程序目录中。(本文只讨论注册到GAC中的程序集)
正文:
(1) 我们现在开始写第一个组件
它的版本号为1.0.0.0 有一个类,包含一个简单的方法,该方法返回一个字符串
代码如下,我都做了注解
//首先生成强名称到文件中
sn –k c:\Version.snk
//写类文件
v1.cs
using System;
using System.Reflection;
[assembly: AssemblyKeyFile(@"c:\Version.snk")] //因为注册到GAC,所以使用强名称签名[assembly: AssemblyVersion("1.0.0.0")] //设置版本号
namespace V1
{
public class V1
{
public V1()
{
}
public string GetVersion()
{
return "你好,我是版本1";
}
}
}
编译成组件V1.dll
拷贝这个V1.dll到文件夹c:\V1
把V1.dll注册到GAC
Gacutil –I c:\V1\V1.dll
系统显示注册成功
(2) 然后我们编写一个控制台程序测试这个组件
TestVersion.cs
///
///请添加对V1.dll(c:\V1\V1.dll)的引用,因为是在Gac里面,所以V1.dll不会在本地目录存在///
using System;
namespace TestVersion
{
class TestVersion
{
static void Main(string[] args)
{
V1.V1 v1=new V1.V1();
Console.WriteLine(v1.GetVersion());
Console.Read();
}
}
}
编译后运行(TestVersion.exe)
屏幕输出的结果是:
"你好,我是版本1"
(3) 好了,一切很美好,过了几年了,我们得升级程序了
现在来编写V1.dll升级版本,版本号为2.0.0.0
v1.cs
using System;
using System.Reflection;
[assembly: AssemblyKeyFile(@"c:\Version.snk")] ///使用上面的强名称
[assembly: AssemblyVersion("2.0.0.0")] ///注意,这里已经改了主版本号
namespace V1
{
public class V1
{
public V1()
{
}
public string GetVersion()
{
return "你好,我是版本2";///修改了输出的结果,这样我们才知道到底是运行了那个
}
}
}
编译成组件V1.dll
拷贝这个V1.dll到文件夹c:\V2
把V1.dll注册到GAC
Gacutil –I c:\V2\V1.dll
(4) .现在来看看再次运行TestVersion.exe输出了什么东西
是的,和原来的没有变化还是
"你好,我是版本1"
为什么不是"你好,我是版本2"?
我们用ildasm.exe打开程序集TestVersion.exe 看看
是的,它目前就是使用了版本1.0.0.0
(5) 我们开始进行版本升级
把TestVersion.exe使用的版本由1.0.0.0替换成版本2.0.0.0
其实很简单的,给我们的TestVersion.exe
加个配置文件TestVersion.exe.config里面打入
简单说明:
assemblyIdentity 主要进行程序集合的标识
其中name是程序集的名称publicKeyToken是公匙的标记;如何获得这些信息呢?很简单,打开%SystemDir%\assembly (我的是C:\WINNT\assembly)
可以看到这些信息(如下图,你的机器上可能和我不一样)