在CodeDom中,可以使用CompilerParameters.EmbeddedResources属性将嵌入资源添加到动态创建的文件中。在我的项目中,我将一些字节数据作为嵌入式资源添加到我动态创建的文件中(如下所示)。
Byte[] bytes = new byte[] {1,2,3,4,5};
// Write the data to disk (I would like to avoid this step!).
File.WriteAllBytes(@"C:\EmbeddedResource.exe", bytes);
CompilerParameters cp;
cp.EmbeddedResources.Add(@"C:\EmbeddedResource.exe");
是否有某种方法可以将'bytes'的数据存储在内存中,并直接从内存中将其作为嵌入式资源添加。
感谢您的任何建议,
埃文
答案 0 :(得分:0)
我怕你不能。查看CSharpCodeGenerator(使用Telerik的JustDecompile或Redgate的.NET Reflector),我发现了CompilerParameters类的用法:
private string CmdArgsFromParameters(CompilerParameters options)
{
StringBuilder stringBuilder = new StringBuilder(128);
// ...
StringEnumerator stringEnumerator = options.EmbeddedResources.GetEnumerator();
try
{
while (stringEnumerator.MoveNext())
{
string str = stringEnumerator.Current;
stringBuilder.Append("/res:\"");
stringBuilder.Append(str);
stringBuilder.Append("\" ");
}
}
finally
{
IDisposable disposable2 = stringEnumerator as IDisposable;
if (disposable2 != null)
{
disposable2.Dispose();
}
}
// ...
return stringBuilder.ToString();
}
他们使用它来创建一个字符串,其中包含传递给C#编译器exe的所有命令行参数(http://msdn.microsoft.com/en-us/library/6ds95cz0%28v=VS.100%29的.aspx)。所以,最后,我猜你的代码只是用csc.exe编译。
[]的