考虑以下情况:
- 在我的 Windows 窗体应用程序中,我有一个窗体。
- 该表单有一个 .resx 文件。
- 该表单使用了另一个程序集(“Other.dll”)中的一个类(“OtherClass”)。
- “Other.dll”是在与主应用程序相同的 VisualStudio 2010 解决方案中构建的 (只是同一解决方案中的一个单独项目)。
- 在主项目(Windows 窗体应用程序)中,我有正确的 添加了对“Other.dll”项目的引用。
一切正常(如预期)。
现在我需要将“Other.dll”中包含的类型的命名空间从“Old.Namespace”更改为“New.Namespace”:
- 在 VS2010 中,我调出“Other.dll”的属性窗口 项目
- 我将“默认命名空间”文本框中的命名空间从“Old.Namespace”更改为 “新命名空间”
- 我相应地更改相关 .cs 文件中的命名空间
- 我重建修改后的“Other.dll”项目。没有错误。修改后的“Other.dll”生成OK。
问题来了:
当我在此之后重建整个解决方案时,编译器停止并报告表单的 .resx 文件无效:
“无效的 Resx 文件。无法加载 .RESX 文件中使用的类型 Old.Namespace.OtherType,其他,版本 1.0.0.0,Culture=neutral,PublicKeyToken=null . 确保必要的引用已添加到您的项目中。第 1521 行,位置 5"
显然,.resx 文件仍然从某处引用具有旧 命名空间的类型。那个“某处”似乎来自 .resx 文件的二进制部分!
问题: 我怎样才能使 .resx 理解它现在必须引用新类型(具有更改的命名空间)?
请帮忙,我真的不知道如何继续...
最佳答案
我遇到了同样的问题,解决方案是从 resx 文件中删除数据部分
关于c# - 重命名命名空间后无效的 .resx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586941/