我一直在使用Visual Studio 2010,C#。

我从事这项计划已有将近一年的时间。在其中,我使用存储在单独的XML文件中的信息来构建图像。这个过程为我工作了数百次,没有问题。

我已迁移到新机器。以前的机器是32位,新的是64位。当我打开文件并尝试反序列化时,将引发以下异常:


  未处理System.InvalidCastException
    消息= [A] System.Collections.Generic.List 1[BookCreator.pageFontInfo] cannot be cast to [B]System.Collections.Generic.List 1 [BookCreator.pageFontInfo]。
  类型A源自
  在位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib的位置'LoadNoth'中的'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' .dll”。 B型起源于
  在位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib的位置'LoadNoth'中的'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' .dll”。


这是生成错误的代码:

        List<pageFontInfo> info;
        XmlSerializer serializer = new XmlSerializer(typeof(List<pageFontInfo>));
        TextReader tr = new StreamReader(openFile);
        info = (List<pageFontInfo>)serializer.Deserialize(tr); <---error thrown


pageFontInfo是一个自定义构建的Serializable结构。它包含两个字符串,一个浮点数和一个点列表。我不知道出了什么问题。我已经比较了列表的两个“来源”,它们是相同的。我完全迷住了。在迁移之前,这已经进行了数百次。

编辑:
我刚刚检查。我已经在另一台64位计算机上运行了已编译的.exe和源代码。因此,现在出了什么问题都与此无关。它特定于此安装的Visual Studio 2010。

最佳答案

找到了!我开始逐步检查代码,发现两个相同的程序集实际上是不同的实例。我一直在将该程序用作网站的类库。因此,在工作目录中是项目的.dll以及开始调试过程时创建的.exe。

加载时,程序正在加载.dll和.exe。我要做的就是进入工作目录,然后将它们都删除。然后错误消失了。

10-05 20:12