使用C#提供的对象在编译器中的常量错误

时间:2009-05-23 21:46:18

标签: c#

我已经使用内置的C#方法编写了一个编译器,如下所示:

CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
string Output = "Out.exe";
Button ButtonObject = (Button)sender;

this.RadTextBox1.Text = string.Empty;

System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();

//Make sure we generate an EXE, not a DLL
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;

CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, RadTextBox1.Text);

if (results.Errors.Count > 0)
{
    RadTextBox2.ForeColor = Color.Red;
    foreach (CompilerError CompErr in results.Errors)
    {
        RadTextBox2.Text = RadTextBox2.Text +
                    "Line number " + CompErr.Line +
                    ", Error Number: " + CompErr.ErrorNumber +
                    ", '" + CompErr.ErrorText + ";" +
                    Environment.NewLine + Environment.NewLine;
    }
}

else
{
    //Successful Compile
    RadTextBox2.ForeColor = Color.Blue;

    Guid guid =            Guid.NewGuid();

    string PathToExe = Server.MapPath(Path.Combine(@"\Compiled" , Output));

    FileStream fs = System.IO.File.Create(PathToExe);

    using (StreamWriter sw = new StreamWriter(fs))
    {
        sw.Write(RadTextBox1.Text);
    }

    Response.WriteFile(PathToExe);

当我运行此代码并编写Main方法(例如http://msdn.microsoft.com/en-us/library/ms228506(VS.80).aspx中的代码示例)时,我收到此错误:

行号0,错误号码:CS5001,'程序'c:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ Out.exe'不包含适用于入口点的静态'Main'方法; < / p>

上面的代码用作我网站上编译器的基础(尚未生效)。因此,您键入代码并生成.exe程序集。但是当我在代码编写的文本框中输入代码(Radtextbox1)时,即使使用main方法,我也会收到错误。

是什么给出了?

由于

1 个答案:

答案 0 :(得分:1)

入口点功能很特殊:您不能只将一个名为“main”的方法添加到程序集中。相反,您必须将CodeEntryPointMethod类型的实例添加到其中一个类中。

有关使用CodeEntryPointMethod的一些限制的详细信息,请参阅http://blogs.msdn.com/bclteam/archive/2005/10/01/475768.aspx