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

时间:2012-04-09 16:09:33

标签: c# embedded-resource streamreader

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

  1. 读入用户通过openFileDialog加载的密钥文件。
  2. 读入预先加载的密钥文件(用户可以使用radioButtons选择一个)。
  3. 这将有助于用户不需要随身携带我们所有的密钥文件,但如果需要添加新的密钥文件,它仍然可以提供灵活性。

    我的代码目前正在使用选项#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建议):

    1. 除非我弄错了“Root Namespace”的含义,否则我认为这是正确的。该项目的名称是“TM Decoder”,所以我认为“TM_Decoder”是根名称空间。这不对吗?
    2. 谢谢,我将构建操作更改为“Embedded Resource”。之前设置为“无”(我不知道)。不幸的是,这还不足以解决问题(调试尝试的结果没有变化)。
    3. 我不确定资源文件夹中的项目。它们位于项目文件夹中名为“resources”的文件夹中,即 TM解码器 - >资源,而不是TM解码器 - >属性 - >资源 当我通过项目属性中的“资源”选项卡添加资源时,这就是Visual Studio自动执行的操作。

1 个答案:

答案 0 :(得分:2)

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