考虑以下情况:
一切运作良好(如预期的那样)。
现在我需要将“Other.dll”中包含的类型的命名空间从“Old.Namespace”更改为“New.Namespace”:
现在出现了问题:
当我重建整个解决方案后,编译器停止并报告表单的.resx文件无效:
“无效的Resx文件。无法加载类型 Old.Namespace.OtherType ,其他,版本1.0.0.0,Culture = neutral,PublicKeyToken = null在.RESX文件中使用确保已将必要的参考文献添加到您的项目中。第1521行,第5位“
显然,.resx文件仍然从某处引用带有旧命名空间的类型。那个“某处”似乎来自.resx文件的二进制部分!
问题: 如何使.resx明白它现在必须引用新类型(使用更改的命名空间)?
请帮助,我真的不知道如何继续...
答案 0 :(得分:10)
我遇到了同样的问题,解决方法是从resx文件中删除数据部分
答案 1 :(得分:2)
我也遇到了同样的问题,在尝试了其他几个选项后,我跟随了Stefania Mereut的advice并删除了resx文件中的数据部分。当我重新添加资源时,它显然正确地重写了数据部分。
答案 2 :(得分:1)
当我更新对dll新版本的引用时遇到了这个问题。在我的情况下,引用具有选项“特定版本” = true。在那种情况下,不可能在res文件中反序列化一个旧版本的类,因为它包含旧版本的版本。 我将我的裁判“特定版本”上的选项从“ true”更改为“ false”,然后一切又恢复了。
答案 3 :(得分:0)
您需要手动打开resx文件,并将此二进制资源的类型名称更改为新的正确类型名称。我猜这是一个非标准的(即不是字符串或图像)资源,直接手动添加到resx文件。
我相信这些只能在ResX编辑器的“其他”部分中查看 - 它们无法通过它添加。