Dot-Net

ResourceManager 試圖載入 .resources 而不是 .resx 文件

  • April 22, 2015

我正在嘗試使用以下方法在我的 .net 網站中載入 resx 文件:

ResourceManager rm = new ResourceManager( "Project.Resource", Assembly.GetExecutingAssembly() );

Resource.resx 文件位於文件夾 App_LocalResources 中,並設置為在建構時嵌入到程序集中。

當我嘗試使用以下方式訪問 resx 文件時:

rm.GetString( "key" );或者rm.GetString( "key", culture );

我收到一條錯誤消息:

找不到適合指定區域性或中性區域性的任何資源。確保“Project.Resource.resources”在編譯時被正確嵌入或連結到程序集“Project”中,或者所有所需的附屬程序集都是可載入的並且是完全簽名的。

注意 .resources …關於這裡發生了什麼的任何想法?

要將 .resx 載入到 ResourceManager 中,您需要指定命名空間

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly());

或者,如果將託管資源編輯器中的訪問修飾符設置為內部或公共,則可以免費獲得 ResourceManager,之後 VS 將生成 ResxName.Designer.cs

var rm = ResxName.ResourceManager;

通過字元串讀取資源的方法非常簡單:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey")

在不能使用“點表示法”的情況下(例如,當資源鍵保存在數據庫中時),它是一種簡潔而優雅的解決方案,用於通過鍵讀取資源。

引用自:https://stackoverflow.com/questions/1460981