2016-07-12 20 views
0

我有一个VB.NET项目,我有一个窗体(frmRun),并使用不同语言的多个资源文件(即English.resx,Portuguese.resx等)在我的代码中包含对于在System.Resources命名空间,并定义了资源管理器,如下所示:无法解析资源项目

Private rm As ResourceManager 

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

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

其中CURRENTITEM。文本是“English.resx”等。由于rm是在课堂级别定义的,我现在可以轻松选择str荷兰国际集团我要显示所选语言如:

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等)。有趣的是,即使这些在我的IDE的垂直滑动条中显示为错误,它们也不是编译错误和应用程序编译/运行没关系。

除了告诉它隐藏/不通过检查显示这些资源之外,我怎样才能让它忽略在表单resx文件中查找这些资源?

回答

0

您的资源文件应该是相同的名称,但具有语言后缀。

例如

WinFormStrings.de-DE.resx德国

WinFormStrings.fr-FR.resx法国

默认将使用WinFormStrings.resx文件。然后

呼叫至.GetString将基于当前线程的文化挑选出正确的文件

,说明这一点的演练可以在这里找到:Walkthrough: Localizing Windows Forms

+0

请注意,如果这个答案帮助你 –

0

有别的东西,你可以做,使使错误消失。去Reshareper选项,然后到Code Inspection - >Inspection Severity根据你使用的语言,你可以找到Potential Code Quality Issues在这里,你可以设置严重程度为Cannot resolve resource或​​如果你不想搜索自己,你也可以搜索resharper选项和类型在Resource这将拿出你在找什么。

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

enter image description here