ozd*_*ies 2 c# compiler-construction codedom
我一直在努力让CodeDom工作,所以我可以在运行时为我的应用程序动态创建代码.然而,经过许多教程和反复试验,我遇到了一个我似乎无法通过的问题.我一直在代码看起来完全像应该编译错误.当我的代码中没有'\'时,我得到"无法识别的转义序列'\'".
我得到的错误都在第1行.这里它们是有序的:CS1009 CS1056(连续3次)CS0116
这是我有的:
正在编译的代码:
using System;
using System.Windows.Forms;
namespace sdjkfhj
{
public class Sample
{
public static void main()
{
MessageBox.Show("Working");
return;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编译器代码如下:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么我不做的编译吗?有什么我想念的吗?我有点迷失在这里.提前致谢.
立即想到三件事:
param.OutputAssembly = file + ".exe";修复这些只是第一步,您还必须配置输出需要引用的程序集,并且在您正在使用的CompilerParameters上设置MainClass也不是一个坏主意.