我想有一個圖形用戶界面,爲用戶提供了兩種選擇:麻煩資源文本文件的內容到StreamReader的
- 在讀通過打開文件對話框,用戶加載的密鑰文件。
- 讀取預加載的密鑰文件(用戶將使用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建議):
- 除非我弄錯了的意思是「根命名空間,」我認爲這是正確的。該項目的名稱是「TM解碼器」,所以我認爲「TM_Decoder」是根名稱空間。這是不對的?
- 謝謝,我將構建操作更改爲「嵌入式資源」。它以前被設置爲「無」(我不知道它)。不幸的是,這還不足以解決問題(不會改變調試嘗試的結果)。
- 我不確定資源文件夾中的項目。它們位於項目文件夾中名爲「resources」的文件夾中,即 TM解碼器 - >資源,而不是TM解碼器 - >屬性 - >資源 這是Visual Studio在通過項目屬性中的資源選項卡。
當我添加引號以使行讀取:..._ assembly.GetManifestResourceStream(「TM_Decoder.Properties.Resources._7p1_HOB_Key」)時,它仍會在readFile中給出空值並返回與以前相同的錯誤。 – Patrigon 2012-04-09 19:07:29
@Patrigon:您可能需要添加根名稱空間。 – SLaks 2012-04-09 19:35:15
此外,請確保文件的構建操作已設置爲「嵌入式資源」。 – SLaks 2012-04-09 19:36:03