C# 重命名命名空间后的.resx文件无效

C# 重命名命名空间后的.resx文件无效,c#,winforms,visual-studio-2010,namespaces,resx,C#,Winforms,Visual Studio 2010,Namespaces,Resx,考虑以下情况: 在我的Windows窗体应用程序中,我有一个窗体 该表单有一个.resx文件 表单使用来自另一个程序集(“Other.dll”)的类(“OtherClass”) “Other.dll”与主应用程序构建在相同的VisualStudio 2010解决方案中 (只是同一解决方案中的一个单独项目) 在主项目(Windows窗体应用程序)中,我 添加了对“Other.dll”项目的引用 一切正常(如预期) 现在我需要将“Other.dll”中包含的类型的命名空间从“Old.namesp

考虑以下情况:

  • 在我的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”生成正常
  • 现在问题来了:

    在重新生成整个解决方案后,编译器停止并报告表单的.resx文件无效:


    “无效的Resx文件。无法加载.Resx文件中使用的类型Old.Namespace.OtherType,Other,Version 1.0.0,Culture=neutral,PublicKeyToken=null。请确保已将必要的引用添加到项目中。第1521行,位置5”


    显然,.resx文件仍然从某处引用具有旧名称空间的类型。“某处”似乎来自.resx文件的二进制部分

    问题: 如何使.resx理解它现在必须引用新类型(使用更改的命名空间)


    请帮帮我,我真的不知道怎么继续

    您需要手动打开resx文件,并将此二进制资源的类型名称更改为新的正确类型名称。我猜这是一个非标准(即不是字符串或图像)资源,它是直接手动添加到resx文件中的


    我相信这些只能在ResX编辑器的“其他”部分查看-它们不能通过它添加。

    我也有同样的问题,解决方法是从ResX文件中删除数据部分

    我也有同样的问题,在尝试了其他几个选项后,我按照Stefania Mereut的方法从resx文件中删除了数据部分。当我重新添加资源时,它显然正确地重写了数据部分。

    我在更新对新版本dll的引用时遇到了这个问题。在我的例子中,引用有选项“specific version”=true。在这种情况下,不可能在res文件中反序列化类的旧版本,因为它包含旧类的版本。
    我将引用的“特定版本”选项从“true”更改为“false”,所有操作都再次正常运行。

    您是否在resx上尝试过“运行自定义工具选项”(右键单击)?是否尝试删除对Other.dll的引用并重新添加?可能是“copy local=True”导致了问题..否。但是当我在解决方案资源管理器中右键单击.resx文件时,我在弹出菜单中没有看到任何“运行自定义工具”???你能说得更具体一点吗?对不起,我的评论与另一条有冲突。是的,我试图删除引用并将其添加回。同样的问题。