Вы уже сказали, что знаете, как работать с CodeDOM - почему бы просто не использовать это?
Если вас устраивает код C #, тогда CSharpCodeProvider
делает замечательную работу. Если вы чувствуете себя более предприимчивым, возможно, вы захотите Boo - прочитать книгу Айенде Рахиен о создании DSL в Boo для получения дополнительной информации и рекомендаций.
В качестве примера использования CSharpCodeProvider
вы можете загрузить Snippy с моего C # на веб-сайте Depth . По сути, Snippy позволяет вам вводить фрагмент кода и запускать его, не беспокоясь об объявлении класса и т. Д. Он не делает намного больше, чем создает и запускает код, поэтому это довольно удобный пример:)
Для множества других примеров, найдите CSharpCodeProvider в переполнении стека . Вот короткий, но полный - код для "hello world" компилируется и затем выполняется.
using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
class Test
{
public static void Main(string[] args)
{
string code = @"
using System;
class CodeToBeCompiled
{
static void Main()
{
Console.WriteLine(""Hello world"");
}
}";
var codeProvider = new CSharpCodeProvider();
var parameters = new CompilerParameters
{
GenerateExecutable = true,
OutputAssembly = "Generated.exe"
};
var results = codeProvider.CompileAssemblyFromSource
(parameters, new[] { code });
results.CompiledAssembly.EntryPoint.Invoke(null, null);
}
}