C# CodeDom Добавить встроенный ресурс без предварительной записи файла на диск
В 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");
Есть ли какой-нибудь способ, которым я могу хранить данные "байтов" в памяти и добавлять их как встроенный ресурс непосредственно из памяти.
Спасибо за любой совет,
Evan
1 ответ
Боюсь, ты не сможешь. Заглядывая в CSharpCodeGenerator (с помощью TeleDrika 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# (http://msdn.microsoft.com/en-us/library/6ds95cz0%28v=VS.100%29.aspx), Итак, в конце, я думаю, ваш код просто скомпилирован с помощью csc.exe.
[] 'S