如何在Linux中为.NETCore创建用于强命名程序集的snk

时间:2018-09-05 11:18:23

标签: .net-core rider

我使用JetBrains Rider IDE使用CentOS 7编写.NETCore服务器。

我需要为.NETCore 2.0创建一堆 strong命名程序集(库项目)。我知道在Windows上我可以使用sn.exe工具来创建snk密钥文件。有人可以详细说明如何在CentOS计算机上执行此操作吗?

我发现了一个也称为snsee man page)的单二进制文件,似乎与sn.exe等价,但它似乎已经很旧了(2003/2004),但我不是当然,如果这是一种工具,则应该使用 TODAY

我还需要与官方(来自商业供应商)code signing certificate 进行签名。我不了解snk文件与我得到的证书(扩展名为p12)之间的关系。

通过一些研究,我了解到,我需要在.csproj文件中添加以下标记到建议MSBUILD中,以创建强命名程序集:

<AssemblyOriginatorKeyFile>MyKey.snk</AssemblyOriginatorKeyFile>
<SignAssembly>True</SignAssembly>

如果有人能解释如何做(在针对.NetCore 2.0的 CentOS 7 上),我将不胜感激:

  1. 创建强大的命名程序集

  2. 使用现有的商业证书签署装配体

请注意,我没有使用VisualStudio(您拥有UI工具)!

1 个答案:

答案 0 :(得分:0)

sn -k sgKey.snk

https://docs.microsoft.com/en-us/dotnet/framework/app-domains/how-to-create-a-public-private-key-pair

它可以在Linux上运行。应该安装单声道。尝试使用.Net Core 2.2


一些有用的命令:

创建密钥对:sn –k private.snk

提取公钥:sn –p private.snk public.snk

查看公共密钥和公共密钥令牌:sn –tp public.snk

查看程序集的公用密钥和公用密钥令牌:sn –Tp assembly.dll

从程序集中提取公钥:sn –e assembly.dll public.snk

验证程序集是否已签名以及使用什么密钥:sn –vf assembly.dll

显示注册为跳过验证的机器上的程序集列表:sn –Vl

注册程序集以跳过验证:sn –Vr * (must elevate)

使用密钥对sn –Ra assembly.dll private.snk

退出装配。