【问题标题】:Strong named assembly not working in my Visual C#强命名程序集在我的 Visual C# 中不起作用
【发布时间】:2009-11-19 07:17:35
【问题描述】:

我有一个项目,我想为可执行文件命名。使用命令行编译效果很好:

csc ... /keyfile:...

但我希望 IDE 执行此操作,所以我发现:在项目属性的“签名”选项卡中,有一个“签署程序集”选项。我勾选它并指向我的密钥对文件。在我启动调试后,一个 FileNotFound 异常出现在一个无关紧要的地方:(我的应用程序使用序列化)

        protected override Type d(Stream st)
        {
            BinaryFormatter bf = new BinaryFormatter();
            return (Type)bf.Deserialize(st);
        }

在我进行此配置之前,该应用程序正在运行。

【问题讨论】:

    标签: c# .net strongname


    【解决方案1】:

    您需要适当配置 BinaryFormatter 的 Binder 属性。以下是如何执行此操作的示例:http://spazzarama.wordpress.com/2009/06/25/binary-deserialize-unable-to-find-assembly/

    【讨论】:

      【解决方案2】:

      我假设您正在读回使用未签名应用程序写入的数据。该数据现在变得不兼容,反序列化器无法匹配类型。

      我不确定如何(快速)解决这个问题,但也许您可以先通过使用签名的应用程序进行读写来确认这一点,这应该可以。

      最好将所有序列化类型保存在单独的程序集中。

      【讨论】:

      • 谢谢!就是这样。该文件是在我决定使用强命名程序集之前创建和使用的。现在我比较了新的和旧的。它们显然是不同的。我什至不知道强命名程序集使用的文件与普通文件不同。
      【解决方案3】:

      两个反应都很好。
      添加我的 1 便士:这称为 TYPE FIDELITY,它只能通过二进制序列化而不是 XML 或任何其他类型的序列化来实现。

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多