5

好的,我觉得我的问题的答案是在线的,但我找不到它。我要做的就是将一个文本资源文件添加到我正在使用 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");

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

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

我大致收到此错误:“值不能为空参数名称:流。” 我已经尝试将“资源”更改为程序的名称空间和许多其他的小调整,但没有任何效果。我不确定我是否走错了路,但我认为我的问题出在 CodeDom 上。有什么建议么?

4

1 回答 1

1

这几乎可以肯定是由于资源名称的形成方式出乎意料。当我想不起来时,我使用的一个技巧是临时添加这行代码:

string[] resourceNames = _assembly.GetManifestResourceNames();

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

于 2014-02-20T14:52:57.273 回答