Error "Does not contain a static "Main" Method suitable for an entry point [duplicate]

StackOverflow https://stackoverflow.com/questions/17095451

  •  31-05-2022
  •  | 
  •  

Question

I got this Error when I try to compile a sourcecode with CodeDom

Does not contain a static "Main" Method suitable for an entry point!

I already googled it and read other answers here, but I dont know how to fix it.

Can someone please help me? Here is my source code : http://picz.to/image/ao5n

    ^        private void button2_Click(object sender, EventArgs e)
    {
        SaveFileDialog d = new SaveFileDialog();
        d.Filter = "Executable (*.exe)|*.exe";
        if (d.ShowDialog() == DialogResult.OK)
        {
            string source = Properties.Resources.source;
            CompilerParameters param = new CompilerParameters();
            param.CompilerOptions += "/target:winexe" + " " + "/win32icon:" + "\"" + textBox1.Text + "\"";
            param.GenerateExecutable = true;
            param.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            param.ReferencedAssemblies.Add("System.dll");
            param.OutputAssembly = d.FileName;

            StringBuilder Temp = new StringBuilder();
            String InputCode = String.Empty;
            InputCode = "MessageBox.Show((1 + 2 + 3).ToString());";
            Temp.AppendLine(@"using System;");
            Temp.AppendLine(@"using System.Windows.Forms;");
            Temp.AppendLine(@"namespace RunTimeCompiler{");
            Temp.AppendLine(@"static void Main(string[] args){");

            Temp.AppendLine(@"public class Test{");
            Temp.AppendLine(@"public void Ergebnis(){");

            Temp.AppendLine(InputCode);
            Temp.AppendLine(@"}}}}");
            CompilerResults result = new CSharpCodeProvider().CompileAssemblyFromSource(param, Temp.ToString());
            if (result.Errors.Count > 0) foreach (CompilerError err in result.Errors) MessageBox.Show(err.ToString());
            else MessageBox.Show("Done.");
        }
    }
Was it helpful?

Solution

All C# programs need to contain the Main() method. Essentially this is where the program starts. The code you posted is just a small part of the entire application. You must have removed the location where main had been residing.

MSDN Article on Main

Updated for comments:

A new Windows Form App has a Program class that instantiates the form that you want.

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
     }

Try copying that over to a new file called program.cs. Make sure that Form1 now points to the form you created in the applications.

OTHER TIPS

Paste this into your class -- if you still get an error, you need to paste the entire class in question, not just a screen capture of the event handler for a button click.

static void Main(string[] args)
{
  //do nothing
}

The code you've posted is the click event for a button. A button is usually on a form, and the form must be initialized. If you create a Windows Forms Application it will create a file Program.cs that contains a Main method that starts your form.

When you start a program, the computer needs to know where to actually start running code, that's what the Main() method is for. It is required to run, and that's the error you are receiving.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top