我有一个包含5000多个资源字符串的项目。几乎所有人都在他们的标识符中有句号。
我们正在切换到自动生成强类型类,当然,由于这些时期,我们会看到几千个警告
资源名称'blah'不是有效的标识符。
我知道不是,发电机将周期改为下划线,一切都很好。
我可以取消警告吗?它似乎没有与#pragma相关的数字。
答案 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
双击Visual Studio中项目中的Resources.resx,打开资源工具。
将Access修饰符设置为适合您正在使用的生成代码范围。
在Windows资源管理器中,转到包含 Resources.resx 和 Resources.Designer.cs 代码的目录。 (手动浏览或右键单击项目/命名空间文件夹并选择“在Windows资源管理器中打开文件夹”)
将 Resources.Designer.cs 重命名为 Resources.cs
返回Visual Studio中的资源工具并将Access修饰符设置为“No code generation”
保存,关闭资源工具
单击解决方案资源管理器窗口顶部的“显示所有文件”图标。 Resources.cs 文件应与幻影形式的 Resources.resx 显示在同一文件夹中
右键单击 Resources.cs 并选择“包含在项目中”
警告现在应该消失。当然,这项工作的不便之处在于,每次修改资源文件时都必须执行所有这些步骤。
答案 3 :(得分:0)
如果资源名称不是有效标识符(例如,它包含空格或“ - ”),则会出现此警告,并且为该文件启用了强类型资源生成。这是一个警告而不是错误,因为强类型资源名称将更改为有效名称(例如,“ab”将更改为“a_b”),但资源名称将保持为“a b。”
更正此错误
如果可能,您应首先将资源名称更改为有效标识符。如果这不是有效选项,请为此.resx文件禁用强类型资源代码生成。为此,请在“解决方案资源管理器”中选择.resx文件,然后清除“自定义工具”属性。
消息来源:http://msdn.microsoft.com/en-us/library/ms228672(v=vs.80).aspx