2016-07-12 129 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