Я хотел бы взять файл, являющийся файлом IL, и во время выполнения скомпилировать его обратно в exe.Скомпилировать код IL во время выполнения с использованием .NET 3.5 и C# из файла
В настоящее время я могу использовать process.start, чтобы отключить командную строку с параметрами (ilasm.exe), но я хотел бы автоматизировать этот процесс с помощью службы C#, которую я создам.
Есть ли способ сделать это с отражением и отражением?
В то время как это работает:
string rawText = File.ReadAllText(string.Format("c:\\temp\\{0}.il", Utility.GetAppSetting("baseName")), Encoding.ASCII);
rawText = rawText.Replace("[--STRIP--]", guid);
File.Delete(string.Format("c:\\temp\\{0}.il", Utility.GetAppSetting("baseName")));
File.WriteAllText(string.Format("c:\\temp\\{0}.il", Utility.GetAppSetting("baseName")),rawText, Encoding.ASCII);
pi = new ProcessStartInfo();
pi.WindowStyle = ProcessWindowStyle.Hidden;
pi.FileName = "\"" + ilasm + "\"";
pi.Arguments = string.Format("c:\\temp\\{0}.il", Utility.GetAppSetting("baseName"));
using(Process p = Process.Start(pi))
{
p.WaitForExit();
}
Это не идеально, как я действительно хотел бы, чтобы это было упорядочить процесс.
Я видел примеры создания IL во время выполнения, а затем сохранение, но мне нужно использовать IL, который у меня уже есть в форме файла, и скомпилировать его обратно в exe.
Спасибо.
Возможно, вы сможете использовать методы Reflection.Emit или dynamic в зависимости от того, откуда взялся ваш IL. Это сгенерировано? –
Оригинальный IL будет создан на основе Ildasm.exe. – nitefrog