2017-05-05 121 views
4

在我的.NET Core類庫項目中,當資源文件名稱中包含一個點時,資源文件不會更新。例如,當我在.NET Core項目中添加Resources.en.resxResources.es.resx文件時,自定義工具無法生成或更新C#資源文件。這裏是錯誤信息:.NET Core 1.1資源文件問題

自定義工具ResXFileCodeGenerator未能生成輸入文件'Resources.en.resx'的輸出,但未記錄特定錯誤。

如果您知道任何解決辦法或它的任何修復,請您指出我在正確的方向

回答

0

刪除當前任何.resx文件在您的Resources目錄。

現在轉到您的Resources目錄並右鍵單擊Add > New Item

選擇Resource File並在表單底部輸入文件名。重要的是你第一次得到這個名字並且不要重命名。你可以使用像Resource.resx之類的東西。

這個第一個Resource.resx文件應該有它自己的設計器類。它還需要項目本地化的所有密鑰和值,所以如果您有現有的Resource.en.resx,則可以將其中的值複製並粘貼到該項中。

如果需要IStringLocalizer<Resource>或者,換句話說,你需要引用Resource類莫名其妙,那麼你將需要去解決方案資源管理器,並在Resource.resx左鍵單擊。在屬性框中有一個名爲「自定義工具」的字段。如果你想要從resx生成一個可公開訪問的類,你需要將其從ResXFileCodeGenerator更改爲PublicResXFileCodeGenerator

現在您可以添加個人Resource.ja.resx,Resource.es.resx文件。這些做需要有一個自定義工具ResXFileCodeGenerator上運行,所以你可以從屬性中刪除。這將解決你的錯誤信息。

+0

您的解決方案效果很好。非常感謝。 –

+0

現在我有三個文件:(1)Resource.resx,(2)Resource.en.resx和(3)Resource.es.resx。 Resource.resx文件具有英文中的所有關鍵值和值。由於它默認爲英文,是不是創建Resource.en.resx文件的重複?我明白Resource.resx是爲了不變的文化。 –

+0

嗨@如果它是默認語言,您可以刪除'Resource.en.resx'。只需在'Resource.resx'中包含默認的字符串即可 –