强名称程序集(strong name assembly)——为程序集赋予强名称

简介:          引言:                 在以前的项目开发中,在程序集中见到过一个后缀为*.snk的文件,当时看这个文件的图标,感觉可能是企业内部保护版权啥的一种方式。  一,强程序集解决了哪些问题?1,唯一标识一个程序集2,放置程序集被仿冒和被篡改。




         引言

                 在以前的项目开发中,在程序集中见到过一个后缀为*.snk的文件,当时看这个文件的图标,感觉可能是企业内部保护版权啥的一种方式。



  一,强程序集解决了哪些问题?


1,唯一标识一个程序集

2,放置程序集被仿冒和被篡改。

3,可以部署到全局程序集缓存(GAC:GlobalAssembly Cache)中;在将强名称程序集不熟在GAC当中以后,强名称程序集也可以称为共享程序集(shared assembly



二,强名称与GAC

        

强名称:

定义了一个规则,不单单以文件名来区分程序集,这个规则就是强名称。

 

GAC

定义一个特殊的文件夹,这个文件夹能够识别这种规则,并且允许文件名相同的文件存在,这个特殊的文件夹就是GAC


三,为程序集赋予强名称


         打开VS 开发人员命令提示工具:





              首先,我们来创建公钥私钥文件,使用 sn -k命令:


             


         然后我们会发现在此文件夹下创建LHC.snk成功:


           

需要注意的地方:

1,每次调用sn时候,创建的私钥/密钥对文件都不相同,不仅自己的计算机每次生成的不同,其他所有计算机生成的也不相同。

2,关于这个文件的命名,如果是个人,可以以自己的名字命名;如果是团队,,组织火公司,可以以组织名称来命名。

3,在大多数情况下,个人和组织只需要一个snk文件就可以了,以后创建强名称的时候,都使用这个snk文件。由于会使用snk文件的私钥对强名称程序集进行签名,因此这个文件必须严密保护。

 

上面创建的LHC.snk里面既包含公钥,也包含私钥。公钥可以使用sn.exe查看,但是私钥无法查看。




    如果需要查看公钥的话,可以使用 sn -p命令:


    


      之后使用sn -tp命令查看*.pk文件:


     




     创建好这个公钥私钥文件之后,我们就可以使用它来标识程序集的唯一性了。



     在需要设置的程序集中,为此程序集设置签名属性:





        



       保存之后再观察此程序集,会发现多出来一个文件:



      







目录
相关文章
|
2月前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
95 4
|
存储 开发框架 缓存
【深入理解CLR 四】共享程序集和强命名程序集
【深入理解CLR 四】共享程序集和强命名程序集
93 0
|
IDE 编译器 C#
C#中的命名空间和程序集
C#中的命名空间和程序集
231 0
|
C#
WPF加载程序集中字符串资源
原文:WPF加载程序集中字符串资源   WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源。
1009 0
|
.NET
【Xamarin.Forms】XAML命名空间——将XAML名称空间声明为引用类型
XAML使用xmlns XML属性来进行名称空间声明。 本文将介绍XAML命名空间语法,并演示如何声明XAML命名空间以访问类型。 概观 有两个XAML名称空间声明总是在XAML文件的根元素中。
1293 0