强名称程序集de构建和引用
背景:为获得程序集提供的许多好处,例如,在系统中多个应用程序之间共享,并行版本控制及其对安全型和部署更好的支持等,必须使用强名称程序集。.NET Framework使用强名称来提供唯一标识程序集的方法,允许应用程序与强名称程序集的多个版本一起运行,该强名称程序集的版本是与应用程序一起生成的,而且强名称具有确保程序集的可信性和不会被篡改的特性。
组成:强名称程序集由程序集标识组成,指:
- 程序集的简单文本名称
- 程序集版本号
- 区域性信息,如果提供电话的话(可选)
- 为客户端产生的公钥
- 数字签名
具体步骤:
创建强名称密钥对文件并且在CalculatorEngine库中引用此文件。然后创建WindowsCalculator应用程序是它引用强名称程序集。另外,还将使用ILDASM检查CalculatorEngine.dll和WindowsCalculator.exe的元数据。
(1) 创建强名称程序集
1) 打开命令提示符窗口。通过单击“开始”,然后指向“所有应用程序”,指向“Microsoft Visual Studio.NET 2003”,指向“Visual Studio.NET 工具”,然后单击“Visual Studio.NET 2003命令提示”。
2) 在命令提示符下,打开目录…\CalculatorEngine。
3) 输入命令“sn –k CalcKey.snk”,这将创建我们用来生成强名称程序集的一个强名称密钥文件。
4) 在Visual Studio.NET中的CalculatorEngine.sln解决方案文件。
5) 打开AssemblyInfo.cs文件。
6) 查找到“[assembly: AssemblyVersion("1.0.*")]”代码行,修改为:3.0.1.1
[assembly: AssemblyVersion("3.0.1.1")];
7) 在文件的底端添加新属性(attribute)来应用强名称密钥对文件。
[assembly: AssemblyKeyFile("CalcKey.snk ")];
8) 打开Calculator.cs源文件,重新生成程序集,然后关闭Visual Studio.NET。
9) 在Visual Studio.NET命令提示符提示窗口,打开目录…\ CalculatorEngine\bin\Debug。
10) 在命令提示符下,对CalculatorEngine.dll运行ILDASM。
ildasm CalculatorEngine.dll
11) 打开“MANIFEST”子节点。
12) 注意到在.assernbly CalculatorEngine项下,有一个.publickey项。这表示CalculatorEngine是一个强名称程序集。
13) 关闭“MANIFEST”窗口和ILDASM
(2) 创建引用强名称程序集的应用程序
1) 在Visual Studio.NET中,打开或是创建新的解决方案WindowsCalculator.sln。
2) 添加对“CalculatorEngine.dll”引用
3) 重新生成解决方案。
4) 在命令提示窗口,对“WindowsCalculator.exe”运行ILDASM,输入命令:
ildasm WindowsCalculator.exe
5) 打开“MANIFEST”子节点。注意在.assernbly extern CalculatorEngine项里不仅有版本号为3.0.1.1的项而且有publickeytoken项。这表示此应用程序有一个对外部强名称程序集的引用。