Home Articles

无法将资源文本文件的内容导入StreamReader

Asked
Viewed 1691 times
1

我想有一个GUI,为用户提供两个选项:

  • 读入用户通过openFileDialog加载的密钥文件 .

  • 读入预加载的密钥文件(用户可以使用radioButtons选择一个) .

这将有助于用户不需要携带我们所有的密钥文件,但如果需要添加新的密钥文件,它仍然允许灵活性 .

我的代码目前正在为选项#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));

我使用C#的自动完成导航到...“_ 7p1_HOB_Key”,所以我希望它指向我实际存在的东西 . 但是,当我尝试运行代码时,我收到此错误:

“值不能为null . 参数名称:stream”

基于this,我尝试查找ManifestResourceNames,但它只是:"TM_Decoder.Form1.resources"和"TM_Decoder.Properties.Resources.resources"

这些都没有实际指向我已加载到项目资源中的密钥文件 .

在此感谢您提供有关使streamReader指向资源文本文件的任何帮助!

编辑(响应SLaks建议):

  • 除非我弄错"Root Namespace,"的意思,否则我认为这是正确的 . 该项目的名称是"TM Decoder"所以我认为"TM_Decoder"是根名称空间 . 这不对吗?

  • 谢谢,我将构建操作更改为"Embedded Resource."之前设置为"None"(我没有足够的时间来解决问题(没有更改调试尝试的结果) .

  • 我不确定资源文件夹中的项目 . 它们位于项目文件夹中名为"resources"的文件夹中,即TM Decoder - > resources,而不是TM Decoder - > Properties - > Resources这是Visual Studio通过项目的Resources选项卡添加资源时自动执行的操作属性 .

1 Answer

  • 2

    TM_Decoder.Properties.Resources._7p1_HOB_Key 是包含实际内容的字符串,而不是资源名称 .
    "TM_Decoder.Resources._7p1_HOB_Key" 是资源名称 .

Related