命名空间中不存在类型资源的错误。

23

遇到了另一个问题。我几乎完成了我的项目,但感觉必须更改项目的命名空间。但是,我没有使用“重构-->重命名”,而是选择了我的命名空间,编辑-->查找和替换,并用不同的命名空间替换了我的整个解决方案(因此在解决方案中的任何地方,例如存在" name1" 的命名空间或文本现在都被更改为"name2")。

但现在我收到大约16个错误,都说同样的事情:“类型或命名空间"资源"在命名空间name1中不存在”。

     this.centerPanel.BackgroundImage = global::login_DragDrop.Properties.Resources.oeftest;

比如说,在这段代码中(主要在 designer.cs 中),资源被标为红色?

有关如何解决此问题的任何提示吗?


3
你的项目属性中的默认命名空间也相应更改了吗?当你完成更改后,进入你的资源文件(在“属性”下),右键点击并选择运行自定义工具。 - rene
谢谢,非常有帮助,解决了问题 :) - user3644837
7个回答

55
您需要在资源文件上运行代码生成,以便在其中获取正确的命名空间。
按照以下步骤操作:
  • 打开项目属性(右键单击 > 属性)
    • 点击“应用程序”部分
    • 输入您想要的默认命名空间
    • 关闭并保存您的属性
  • 在解决方案资源管理器中导航到您的Resouces.resx文件(位于Properties下)
    • 右键单击Resources.resx文件
    • 选择“Run Custom Tool”(或alt+L
这将再次运行资源文件的代码生成。生成的代码使得您可以强类型访问资源字符串中的值。

1
使用VS2013。我发现不仅需要更新项目应用程序默认命名空间的命名空间,还需要更新.resx文件属性的自定义工具命名空间。这两个位置被认为是与代码开发分离的,因此它们无法通过全局查找和替换找到。 - shipr
@shipr 感谢您报告这个问题。我在 VS2010 中没有这个自定义工具集,但我会在今晚检查 VS2013 并编辑我的答案。 - rene

7

我运行自定义工具失败了。

但是我发现如果添加一个资源,问题会自动解决。

请按照以下步骤操作:

  • 打开项目属性(右键单击>属性)
  • 点击资源部分
  • 在添加资源下拉菜单中选择添加现有文件
  • 选择任何资源文件。(我选择了一个现有的图像文件)
    • 在这一点上,我的错误消失了。
  • 选择您刚刚添加的资源
  • 单击删除资源(以清理)
  • 关闭并保存您的属性

虽然我回复有些晚,但希望这个答案能够帮到您。


3
在我的情况下,Resource.Designer.cs文件不知何故被从项目中排除了... 点击显示隐藏文件(显示所有文件),右键将其包含在项目中即可解决。呼...

1

由于在我的情况下没有任何答案有效,我决定发布自己的答案。

这是我所做的:

  • 在完全相同的命名空间(Y)中创建与原类同名的类(X)。
  • 会出现“命名空间“Y”已经包含了“X”的定义。”的错误。
  • 删除类 X。

在删除类后,我的资源名为 X 的资源仍然可见于该命名空间中。


1
您很可能尝试添加另一个与已有资源同名的资源文件。 要解决此问题,只需删除Resources.resx文件中相应的行即可。例如,您会看到两行具有相同的“数据名称”:
  <data name="button" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>

0
我也使用“查找和替换”重命名了我的项目名称空间,并遇到了同样的问题。@rene建议的应用程序修复方法是一种解决方案(感谢),但我发现“settings.settings”中有旧的命名空间名称。在VS2019中,我没有看到任何找出错误名称的方法,所以不得不使用“查找”来寻找问题的根源。

0
错误代码与更改命名空间无关。它只是意味着文件"Resources.Designer.cs"不存在。由于该文件在代码编译时自动生成,您需要查看文件"Resources.resx"以找出问题所在。
可能的原因有: 1. 您重命名了一个资源文件。 2. 您意外删除了一个资源文件。 3. ???
无论哪种情况,您可能需要在"属性"下的解决方案资源管理器中打开Resources.resx。在那里,您将看到一堆代表您的资源的图标(在我的情况下是一堆.png文件)。找到那些变灰的图标,然后要么删除它们,要么重新生成它们(在操作系统中恢复它们)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接