禁止“资源名称不是有效的标识符”

时间:2012-04-04 15:49:57

标签: .net visual-studio visual-studio-2010 embedded-resource

我有一个包含5000多个资源字符串的项目。几乎所有人都在他们的标识符中有句号。

我们正在切换到自动生成强类型类,当然,由于这些时期,我们会看到几千个警告

  

资源名称'blah'不是有效的标识符。

我知道不是,发电机将周期改为下划线,一切都很好。

我可以取消警告吗?它似乎没有与#pragma相关的数字。

4 个答案:

答案 0 :(得分:6)

我想我可以复制一下,虽然这不是问题的结晶。 Project + Properties,Resources和键入字符串资源名称(如“foo.bar”)会触发此警告。

是的,您无法禁止此警告,它是由IDE中的资源设计器生成的。当它从Properties \ Resources.resx文件自动生成代码到Properties \ Resources.Designer.cs文件。查看.resx文件并检查<data>元素上的“name”属性。属性值中的句点将触发警告。

精心设计的搜索和替换regexp可以通过将句点转换为下划线来解决这个问题。这给我个人两个问题,我只是写一个使用XDocument的小程序。还要检查是否仍然需要这个自动生成的代码,听起来好像要更换它。

答案 1 :(得分:3)

这将使用

禁止给定.cs文件的所有警告
#pragma warning disable

您还应该能够右键单击警告,然后单击“显示错误帮助”。它应该给出确切的警告编号,以便您可以通过进入项目属性,然后是构建页面并将其输入到“抑制警告”文本框中来抑制整个项目的警告。

经过进一步研究后,似乎无法抑制某些警告。有关/ nowarn C#编译器选项http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx

的详细信息,请参阅msdn

其中一个是编译器警告(级别1)CS2029,它引用了“不是有效标识符”警告。您可以通过访问编译器警告(级别1)CS2029中的详细信息进一步确认无法抑制它http://msdn.microsoft.com/en-us/library/878y1894.aspx

答案 2 :(得分:2)

这里真正糟糕的解决方法是从资源工具中解除生成的代码:

假设您的资源文件名称为 Resources.resx

  1. 双击Visual Studio中项目中的Resources.resx,打开资源工具。

  2. 将Access修饰符设置为适合您正在使用的生成代码范围。

  3. 在Windows资源管理器中,转到包含 Resources.resx Resources.Designer.cs 代码的目录。 (手动浏览或右键单击项目/命名空间文件夹并选择“在Windows资源管理器中打开文件夹”)

  4. Resources.Designer.cs 重命名为 Resources.cs

  5. 返回Visual Studio中的资源工具并将Access修饰符设置为“No code generation”

  6. 保存,关闭资源工具

  7. 单击解决方案资源管理器窗口顶部的“显示所有文件”图标。 Resources.cs 文件应与幻影形式的 Resources.resx 显示在同一文件夹中

  8. 右键单击 Resources.cs 并选择“包含在项目中”

  9. 警告现在应该消失。当然,这项工作的不便之处在于,每次修改资源文件时都必须执行所有这些步骤。

答案 3 :(得分:0)

如果资源名称不是有效标识符(例如,它包含空格或“ - ”),则会出现此警告,并且为该文件启用了强类型资源生成。这是一个警告而不是错误,因为强类型资源名称将更改为有效名称(例如,“ab”将更改为“a_b”),但资源名称将保持为“a b。”

更正此错误

如果可能,您应首先将资源名称更改为有效标识符。如果这不是有效选项,请为此.resx文件禁用强类型资源代码生成。为此,请在“解决方案资源管理器”中选择.resx文件,然后清除“自定义工具”属性。

消息来源:http://msdn.microsoft.com/en-us/library/ms228672(v=vs.80).aspx