我一直在使用Visual Studio 2010,C#。
我已经在这个项目上工作了近一年了。在其中,我使用存储在单独的XML文件中的信息来构建图像。这个过程对我有好几百次没有问题。
我已迁移到新机器。之前的机器是32位,新的是64位。当我打开文件并尝试反序列化时,抛出以下异常:
System.InvalidCastException未处理 消息= [A] {System.Collections.Generic.List {1}} 1 [BookCreator.pageFontInfo]。 A型起源于 'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'在上下文'LoadNeither'位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib .dll文件”。 B型起源于 'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'在上下文'LoadNeither'位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib的.dll”。
以下是生成错误的代码:
1[BookCreator.pageFontInfo] cannot be cast to
[B]System.Collections.Generic.List
pageFontInfo是一个自定义构建的Serializable结构。它包含两个字符串,一个浮点数和一个点列表。我不知道出了什么问题。我比较了列表的两个“起源”,它们是相同的。我完全难过了。在迁移之前,这已经过去了数百次。
编辑: 我刚刚检查过我在另一台64位机器上运行了编译的.exe和源代码。所以现在出现的任何问题与此无关。它特定于Visual Studio 2010的此安装。
答案 0 :(得分:3)
加载时,程序正在加载.dll和.exe。我所要做的就是进入工作目录,然后删除它们。然后错误就消失了。
答案 1 :(得分:0)
我理解你的问题 我认为您的代码不是托管代码 您的代码应该以CLR为目标。如果你做得正确,你的代码可以在任何地方工作无论是32位还是64位机器。
我可能错了,但尝试使用c#中的托管代码,您将获得解决方案。
一切顺利