考虑以下情况:
- 在我的 Windows 窗体应用程序中,我有一个表单。
- 该表单有一个 .resx 文件。
- 该表单使用来自另一个程序集(“Other.dll”)的类(“OtherClass”)。
- “Other.dll”构建在与主应用程序相同的 VisualStudio 2010 解决方案中(只是同一解决方案中的一个单独项目)。
- 在主项目(Windows 窗体应用程序)中,我已正确添加对“Other.dll”项目的引用。
一切正常(如预期的那样)。
现在我需要将“Other.dll”中包含的类型的命名空间从“Old.Namespace”更改为“New.Namespace”:
- 在 VS2010 中,我调出“Other.dll”项目的属性窗口
- 我将“默认命名空间”文本框中的命名空间从“Old.Namespace”更改为“New.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 理解它现在必须引用新类型(具有更改的命名空间)?
请帮忙,我真的不知道如何在这里进行......