无法解析资源项
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 实现,但我们遇到了同样的问题,我们将它们设置为提示/建议,这样它们将是可见的,但不像错误。
我有一个 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 实现,但我们遇到了同样的问题,我们将它们设置为提示/建议,这样它们将是可见的,但不像错误。