C#程序集系列08,设置程序集版本


区别一个程序集,不仅仅是程序集名称,还包括程序集版本、程序集公匙、程序集文化等,本篇体验通过界面和编码设置程序集版本。

 

□ 通过Visual Studio设置程序集版本

→右键项目,选择"属性",选择"应用程序"
→点击"程序集信息",设置如下,点击确定
45
→点击项目Properties文件夹下的AssemblyInfo.cs,可以看到程序集版本已经设置生效
[assembly: AssemblyVersion("3.3.3.3")]

 

□ 通过编码设置程序集版本

→在F盘的as文件夹下创建Cow.cs文件
→用记事本打开Cow.cs,编写如下,保存

using System;
using System.Reflection;
[assembly: AssemblyVersion("3.3.3.3")]
public class Cow
{
    public static void Moo()
    {
        Console.WriteLine("Moo version 1");
    }
}


→把Cow.cs编译成程序集
46
→在F盘的as文件夹下创建MainClass.cs文件

using System;
class MainClass
{
    static void Main()
    {
        Cow.Moo();
    }
}


→编译MainClass,引用Cow.dll,生成MainClass.exe文件
47
→运行MainClass.exe
48
→现在要试着篡改程序集,先删除Cow.dll
→在F盘的as文件夹下创建AnotherCow.cs文件
→用记事本打开AnotherCow.cs,编写如下,保存

using System;
using System.Reflection;
[assembly: AssemblyVersion("8.8.8.8")]
public class Cow
{
    public static void Moo()
    {
        Console.WriteLine("Moo version 2");
    }
}

以上,同Cow.cs相比,修改了程序集的版本以及方法的实现。
→编译AnotherCow.cs,重新生成Cow.dll程序集
49
→反编译Cow.dll来查看程序集的版本

.assembly Cow
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .hash algorithm 0x00008004
  .ver 8:8:8:8
}

○ .ver 8:8:8:8程序集版本发生了改变,原先是.ver 3:3:3:3

→运行MainClass.exe
50

 

总结:可以通过界面或编码设置程序集版本号;通过更新程序集来更新应用程序。

 

“C#程序集系列”包括:

  C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序

  C#程序集系列02,使用记事本查看可执行程序集的IL代码

  C#程序集系列03,引用多个module

  C#程序集系列04,在程序集包含多个module的场景下理解关键字internal

  C#程序集系列05,让程序集包含多个module

  C#程序集系列06,程序集清单,EXE和DLL的区别

  C#程序集系列07,篡改程序集

  C#程序集系列08,设置程序集版本

  C#程序集系列09,程序集签名

  C#程序集系列10,强名称程序集

  C#程序集系列11,全局程序集缓存

  C#程序集系列12,C#编译器和CLR如何找寻程序集

  C#程序集系列13,如何让CLR选择不同版本的程序集

参考资料:

http://www.computersciencevideos.org/  created by Jamie King

原文地址:https://www.cnblogs.com/darrenji/p/3970079.html