我有一个已签名的类库,我想通过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
sgen /a:<dllname> [... as above ...]
我的猜测是密钥文件的公钥。但我找不到任何关于如何通知sgen
我用来保护密钥文件的密码的来源。
我不知道该怎么办。我在SO上看到的其他线程有相同的错误“header”unable to generate temporary class
但是有不同的错误细节,其中没有Cryptographic failure
(我发现)。
答案 0 :(得分:3)
按照this thread中的说明解决了此问题。虽然它不是使用sgen
工具手动完成的,但它是通过Visual Studio完成的。
即,上面的例子改为:
将以下代码段粘贴到某处
<PropertyGroup>
<SGenUseProxyTypes>false</SGenUseProxyTypes>
<SGenPlatformTarget>$(Platform)</SGenPlatformTarget>
</PropertyGroup>
重新加载并构建项目。
答案 1 :(得分:1)
最初,我能够毫无打嗝地建立项目。 当另一个简单的项目无法构建/发布并且反而抛出此错误时,这是相当奇怪的。
在我以管理员运行Visual Studio后,我能够构建它。