无法解析资源项

Cannot resolve resource item

我有一个 VB.NET 项目,其中有一个表单 (frmRun) 并且正在使用不同语言的多个资源文件(即 English.resx、Portuguese.resx 等)在我的我已经包含了 System.Resources 的命名空间并定义了一个资源管理器,如下所示:

Private rm As ResourceManager

启动时或用户从菜单中选择语言时,我设置了资源管理器:

 rm = New ResourceManager("MyRootNamespace." & currentItem.Text, System.Reflection.Assembly.GetExecutingAssembly())

其中 currentItem.Text 是 "English.resx",等等。由于 rm 是在 class 级别定义的,我现在可以轻松地选择要为所选语言显示的字符串:

btnStartStop.Text = rm.GetString("btnStartStop_Start")

此资源字符串 "btnStartStop_Start" 在 English.resx(英语)和 Portuguese.resx(葡萄牙语)中都有定义。

我正在使用 JetBrains Resharper,问题是 IDE 在我使用 rm.GetString 的每一行的垂直滚动条中显示错误,说它无法解决这些错误。如果我单击 IDE 左栏中的灯泡,它告诉我可以通过将其添加到资源项来解决此问题。当我这样做时,它会将其添加到表单 resx 文件中。在这种情况下,这个字符串进入 "frmRun.resx" 并且错误消失了。但我没有使用 frmRun.resx,我专门告诉它使用不同的 resx 文件(English.resx,等等)有趣的是,即使这些在我的 [=41] 的垂直滚动条中显示为错误=],它们不是编译错误,应用程序 compiles/runs 没问题。

除了告诉它 hide/not 通过检查显示这些资源之外,我如何让它忽略在 resx 表单文件中寻找这些资源?

您的资源文件应同名但带有语言后缀。

例如

WinFormStrings.de-DE.resx 德语

WinFormStrings.fr-FR.resx 法语

默认将使用 WinFormStrings.resx 文件。

然后调用 .GetString 将根据当前线程文化选择正确的文件

可以在此处找到对此进行解释的演练:Walkthrough: Localizing Windows Forms

您还可以采取其他措施来消除错误。转到 Reshareper 选项,然后转到 Code Inspection --> Inspection Severity 在您使用的语言下您可以找到 Potential Code Quality Issues 在这里您可以设置 Cannot resolve resource 或 [=14] 的严重性=] 如果你不想自己搜索,你也可以搜索 resharper 选项并输入 Resource 这会找到你要找的东西。

我们使用自己的 ResourceManager 实现,但我们遇到了同样的问题,我们将它们设置为提示/建议,这样它们将是可见的,但不像错误。