我想要一个为用户提供两个选项的 GUI:
- 读入用户通过 openFileDialog 加载的密钥文件。
- 读入一个预加载的密钥文件(用户可以使用单选按钮选择一个)。
这将很有帮助,因为用户不需要随身携带我们所有的密钥文件,但如果需要添加新的密钥文件,它仍然可以提供灵活性。
我的代码目前适用于选项#1。我用:
readFile = new StreamReader(KeyFileFullPath);
其中 KeyFileFullPath 是 openFileDialog 定义的密钥文件的文件路径。
我想对选项 #2 使用相同的 streamReader,但我无法将阅读器指向资源文件。
从这个问题,我尝试了以下内容:
_assembly = Assembly.GetExecutingAssembly();
readFile = new StreamReader(_assembly.GetManifestResourceStream(TM_Decoder.Properties.Resources._7p1_HOB_Key));
我使用 C# 的自动完成导航到 ..."_7p1_HOB_Key",所以我希望它指向我实际存在的东西。但是,当我尝试运行代码时,出现此错误:
“值不能为空。参数名称:流”
基于此,我尝试查找 ManifestResourceNames,但它只有:“TM_Decoder.Form1.resources”和“TM_Decoder.Properties.Resources.resources”
这些实际上都没有指向我已加载到项目资源中的关键文件。
提前感谢您在让 streamReader 指向资源文本文件方面提供的任何帮助!
编辑(响应 SLaks 的建议):
- 除非我误解了“根命名空间”的含义,否则我认为它是正确的。该项目的名称是“TM Decoder”,所以我认为“TM_Decoder”是根命名空间。这不对吗?
- 谢谢,我将构建操作更改为“嵌入式资源”。它以前设置为“无”(我不知道)。不幸的是,这还不足以解决问题(调试尝试的结果没有改变)。
- 我不确定资源文件夹中的项目。它们位于项目文件夹中名为“资源”的文件夹中,即 TM 解码器 --> 资源,而不是 TM 解码器 --> 属性 --> 资源 这是 Visual Studio 在我通过资源选项卡添加资源时自动执行的操作在项目属性中。