gpt4 book ai didi

c# - 无法生成临时类 - 签署程序集时出现加密失败

转载 作者:太空狗 更新时间:2023-10-29 23:25:17 25 4
gpt4 key购买 nike

我有一个签名的类库,我想通过 sgen 工具为其创建程序集。但是,当我尝试运行以下命令时出现错误:

$ sgen.exe /a:testsign.dll /force /compiler:/keyfile:..\..\testsign.pfx /verbose /n
Error: Unable to generate a temporary class (result=1).
error CS1548: Cryptographic failure while signing assembly '[...path...]\TestSign.XmlSerializers.dll' -- 'Error signing assembly - - The parameter is incorrect. '

If you would like more help, please type "sgen /?".

我检查了 MSDN 上的错误其中指出

CS1548 occurs when assembly signing fails. This is usually due to an invalid key file name, an invalid key file path, or a corrupt key file.

但是,我刚刚创建了 key ,路径是正确的,据我所知,Visual Studio 2010 不会创建损坏的 key 。

这个问题很容易重现。

  1. 使用代码 pasted here创建一个新的类库。
  2. 创建两个类,一个class TestSigning和一个class Model
  3. 转到“项目属性”>“签名”并选中“签署此程序集”
  4. 创建一个新的强名称 key 文件
  5. 打开 Visual Studio 命令提示符 (2010)
  6. 找到 dll 并运行 sgen /a:<dllname> [... as above ...]

我的猜测是 key 文件的公钥。但是我找不到任何关于我如何通知 sgen 的来源。我用来保护我的 key 文件的密码。

我不确定如何进行。我在 SO 上看到的其他线程有相同的错误“标题”unable to generate temporary class但不同的错误详细信息,其中没有 Cryptographic failure (我已经找到了)。

最佳答案

按照 this thread 中的说明进行操作解决了这个问题。尽管它不是使用 sgen 工具手动完成的,但它是通过 Visual Studio 完成的。

即上面的例子改为:

  1. 和以前一样
  2. 和以前一样
  3. 和以前一样
  4. 和以前一样
  5. 转到构建选项卡
  6. 生成序列化程序集设置为打开
  7. 右键单击项目并选择卸载项目
  8. 右键单击项目并选择 *edit nnn.csproj**
  9. 将以下片段粘贴到某处

    <PropertyGroup>
    <SGenUseProxyTypes>false</SGenUseProxyTypes>
    <SGenPlatformTarget>$(Platform)</SGenPlatformTarget>
    </PropertyGroup>
  10. 重新加载并构建项目。

关于c# - 无法生成临时类 - 签署程序集时出现加密失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com