我有一个签名的类库,我想通过 sgen 工具为其创建程序集。但是,当我尝试运行以下命令时出现错误:
$ sgen.exe /a:testsign.dll /force /compiler:/keyfile:..\..\testsign.pfx /verbose /n
错误:无法生成临时类(结果=1)。
错误 CS1548:签署程序集 '[...path...]\TestSign.XmlSerializers.dll' 时加密失败 - '错误签署程序集 - - 参数不正确。'如果您需要更多帮助,请输入“sgen /?”。
我检查了MSDN上的错误,其中指出
CS1548 在程序集签名失败时发生。这通常是由于无效的密钥文件名、无效的密钥文件路径或损坏的密钥文件造成的。
但是,我刚刚创建了密钥,路径是正确的,据我所知,Visual Studio 2010 不会创建损坏的密钥。
这个问题很容易重现。
- 使用此处粘贴的代码创建一个新的类库。
- 创建两个类,一个
class TestSigning
和一个class Model
- 转到项目属性>签名并检查“签署此程序集”
- 创建一个新的强名称密钥文件
- 打开 Visual Studio 命令提示符 (2010)
- 找到dll并运行
sgen /a:<dllname> [... as above ...]
我的猜测是密钥文件的公钥。但是我找不到任何关于我如何告知sgen
我用来保护我的密钥文件的密码的来源。
我不确定如何进行。我在这里查看的其他线程具有相同的错误“标题”unable to generate temporary class
但不同的错误详细信息,其中没有Cryptographic failure
(我发现)。