2009-04-16 59 views
1

我有一個.resx文件,其中包含我的項目的一些字符串資源。在運行時,我想讀取此文件中定義的所有資源並將它們存儲在容器中。原因並不重要。在運行時枚舉.NET嵌入式資源的內容

我讀過關於ResourceReader類,它對二進制.resource文件進行操作。我的印象是,.resx在編譯時被轉換爲二進制格式並嵌入到程序集中。這是真的,還是我需要用resgen手動生成它?如果我需要手動生成它,我如何將它添加到我的VS項目中,將它嵌入到程序集中,並在運行時訪問它?

簡而言之,如何在運行時使用ResourceReader訪問.resx中定義的資源?

回答

3

您可以使用ResourceReader.GetEnumerator()來獲得一個枚舉器到您的資源。

如果您試圖直接讀取.resx文件,您可能需要考慮使用ResXResourceReader而不是ResourceReader。

如果您嘗試從.resources(resx - > resources)編譯的內容中讀取,則需要適當修改名稱。說你的名字,你.resx文件「MyRes.resx」,你需要使用:

var resManager = new ResourceManager("MyRes.resources"); 

如果RESX文件是在衛星組裝,但是,它會增加項目的名稱,即:("MyProject.MyRes.resources");

如果您使用的本地化,你需要的是,太:("MyProject.MyRes.en-GB.resources");

+0

是的,但首先我需要傳遞一個.resource文件的路徑構建ResourceReader。我創建了一個.resx文件,但我不明白.resource文件的來源。 – Odrade 2009-04-16 19:32:41

+0

我想過用resgen生成一個並將其添加到我的項目中,但我認爲二進制資源應該嵌入程序集中。我一定是誤解了一些東西。 – Odrade 2009-04-16 19:34:41

+0

.resource文件在構建時由資源文件生成器生成:http://msdn.microsoft.com/en-us/library/ccec7sz1(VS.80).aspx – Lucero 2009-04-16 19:37:19