2012-04-09 56 views
1

我想有一個圖形用戶界面,爲用戶提供了兩種選擇:麻煩資源文本文件的內容到StreamReader的

  1. 在讀通過打開文件對話框,用戶加載的密鑰文件。
  2. 讀取預加載的密鑰文件(用戶將使用radioButton選擇一個)。

這會有所幫助,因爲用戶不需要隨身攜帶所有的密鑰文件,但是如果需要添加新的密鑰文件,仍然可以提供靈活性。

我的代碼目前正在爲選項#1工作。我使用:

readFile = new StreamReader(KeyFileFullPath); 

其中KeyFileFullPath是由openFileDialog定義的密鑰文件的文件路徑。

我想爲選項#2使用相同的streamReader,但是我在讀取資源文件時遇到了問題。

this question,我嘗試以下操作:

_assembly = Assembly.GetExecutingAssembly(); 
readFile = new StreamReader(_assembly.GetManifestResourceStream(TM_Decoder.Properties.Resources._7p1_HOB_Key)); 

我導航到......「_ 7p1_HOB_Key」用C#的自動完成,所以我希望它在實際存在的東西指着我。然而,當我嘗試運行代碼,我得到這個錯誤:

「值不能爲null.Parameter名:流」基於this

,我試圖尋找了ManifestResourceNames,但所有它必須是: 「TM_Decoder.Form1.resources」和「TM_Decoder.Properties.Resources.resources」

這些實際上都沒有指向我已加載到項目資源中的密鑰文件。

在此先感謝您獲取streamReader指向資源文本文件的任何幫助!

編輯(響應SLaks建議):

  1. 除非我弄錯了的意思是「根命名空間,」我認爲這是正確的。該項目的名稱是「TM解碼器」,所以我認爲「TM_Decoder」是根名稱空間。這是不對的?
  2. 謝謝,我將構建操作更改爲「嵌入式資源」。它以前被設置爲「無」(我不知道它)。不幸的是,這還不足以解決問題(不會改變調試嘗試的結果)。
  3. 我不確定資源文件夾中的項目。它們位於項目文件夾中名爲「resources」的文件夾中,即 TM解碼器 - >資源,而不是TM解碼器 - >屬性 - >資源 這是Visual Studio在通過項目屬性中的資源選項卡。

回答

2

TM_Decoder.Properties.Resources._7p1_HOB_Key是一個包含實際內容而不是資源名稱的字符串。
"TM_Decoder.Resources._7p1_HOB_Key"是資源名稱。

+0

當我添加引號以使行讀取:..._ assembly.GetManifestResourceStream(「TM_Decoder.Properties.Resources._7p1_HOB_Key」)時,它仍會在readFile中給出空值並返回與以前相同的錯誤。 – Patrigon 2012-04-09 19:07:29

+0

@Patrigon:您可能需要添加根名稱空間。 – SLaks 2012-04-09 19:35:15

+0

此外,請確保文件的構建操作已設置爲「嵌入式資源」。 – SLaks 2012-04-09 19:36:03