【发布时间】:2012-11-27 14:57:29
【问题描述】:
考虑以下情况:
- 在我的 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 文件无效。无法加载类型 Old.Namespace.OtherType,其他,版本 1.0.0.0,Culture=neutral,PublicKeyToken=null,在 .RESX 文件中使用. 确保已将必要的引用添加到您的项目中。第 1521 行,位置 5"
显然,.resx 文件仍然从某处引用具有 old 命名空间的类型。 “某处”似乎来自 .resx 文件的二进制部分!
问题: 如何让 .resx 了解它现在必须引用新类型(具有更改的命名空间)?
请帮忙,我真的不知道如何继续这里......
【问题讨论】:
-
您是否尝试过您的 resx 上的“运行自定义工具选项”(右键单击)?
-
您是否尝试删除对 Other.dll 的引用并重新添加?也许“复制本地=真”可能会导致问题..
-
没有。但是当我在解决方案资源管理器中右键单击 .resx 文件时,我在弹出菜单中看不到任何“运行自定义工具”???能具体一点吗?
-
对不起,我的评论越过了另一个。是的,我尝试删除引用并将其添加回来。同样的问题。
标签: c# winforms visual-studio-2010 namespaces resx