如何在 Linux 中为强命名程序集创建 .NETCore 的 snk
Posted
技术标签:
【中文标题】如何在 Linux 中为强命名程序集创建 .NETCore 的 snk【英文标题】:How to create a snk for .NETCore in Linux for Strong Named Assemblies 【发布时间】:2018-09-05 11:18:23 【问题描述】:我使用 CentOS 7 使用 JetBrains Rider IDE 编写 .NETCore 服务器。
我需要为 .NETCore 2.0 创建一堆强命名程序集(库项目)。我知道在 Windows 上我可以使用sn.exe
工具来创建snk
密钥文件。谁能详细说明如何在 CentOS 机器上执行此操作?
我找到了一个也称为 sn
(see man page) 的单声道二进制文件,它似乎是 sn.exe
等价的,但它似乎很老了(2003 / 2004),我不确定,如果它是工具一应该使用TODAY。
我还需要与官方(来自商业供应商)code signing certificate
签署一些 DLL。我不明白snk
文件和我获得的证书之间的关系(它有一个p12
扩展名)。
通过一点研究,我读到,在我的 .csproj
文件中,我需要将以下标签添加到建议 MSBUILD
以创建强命名程序集:
<AssemblyOriginatorKeyFile>MyKey.snk</AssemblyOriginatorKeyFile>
<SignAssembly>True</SignAssembly>
如果有人能解释如何(在CentOS 7 以.NetCore 2.0 为目标),我将不胜感激:
创建强命名程序集
使用现有商业证书签署程序集
请注意,我没有使用 VisualStudio(您有 UI 工具)!
【问题讨论】:
【参考方案1】: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
【讨论】:
以上是关于如何在 Linux 中为强命名程序集创建 .NETCore 的 snk的主要内容,如果未能解决你的问题,请参考以下文章
在 Python scikit learn 中为 12 个随机森林创建循环
我可以在 Windows 中为 Linux 平台创建应用程序吗?