C# 如何嵌入字符串资源并在使用CodeDom编译后检索它?

C# 如何嵌入字符串资源并在使用CodeDom编译后检索它?,c#,compiler-construction,resources,embedded-resource,C#,Compiler Construction,Resources,Embedded Resource,我觉得这个问题可能已经得到了回答,但我找不到一个我理解的答案,这是我的例子所特有的,所以我会问 我有一个C#应用程序,可以编译一些代码,我希望能够在Resources.resx文件中嵌入一个字符串资源(称为someString)。然后我希望能够访问编译程序中的嵌入式资源。然而,我正在努力访问资源文件,因为当我运行编译的程序时,它说流不能为null 下面是我的示例代码: string codeString = @"using System; using System

我觉得这个问题可能已经得到了回答,但我找不到一个我理解的答案,这是我的例子所特有的,所以我会问

我有一个C#应用程序,可以编译一些代码,我希望能够在Resources.resx文件中嵌入一个字符串资源(称为someString)。然后我希望能够访问编译程序中的嵌入式资源。然而,我正在努力访问资源文件,因为当我运行编译的程序时,它说流不能为null

下面是我的示例代码:

string codeString =
        @"using System;
        using System.IO;
        using System.Reflection;

        namespace SomeProgram
        {
            class MyClass
            {
                static void Main(string[] args)
                {
                    Assembly resourceAssembly = Assembly.GetExecutingAssembly();
                    StreamReader stream = new StreamReader(resourceAssembly.GetManifestResourceStream(""Resources.someString""));
                    string someStringValue = stream.ReadToEnd();

                    Console.WriteLine(someStringValue);
                    Console.ReadLine();
                }
            }
        }";


// Compiler Code
CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
string outFile = "output.exe";

System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = outFile;
parameters.EmbeddedResources.Add("..\\..\\Properties\\Resources.resx");
parameters.EmbeddedResources.Add("..\\..\\Properties\\Resources.Designer.cs");

CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, codeString);
我是否在编译代码中以错误的方式访问嵌入式资源?

回答我自己的问题: 找到了一种方法(这可能不是最好的方法),但它涉及从嵌入的资源文件读取流,然后稍后解析它以获得所需的字符串值

StreamReader stream = new StreamReader(resourceAssembly.GetManifestResourceStream(""Resources.resx""))