2

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

csc ... /密钥文件:...

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

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

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

4

3 回答 3

3

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

于 2009-11-19T07:55:03.430 回答
2

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

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

将所有序列化类型保存在单独的程序集中是一个好主意。

于 2009-11-19T07:45:23.200 回答
1

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

于 2009-11-19T09:38:53.953 回答