2010-01-09 41 views
0

我在我的項目中添加了一個名爲CrpResource.resx的資源文件。 然後,在將資源文件添加到資源文件後,我想訪問它並通過代碼讀取它。使用C#,如何訪問資源文件(.resx)並從添加到文本文件中讀取?

請提出任何建議。

+0

Resx在閱讀時有一些細微差別......使用設計器生成的代碼與resx一起使用會出現什麼問題?也許有一些反思?或者,或者 - 不要使用resx;只需將文件包含爲資源。 – 2010-01-09 09:10:14

回答

1
_assembly = Assembly.GetExecutingAssembly(); 
_textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt")); 

如下圖:
http://support.microsoft.com/kb/319292

+0

什麼是MyNameSpace?它是資源文件的名稱? – odiseh 2010-01-09 08:34:06

+0

它是你的項目的命名空間。在VS> Project> Properties中你會得到命名空間 – Brij 2010-01-09 08:40:14

+0

那麼根據你最近的評論,沒有必要在命名空間名稱後面加上資源文件的名字? – odiseh 2010-01-09 08:47:35

2

@Brij已經提供了答案的核心。

但是,這裏的難點在於知道資源名稱是什麼 - 在將文件作爲資源來解析其完全限定名稱後,並不總是那麼容易。

一個簡單的方法來找出是臨時加入這一行代碼:

string[] names = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 

然後運行該程序,你可以在調試器中查看所有可用資源的「名稱」列表中。

+0

正如我在CrpResource.Designer.cs中看到的,我添加到資源文件中的每件事都是作爲一個屬性。 我該如何利用這個機會? – odiseh 2010-01-09 08:44:59

+0

您可以直接通過屬性名稱訪問資源,但是這會爲您提供資源的實例而不是其原始數據(例如,當您嘗試使用它時,像'Properties.Resources.AppIcon'這樣的圖標就會成爲Bitmap對象。因此必須要求它串行化爲一個MemoryStream,然後如果你想從它那裏獲得原始的「文件」數據,則從該MemoryStream中讀回) – 2010-01-09 09:07:35

相關問題