强大的命名程序集在我的Visual C#中不起作用

时间:2009-11-19 07:17:36

标签: c# .net strongname

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

  

csc ... / keyfile:...

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

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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