我有一个包含 5000 多个资源字符串的项目。几乎所有人的标识符中都有句点。
我们正在切换到自动生成强类型类,当然,由于句号,我们会看到几千条警告
资源名称“blah”不是有效标识符。
我知道不是,生成器将句点更改为下划线,一切都很好。
我可以抑制警告吗?它似乎没有与#pragma away 相关的号码。
我有一个包含 5000 多个资源字符串的项目。几乎所有人的标识符中都有句点。
我们正在切换到自动生成强类型类,当然,由于句号,我们会看到几千条警告
资源名称“blah”不是有效标识符。
我知道不是,生成器将句点更改为下划线,一切都很好。
我可以抑制警告吗?它似乎没有与#pragma away 相关的号码。
我想我可以复制,尽管问题并不明确。Project + Properties, Resources 并键入一个字符串资源名称,如“foo.bar”会触发此警告。
是的,您不能取消此警告,它是由 IDE 中的资源设计器生成的。当它从 Properties\Resources.resx 文件自动生成代码到 Properties\Resources.Designer.cs 文件时。查看 .resx 文件并检查<data>
元素的“名称”属性。属性值中的句点将触发警告。
用正则表达式精心设计的搜索和替换可以通过将句点变成下划线来解决这个问题。这给我个人带来了两个问题,我只需要编写一个使用 XDocument 的小程序。还要检查你是否仍然需要这个自动生成的代码,听起来你正在替换它。
这里一个非常糟糕的解决方法是将生成的代码与 Resource 工具分离:
假设您的资源文件的名称是Resources.resx
通过双击 Visual Studio 中项目中的 Resources.resx 打开资源工具。
设置适合您正在使用的生成代码范围的访问修饰符。
在 Windows 资源管理器中,转到包含Resources.resx和Resources.Designer.cs代码的目录。(手动浏览或右键单击您的项目/命名空间文件夹并选择“在 Windows 资源管理器中打开文件夹”)
将Resources.Designer.cs重命名为Resources.cs
回到 Visual Studio 中的资源工具,将访问修饰符设置为“无代码生成”
保存,关闭资源工具
单击解决方案资源管理器窗口顶部的“显示所有文件”图标。Resources.cs文件应以幻影形式出现在与Resources.resx相同的文件夹中
右键单击Resources.cs并选择“包含在项目中”
警告现在应该消失了。当然,这项工作的不便之处在于,您必须在任何时候修改资源文件时执行所有这些步骤。
这将抑制给定 .cs 文件的所有警告
#pragma warning disable
您还应该能够右键单击警告,然后单击“显示错误帮助”。它应该给出准确的警告编号,以便您可以通过进入项目属性,然后进入构建页面并将其输入到 Suppress Warnings 文本框来抑制整个项目的警告。
经过进一步研究,似乎无法抑制某些警告。请参阅 msdn 上有关 /nowarn C# 编译器选项的详细信息http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx
其中之一是编译器警告(级别 1)CS2029,它指的是您收到的“不是有效标识符”警告。您可以通过访问此处的编译器警告 (level1) CS2029 的详细信息来进一步确认它不能被抑制http://msdn.microsoft.com/en-us/library/878y1894.aspx
如果资源名称不是有效标识符(例如,它包含空格或“-”),并且为文件打开了强类型资源生成,则会出现此警告。这是一个警告而不是错误,因为强类型资源名称将更改为有效名称(例如,“a b”将更改为“a_b”),但资源名称将保持为“a b”。
纠正这个错误
如果可能,您应该首先将资源的名称更改为有效的标识符。如果这不是有效选项,请禁用此 .resx 文件的强类型资源代码生成。为此,请在解决方案资源管理器中选择 .resx 文件并清除自定义工具属性。
来源: http: //msdn.microsoft.com/en-us/library/ms228672 (v=vs.80).aspx