在运行时引用具有强名称的程序集

引用强名称程序集中的类型或资源的过程通常是透明的。您可以在编译时(事先绑定)或在运行时进行引用。

当您向编译器表明程序集显式引用另一程序集时,发生编译时引用。使用编译时引用时,编译器会自动获取定为目标的强名称程序集的公钥,并将其放在正在编译的程序集的程序集引用中。

Note注意

具有强名称的程序集只能使用其他具有强名称的程序集的类型。否则会危及具有强名称的程序集的安全。

对强名称程序集进行编译时引用

  • 在命令提示处,键入下列命令:

    <compiler command> /reference:<assembly name>

    在此命令中,compiler command 是您所用语言的编译器命令,assembly name 是引用的强名称程序集的名称。您也可以使用其他编译器选项(例如 /t:library 选项)创建库程序集。

下面的示例创建名为 myAssembly.dll 的程序集,该程序集从名为 myAssembly.cs 的代码模块中引用名为 myLibAssembly.dll 的强名称程序集。

 CopyCode image复制代码
csc /t:library myAssembly.cs /reference:myLibAssembly.dll

在运行时引用具有强名称的程序集

  • 要在运行时通过使用 Assembly.Load 或 Assembly.GetType 之类的方法引用具有强名称的程序集,必须使用引用的强名称程序集的显示名称。显示名称的语法如下:

<assembly name>, <version number>, <culture>, <public key token>

例如:

 CopyCode image复制代码
myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33 

在此示例中,PublicKeyToken 是公钥标记的十六进制形式。如果没有区域性值,请使用 Culture=neutral。

下面的代码示例说明如何以 Assembly.Load 方法使用该信息。

Visual Basic CopyCode image复制代码
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1")
C# CopyCode image复制代码
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1");

您可以使用下面的 强名称工具 (Sn.exe) 命令,为特定程序集输出十六进制格式的公钥和公钥标记:

sn -Tp <assembly>

如果您有公钥文件,则可改用以下命令(请注意命令行选项中大小写的区别):

sn -tp <assembly>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值