Я пытался заставить CodeDom работать, чтобы я мог динамически создавать код для своего приложения во время выполнения. Тем не менее, после многих уроков и проб и ошибок я столкнулся с проблемой, которую, похоже, не могу решить. Я продолжаю получать ошибки компилятора в коде, который выглядит точно так, как должен. Я получаю "Нераспознанная escape-последовательность" \ ", когда в моем коде нет" \ ".
Все ошибки, которые я получаю, находятся в строке 1. Вот они в порядке:
CS1009
CS1056 (3 раза подряд)
CS0116
Вот что у меня есть:
Код компилируемого:
using System;
using System.Windows.Forms;
namespace sdjkfhj
{
public class Sample
{
public static void main()
{
MessageBox.Show("Working");
return;
}
}
}
А код компилятора выглядит следующим образом:
public void Compile(string file)
{
var prov = new Dictionary<string, string>();
prov.Add("CompilerVersion", "v2.0");
CSharpCodeProvider c = new CSharpCodeProvider();
ICodeCompiler comp = c.CreateCompiler();
CompilerParameters param = new CompilerParameters();
param.GenerateExecutable = true;
param.OutputAssembly = file + ".exe";
param.ReferencedAssemblies.Add("System.dll");
param.ReferencedAssemblies.Add("System.Windows.Forms.dll");
if (c.Supports(GeneratorSupport.EntryPointMethod))
param.MainClass = "Sample";
CompilerResults results = comp.CompileAssemblyFromSource(param, file);
if (results.Errors.Count > 0)
{
foreach (CompilerError CompErr in results.Errors)
{
MessageBox.Show("Line number " + CompErr.Line + ", Error Number: " + CompErr.ErrorNumber + ", '" + CompErr.ErrorText + ";" + Environment.NewLine + Environment.NewLine);
}
}
}
Есть что-то, что я не делаю, чтобы правильно скомпилировать? Есть вещи, которые мне не хватает? Я как бы потерялся здесь. Заранее спасибо.