c# - 动态创建强名称,无需 Sn.exe

标签 c# .net dynamic

我正在开发一个旨在简化动态编写程序集的项目,我一直在尝试解决的一件事是如何使用强名称对程序集进行签名,依赖用于构造强名称的辅助程序(例如 sn.exe)。文档提到它使用 SHA1 作为哈希算法,但至于如何正确设置强名称,我还无法推断。

我尝试使用随机字节数组的 SHA1 结果创建强名称,但将 PublicKey 和 PublicKeyToken 设置为它所暗示的内容(公钥是我创建的字节数组的哈希值,或者字节-array 我创建的)并将公钥 token 设置为 SHA 哈希的最后八个字节,我在调用 AssemblyBuilder.Save() 方法时收到错误。

每次我收到一个异常,说公钥无效。我是否遗漏了什么?

提前致谢。

最佳答案

您可以尝试使用ICLRStrongName界面。没有托管 API 可以执行相同的操作,因此您必须使用 P/Invoke 从托管程序集中调用它们。我想,使用自定义开关从程序中调用强名称工具而不是重新实现它会容易得多,但如果您确定,非托管 API 将是一种方法不想使用sn.exe

关于c# - 动态创建强名称,无需 Sn.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8857080/

相关文章:

.net - .net中转换为短路径的标准方法

c# - 如何在 XSLT 中进行循环?

c# - 为什么我的 TimeSpan.Add() 不工作?

c# - 如何使用动态扩展 c# 4.0 中的现有对象

c - 如何在C中从STDOUT读取直到EOF?

wpf - 如何在运行时将 wpf 控件添加到特定的网格行和单元格?

c# - 循环遍历 DataRow 中的每个元素

c# - 无法从 X.509 存储获取当前用户证书

c# - Backgroundworker.CancelAsync() 不工作

c# - RSACryptoServiceProvider 使用自己的公钥和私钥初始化