添加和检索嵌入式资源编码

时间:2012-12-02 06:22:49

标签: c# resources codedom

好的,我觉得我的问题的答案是在线的,但我找不到它。我要做的就是将一个文本资源文件添加到我正在用CodeDom编译的程序中,然后在编译的程序中访问该文本文件。要添加嵌入式资源,我使用了以下代码:

        System.Resources.ResourceWriter writer = new System.Resources.ResourceWriter("Resources.resx");
        writer.AddResource("EoS.txt", Form1.MasterEncoder.GetBytes(Properties.Resources.Eos));
        writer.Generate();
        writer.Close();
        Parameters.EmbeddedResources.Add("Resources.resx");

这里“参数”是我的编译器参数对象,“Eos.txt”是我正在尝试编写的文件,它是应用程序中的资源。 这不会在我构建程序时抛出任何错误,但当我尝试使用此代码在新编译的程序中获取此文本文件时,我将其添加到表单加载事件中:

         _assembly = Assembly.GetExecutingAssembly();
         _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("Resources.EoS.txt"));
         TextFile = _textStreamReader.ReadToEnd();

我粗略地得到这个错误:“值不能为空参数名称:stream。”我已经尝试将“资源”更改为程序的命名空间以及许多其他的小调整,但没有任何工作。我不确定我是否在完全错误的轨道上,但我认为我的问题在于CodeDom。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

几乎可以肯定,由于意外的方式形成了资源名称。当我记不清楚时,我使用的一个技巧就是暂时添加这行代码:

string[] resourceNames = _assembly.GetManifestResourceNames();

在其上设置断点,从而提醒自己正确的名称,然后将其复制到代码中。