考虑以下情况。
一切都很好(如预期的那样)。
现在我需要将 "Other.dll "中包含的类型的命名空间从 "Old.Namespace "改为 "New.Namespace"。
现在问题来了。
当我重建了整个解决方案后 编译器停止并报告说表格的.resx文件无效
"Invalid Resx file. 无法加载类型的 "Invalid Resx file. Old.Namespace.OtherType其他,版本1.0.0.0,文化=中性,PublicKeyToken=null,它在.RESX文件中使用。确保必要的引用已被添加到您的项目中。第1521行,位置5"
很明显,.resx文件仍然以 旧的 命名空间的某个地方。这个 "地方 "似乎是来自.resx文件的二进制部分。
问题:如何让.resx明白,它现在必须引用新的类型(改变了命名空间)?我怎样才能让.resx理解它现在必须引用新的类型(改变了命名空间)?
请帮助我,我真的不知道如何继续下去......
我遇到了同样的问题,解决方法是删除resx文件中的数据部分。
我也有同样的问题,在尝试了其他几个选项后,我按照Stefania Mereut的建议进行了改进。忠告 并删除了resx文件中的数据部分。 当我重新添加资源时,它显然正确地重写了数据部分。
当我更新一个dll的新版本的引用时,我遇到了这个问题。在我的例子中,引用有 "特定版本"=true的选项。在这种情况下,不可能在res文件中反序列化一个旧版本的类,因为它包含了旧版本的类。我把引用的 "特定版本 "选项从 "true "改成了 "false",一切都恢复了正常。
你需要手动打开resx文件,将这个二进制资源的类型名改为新的正确类型名。 我猜测这是一个非标准的(即不是字符串或图像)资源,是直接手动添加到resx文件中的。
我相信这些资源只能在ResX编辑器的 "其他 "部分查看--不能通过它添加。