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