我如何嵌入字符串资源,并检索它与CodeDom编译后
本文关键字:CodeDom 编译 检索 何嵌入 字符串资源 | 更新日期: 2023-09-27 18:05:32
我觉得这个问题可能已经回答了,但我找不到一个我理解的答案,这是特定于我的例子,所以我问。
我有一个c#应用程序,编译一些代码,我希望能够嵌入一个字符串资源(称为someString),我有我的资源内部。resx文件。然后,我希望能够在编译程序中访问嵌入的资源。但是,我正在努力访问资源文件,因为当我运行编译后的程序时,它说流不能为空。
下面是我的示例代码: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""))