首页
学习
活动
专区
圈层
工具
发布

对于强版命名库的每个版本,是否需要新的.snk密钥文件?

对于强版命名库的每个版本,是否需要新的 .snk 密钥文件,这个问题涉及到了 .NET 中的强命名和密钥文件的概念。

强命名是 .NET 中的一种机制,用于唯一标识程序集,并确保程序集的完整性和版本控制。强命名使用数字签名和公钥/私钥对来确保程序集的签名和身份。密钥文件是一个包含公钥和私钥的文件,用于强命名程序集。

在强命名程序集时,需要使用 .snk 密钥文件。对于每个版本的程序集,是否需要新的 .snk 密钥文件取决于开发人员的需求和版本控制策略。如果需要对每个版本的程序集进行唯一标识和版本控制,则需要为每个版本生成新的 .snk 密钥文件。如果不需要对每个版本进行唯一标识和版本控制,则可以使用同一个 .snk 密钥文件。

总之,是否需要为每个版本的程序集生成新的 .snk 密钥文件,取决于开发人员的需求和版本控制策略。建议在强命名程序集时,使用同一个 .snk 密钥文件,以简化版本控制和管理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

dotnet 强签名下使用 InternalsVisibleToAttribute 给程序集加上友元

using 下面,命名空间 namespace 定义的上面,基本上这个代码都放在 AssemblyInfo.cs 文件里面 但如果此时的 A 程序集是添加了强签名的,那么以上代码将构建不通过 错误 CS1726...不过防篡改功能也是可以通过强签名实现的,在运行的时候判断一下文件摘要信息和公钥比对就可以知道文件是否被篡改。...新建的时候输入证书名就可以,可以不加上密码 此时就可以拿到 snk 密钥文件,同时给程序集加上签名了 而想要加入到友元的程序集,也需要签名,对于友元程序集的签名密钥没有要求,只要有签名就可以了。...如上面例子的 B 程序集,也使用一个密钥文件进行签名,签名之后,还需要将密钥文件的公钥写到 InternalsVisibleTo 的参数里面,格式如下 [assembly: InternalsVisibleTo...文件的公钥 sn -tp dotnet-campus.PublicKey.snk 此时输出的内容大概如下,这就是密钥文件的公钥 Microsoft(R) .NET Framework 强名称实用工具

81020

当InternalsVisibleToAttribute特性遭遇强签名

在很多情况下,我们需要将最终的程序集以强命名的形式发布。为此,我们修改Lib项目设置,开启"Sign the assembly”开关,并创建一个密钥文件。 ?...那么,如果我们将单元测试项目Test也加上强签名,并将InternalsVisibleToAttribute特性指定成程序集的强名称,是否可以解决这个问题呢?...四、需要指定的是完整的公钥 实际上对于上面的情况,需要指定的不是程序名的强命名,而是指定对程序集进行签名时采用的公钥。那么如何得到这个公钥呢?...具体来说我们需要两个步骤:通过SN.exe结合-p开关从将包含公钥/私钥的密钥文件中提取公钥,并导入到指定的密钥文件中;然后执行SN.exe并结合使用-tp开关,将公钥文件中的公钥显示出来。...其中Test.snk表示对单元测试项目进行签名的密钥文件,而Test.PK.snk则表示导出的只包含公钥的密钥文件。

679110
  • 关于强命名程序集

    强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 如何创建强命名程序集( Strong Name Assembly ) 创建一个强命名程序集首先需要获得一个用强命名实用工具...MyCompany.keys 文件将包含以对以二进制格式存储的公有密钥和私有密钥。    ...1.0.0.0 程序集的程序,通过更改它的配置文件,转而让程序去引用版本为 2.0.0.0 的程序集)来使用新版本;最后, GAC 还提供了对不同版本程序集的并存( side-by-side...配置每一个应用程序的  XML 配置文件,让它们指向一个公有目录,这样,在运行时, CLR 将知道到哪里去找这个强命名程序集。...强命名策略: 生成公钥与私钥对,并 对私钥做严格的保护 生成:sn -k keyfile.snk 公钥与私钥对 抽取公钥:sn -p keyfile.snk public.snk 从keyfile中抽取公钥保存到

    72910

    【细致完整】终章:模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案

    重点:库的强签名 上面分目录、配置文件版本配置目录也还不够,主工程还是无法区分两个版本的Lib.Harmony库,这里涉及.NET 库强签名,就是上面App.config配置中的publicKeyToken...这里,对于1.2.0.1版本的0Harmony.dll库我们依然不动,只对2.2.2高版本做强签名处理,签名步骤参考[VS2008版本引入第三方dll无强签名[8]],我们来一起做一遍,这里会借助Everything...注意:暂时不要用最新预览版2.3.0-prerelease.2,站长做这个示例签名用这个版本花了2个晚上没成功,换成2.2.2就可以,下面的图也重新录了,可能该版本有其他依赖的缘故,只是猜测: 创建一个新的随机密钥对...\bin\NETFX 4.6.1 Tools\sn.exe",在高版本目录下生成一个密钥对文件0Harmony.snk,命令如下: "C:\Program Files (x86)\Microsoft SDKs...Git一般是配置成不能上传可执行程序或dll文件的,但多版本dll特殊,部分库不能直接从NuGet引用,所以本文中的高版本Lib.Harmony库只能使用自己强签名版本,我们将dll文件扩展名改为“.ref

    44530

    《CLR via C#》Part1之Chapter3 共享程序集和强命名程序集(二)

    CLR支持两种程序集:弱命名程序集(weakly named assembly)和强命名程序集(strongly named assembly). ?...强类型程序集则是由一个文件名、一个版本号和一个语言文化(culture),除此之外,强命名程序集还使用发布者的私钥进行了签名。...创建强类型步骤: 使用Strong Name实用程序(SN.exe)来获取一个密钥。(这个程序与.NET Framework SDK和MS VS配套提供的。)Eg....SN –k MyCompany.snk,SN.exe的所有命令行都区分大小写; 由于公钥数字非常大,难以使用,人们设计了公钥标记(public key token),公钥标记是公钥的64位哈希值。...Assembly Cathe,GAC),对于.NetFramework 3.5和以前的版本,GAC通常放在以下目录,C:Windows\Assembly,而对于.Net4.0,GAC位于C:Windows

    55020

    使用C#编写ASP可调用的DLL组件

    .在该项目上右键,属性,进行如下设置: 1)应用程序选项卡下,点击“程序集信息(I)...”按钮,勾选“使程序集COM可见(M)”,之后确定 2)签名选项卡下,勾选“为程序集签名(A)”,之后在“选择强名称密钥文件...(K)”中,选择“新建”,之后新建一个密钥文件,我这里起名为“test.snk”,密码那项我设置的是不选择。...关于设置强名称这位置,有的会报错,提示没有权限,给Everyone权限就可以了 3)保存属性的设置 5.生成项目,把生成的dll使用regasm命令进行注册(C#写的DLL属于托管代码,只能用RegAsm...RegAsm在C:\Windows\Mircosoft.NET下的对应的.NET框架文件夹下) 6.在ASP中进行调用,代码如下: <% dim obj set obj = server.CreateObject...("LibTest.test") response.write(obj.print) %> 7.注意事项: 如果写的程序是64位的,那么在IIS7以上版本下,需要在应用程序池中设置为64位(默认就是)

    2.2K20

    Visual Studio对程序集签名时一个很不好用的地方

    现在我们需要使用“同一个Key File”对Lib1和Lib2进行签名,Lib1、Lib2和Key File(Key.snk) 对应的目录结构如右图所示:Key.snk和Lib1和Lib2处在相同的目录下面...但是当你选中Key.snk这个文件的时候,Visual Studio并不会用将这个文件作为对本程序集进行签名的Key File,而是会自作主张地将该文件拷贝到Lib1所在的根目录下。..., 我就需要为每个项目进行更新。...解决方案1:通过AssemblyKeyFileAttribute特性指定Key File AssemblyKeyFileAttribute特性定义在System.Reflection命名空间下,专门用于指定在对项目进行强签名时采用的...解决方案3:以Link的方式添加Key File 这是我最初想到的办法,但是当我试验的时候将Key File添加到项目文件的Properties子目录下,导致它重新创建新的File File。

    79490

    实现通过COM组件方式实现java调用C#写的DLL文件的完整demo

    一、使用C#编写com组件   开发环境 :VS2017   1、新建工程:CalcTest(类库项目,根据自己喜好需要取工程名,框架我这里使用的是:.NET Framework 4 ,你可以根据自己的来选...    这里我生成的CalcComkey.snk 文件放在D盘,注意选择你自己的保存路径。   ...5、在签名 标签中选中 为程序集签名,选择刚刚生成的强名称文件CalcComkey.snk 。 ?...命名空间为:CalcTest、类名为:Calc 2、jacob下载,可以自主下载 二、实现步骤 1、将CalcTest.dll、CalcTest.tlb复制到JAVA开发环境中,JAVA环境中需要安装对应版本的...ok,对于整个操作过程就分享到这里了,如果有不理解的,或者我有讲的不对的请帮忙指出,谢谢。

    3.2K80

    State Processor API:如何读写和修改 Flink 应用程序的状态

    随着每个版本的发布,Flink 社区都会添加与状态相关的功能,来提高 Checkpoint 和故障恢复的速度、改善应用程序维护和管理。...当使用批处理作业处理 Savepoint(或 Checkpoint)数据时,我们需要一个模型,将每个任务的状态数据映射到数据集或表中。实际上,我们可以把 Savepoint 视为一个数据库。...每个算子(由 UID 标识)代表一个命名空间。算子的每个 Operator State 可以映射为命名空间下的一个专用表,只有一列来保存所有任务的状态数据。...由于算子 Snk 没有任何状态,它的命名空间是空的。 State Processor API 现在提供了创建、加载和写入 Savepoint 的方法。...该功能为用户维护和管理 Flink 流应用程序开辟了许多新的可能性,包括流应用程序的任意迭代以及应用程序状态的导出和导入。

    1.7K20

    12 个优化 Docker 镜像安全性的技巧

    作者 | Marius 译者 | 王强 策划 | 闫园园 本文介绍了 12 个优化 Docker 镜像安全性的技巧。每个技巧都解释了底层的攻击载体,以及一个或多个缓解方法。...在构建镜像时,你需要克隆 Git 存储库(这需要构建密钥,例如该存储库的 SSH 访问密钥),从源代码构建应用程序,然后再删除源代码(和密钥)。...使用本地开发机器进行构建的问题是,你的本地 Git 存储库的“工作树“可能是脏的。例如,它可能包含有开发过程中需要的密钥文件,例如对中转甚至生产服务器的访问密钥。...每个 Linux 发行版的这个命令都不一样。...注意:如果你唯一需要的定制是“以非 root 用户身份运行代码”,那么每个无发行版基础镜像中都有一个默认的非 root 用户,详见这里。

    69820

    Spring Cloud 配置application.yml与bootstrap.yml快速入门

    作为配置存储的 Git 存储库 为了完成我们的服务器,我们必须在配置的 url 下初始化一个Git存储库,创建一些新的属性文件,并用一些值填充它们。...对于非对称加密,我们可以将'encrypt.key'设置为PEM编码的字符串值或配置要使用的密钥库。...由于我们的演示服务器需要一个高度安全的环境,我们将选择后一个选项,并首先使用 Java密钥工具生成一个新的密钥库,包括一个RSA密钥对: $> keytool -genkeypair -alias config-server-key...后一个选项需要在我们的application.properties中配置一个密钥库。搜索此密钥库以查找匹配的密钥别名。...对于没有密钥库的场景,我们必须实现一个TextEncryptorLocator类型的@Bean,它处理查找并为每个密钥返回一个TextEncryptor -Object。 7.4.

    23900

    开源KMS之vault part1

    与 Vault 的每一次交互,无论是将机密放入键/值存储中还是为 MySQL 数据库生成新的数据库用户名密码,都需要调用 Vault 的 API。...创建配额时可以指定路径,可以在根级别、命名空间级别或挂载点上定义速率限制配额。速率限制器基于每个 Vault 节点应用于每个唯一的客户端 IP 地址(速率限制配额的消耗信息不会再集群内复制)。...租约、续约以及吊销 对于每个动态机密和 service 类型登录令牌,Vault 都会创建一个租约(lease):包含持续时间、是否可续约等信息的元数据。...这带来一个明显的收益:机密的使用者需要定期与 Vault 通信以续约(如果允许的话),或是请求一个新的机密。这使得 Vault 审计日志更有价值,也使密钥滚动更新变得更加容易。...vault的部署 本机地址 192.168.31.181 系统版本 centos 7.9 Vault版本: v1.15.4 启动consul单机版 $ .

    46210

    WinKawaks加拳皇97rom包在PC搭建拳皇97

    至于公司是否盗用了任天堂等公司的版权,由于时代条件的限制,无人追究。也有人说小霸王游戏机是山寨版的任天堂FC游戏机。...拳皇97的rom包是一个zip格式的文件。...WinKawaks官方网站现在推出了各大街机游戏的rom下载,不仅有拳皇97,还有拳皇的各种版本,如拳皇98,99,2000,2002等,任君挑选,很是人性化。...对于WinKawaks模拟器的使用,其官网也有详细的介绍 3.拳皇97键位设置 在正式开始游戏之前,我们需要设置按键。...关于拳皇97中的技能的叫法主要有: 必杀技:普通技能; 超必杀技:需要一个能量点才能使用; Max必杀技:需要两个能量点才能使用,其中一个能量点用于爆气了; 隐藏必杀:需要两个能量点才能使用

    8.7K20

    MySQL8 中文参考(二十六)

    要修改现有帐户的限制,请使用ALTER USER。提供一个WITH子句,命名要限制的每个资源。每个限制的默认值为零(无限制)。...对于某些发行版类型(例如 Windows 上的二进制发行版,或 Linux 上的 RPM 和 DEB 发行版),安装过程会初始化 MySQL 数据目录,包括包含授予权限表的mysql系统数据库。...对于不执行此操作的发行版,您必须手动初始化数据目录。有关详细信息,请参见第 2.9 节,“安装后设置和测试”。 要确定是否需要初始化授权表,请查找数据目录下是否有一个mysql目录。...RSA 文件不会过期。 SSL 文件对于每个证书/密钥对具有不同的序列号(CA 为 1,服务器为 2,客户端为 3)。 服务器自动创建的文件归属于运行服务器的账户。...否则,要显式命名密钥文件,请在服务器选项文件中将系统变量设置为密钥文件名。

    74710

    Linux基础之软件包管理

    概述 在redhat系列的发行版中,采用rpm软件包管理器,rpm原名是Red Hat Package Manager,后来当其他发行版也采用这种软件包管理机制以后,重新命名,改为RPM Package...rpm包的命名格式以及基本使用 1.rpm命名格式,rpm包分为核心包和功能包 对于核心包,命名格式为: name-version-release.arch.rpm,其中version指明了程序源码的版本信息...,组成是:major.minor.release 例如:GeoIP-1.5.0-9.el7.x86_64.rpm 对于功能包,命名格式为: name-function-version-release.arch.rpm...常用选项: -a:查看软件包的完整性 有时候还需要检验软件包的来源合法性: a.获取并导入软件包制作者的密钥: rpm –import /etc/pki/rpm-pgp/RPM-GPG-KEY-CentOS.../centos/RPM-GPG-KEY-CentOS-6 #要进行校验时,要指明密钥文件的位置 enabled={1|0}:是否启用此仓库 a.挂载光盘 使用示例:将光盘作为本地的yum仓库 mount

    1.6K80

    .Net Core迁移到MSBuild平台(二)

    一、前言 在上一篇文章.Net Core迁移到MSBuild的多平台编译问题中,简单的讲了下新的项目配置文件中的节点配置,这篇我将用一些例子来详细讲下从project.json迁移到msbuild过程的节点配置...做过完整迁移新项目配置文件的朋友,肯定会觉得新的项目配置文件Msbuild的配置太扯了,虽然能直接编辑项目文件,但整个配置文件中没有了像project.json中的智能提示,当你在打开文件后你就会发现以前很轻松能写出来的...二、XML定义 新的.csproj是基于xml格式的,下面介绍下project.json与.csproj文件的差异定义的例子: 项目名称 (ProjectName) { "name": "MyProjectName..." } 在csproj的配置中并没有对应的定义,它只会有项目文件名相同如:MyProjectName.csproj 程序集版本 (Version) { "version": "1.0.0-alpha...emitEntryPoint": false } } Library 程序集强命名签名

    1.9K20

    ANOVA组间比较方法有十多种,到底该选哪个呢?

    不同论文中的方法都不太一样。此时,到底该选哪个呢? 今天就结合教材和SPSS官方指导文件讨论一下。 ---- ?...由孙振球和徐勇勇大佬编写的《医学统计学第4版》第58-59页提到以下内容: “ 优先推荐的常用办法为LSD-t 法 、Dunnett-t 法、SNK-q法,而Bonferroni法、Sidak法、Tukey...(四) 教材:SNK-q 法适合于多个样本均数两两之间的全面比较。 SPSS官方文件:使用 Student 化的范围分布在平均值之间进行所有成对比较。...个人解读: ①SNK-q 检验是对所有组之间进行的全面两两比较,即不论是否存在对照组或者这些组之间是否存在联系,只要是多组数据,就可以采用SNK-q 检验。...②SNK-q 检验的应用场景如下:假设存在3组不同的药物,需要比较3个药物之间疗效的差异,此时便可以选择SNK-q 法进行组间比较。

    3.5K30

    微服务架构系列一:关键技术与原理研究

    图2-1 Docker引擎组件  有了上述组件,当我们想运行一个容器时,首选需要获取镜像,获取镜像有两种方式,一种是从指定的本地镜像库或网上镜像库中拉取容器所需的镜像;另一种是根据镜像构建文件(Dockerfile...也就是客户端每个请求独立且要包含服务端需要的所有信息,这样的好处是可以单独查看每个请求,可见性高且更容易故障恢复,还能降低服务端资源使用;第三,可缓存,服务器返回信息时,必须被标记是否可以进行缓存,如果可以进行缓存...需要注意的是,一般情况下不同测试阶段的构建物应该保证唯一,这样更能够保证最终生产环境部署版本的有效性及避免问题交叉,当然对于不同阶段涉及不同环境的测试诸如测试环境,预发布环境,生产环境等可以通过加载不同配置文件来达到预期目的...授权作用是,决定一个用户是否有权使用Kubernetes API 做某些事情,Kubernetes 从1.6版本开始支持RBAC,从1.8版本开始进入稳定版本,并成为默认授权方式,用以替代ABAC(Attribute...以1.8.0版本为例,常见的准入控制插件有Initializers(可以用来给资源执行策略或者配置默认选项),NamespaceLifecycle(保证处于终止状态的命名空间不再接收新的对象创建请求,并拒绝不存在的命名空间其请求

    3.3K41

    深入MongoDB4.2新特性:字段级加密

    应用程序必须修改与构造读写操作相关的任何代码,以通过驱动程序加密库包含加密/解密逻辑。应用程序负责根据每个操作选择适当的加密/解密数据密钥。...在实例化客户端以启用自动客户端字段级加密时,应用程序必须指定以下组件参数: A、存储数据密钥密钥库的MongoDB集群。 B、用于存储加密数据密钥的密钥库命名空间(。)。...驱动程序需要访问KMS才能加密和解密受保护的字段或创建新的数据密钥。 D、使用JSON模式语法( JSON schema syntax)的每字段加密规则。...本地密钥文件数据密钥加密应仅用于开发或评估阶段,不要用于生产环境。 B、可选的服务器端JSON模式,用于指定加密验证规则。 C、存储数据密钥密钥库的MongoDB集群。...密钥保管库群集可能与存储客户端加密数据的群集不同。 D、用于支持自动加密的mongocryptd守护程序。仅MongoDB Enterprise企业版支持。

    4.7K30
    领券