C# 强名称程序集在我的Visual C中不工作#

C# 强名称程序集在我的Visual C中不工作#,c#,.net,strongname,C#,.net,Strongname,我有一个项目,我想强名称的可执行文件。使用命令行编译效果很好: csc/密钥文件: 但我希望IDE能做到这一点,因此我发现:在项目属性的“签名”选项卡中,有一个“为程序集签名”选项。我勾选它并指向我的密钥对文件。启动调试后,一个FileNotFound异常出现在一个无关紧要的地方:(我的应用程序使用序列化) 在我进行此配置之前,应用程序正在正常运行。我假设您正在读取使用未签名应用程序写入的数据。该数据现在已变得不兼容,反序列化程序无法匹配这些类型 我不知道如何(快速)解决这个问题,但也许您可以先

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

csc/密钥文件:

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


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

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

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


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

您需要适当配置BinaryFormatter的属性。下面是一个如何做到这一点的例子:

两个回答都非常好
加上我的1便士:这称为类型保真度,它只能通过二进制序列化实现,而不能通过XML或任何其他类型的序列化实现。

谢谢!就这样。该文件是在我决定使用强名称程序集之前创建和使用的。现在我比较了新的和旧的。他们显然不同。我甚至不知道强名称程序集使用的文件与普通文件不同。
        protected override Type d(Stream st)
        {
            BinaryFormatter bf = new BinaryFormatter();
            return (Type)bf.Deserialize(st);
        }