Не содержит статический метод main, подходящий для точки входа - PullRequest
59 голосов
/ 07 марта 2012

Я начал организовывать свой код на сегодняшний день в отдельные файлы .cs, и чтобы методы, работающие с пользовательским интерфейсом, продолжали делать это, я создал бы код .cs под тем же пространством имен и открытым частичным именем класса, чтобы методы могут быть совместимы.

Мой заголовок выглядит так в четырех файлах, включая мой основной файл, который вызывает:

public shell()
{
InitializeComponent(); 
}

Область заголовка файлов .cs, которые работают с пользовательским интерфейсом (и, похоже, вызывают этот новый конфликт):

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Data.SqlServerCe;
using System.Diagnostics;
using System.Threading;
using System.Collections.Specialized;
using System.Net;
using System.Runtime.InteropServices;
using watin = WatiN.Core;
using WatiN.Core.Native.InternetExplorer;
using System.Web; 


namespace WindowsFormsApplication1
{

    public partial class shell : Form
    {

Теперь, когда я пытаюсь отладить / просмотреть мое приложение (кстати, это приложение для Windows в Visual Studio 2010 Express), я получаю следующее сообщение об ошибке:

Не содержит статического метода main, подходящего для точки входа

Я посмотрел в свойствах приложения в Application-> Startup object, но он не предлагает мне никаких опций. Как я могу сообщить приложению начинаться с файла .cs, в котором есть мой InitializeComponent (); команда?

  • До сих пор я смотрел без решения.
  • Свойства каждого файла .cs установлены на «Компиляция».
  • Я не вижу файл App.xaml в моем обозревателе решений, но вижу файл app.config.

Я все еще очень новичок, и это моя первая попытка организации метода с кодом C #.

Ответы [ 22 ]

102 голосов
/ 06 июня 2012

Я тоже смотрел на эту проблему, и в моем случае решение было слишком простым.Я добавил новый пустой проект в решение.Недавно добавленный проект автоматически устанавливается как консольное приложение.Но поскольку добавленный проект был «пустым», в этом новом проекте не было никакого Program.cs.(Как и ожидалось)

Все, что мне нужно было сделать, это изменить тип вывода свойств проекта на библиотеку классов

61 голосов
/ 06 августа 2014

Измените тип вывода в Project> Properties на тип «библиотеки классов».По умолчанию для этого параметра установлено значение «Консольное приложение».

15 голосов
/ 06 июня 2012

Попробуйте добавить этот метод в класс и посмотрите, все равно ли появляется сообщение об ошибке:

[STAThread]
static void Main()
{
}
11 голосов
/ 14 мая 2013

Если у вас нет файла с именем Program.cs, просто добавьте новый класс и назовите его Program.cs.

Затем вставьте этот код:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;

 namespace Sales {
     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());
         }
     }

 }
6 голосов
/ 05 ноября 2014

Если у вас есть метод Main, но вы все равно получаете эту ошибку, убедитесь, что для файла, содержащего метод Main, для параметра «Build action» установлено значение «Compile», а для «Copy to output directory» установлено значение «Do not copy».

4 голосов
/ 30 декабря 2012

эй, я получил ту же ошибку, и решением этой ошибки является просто написать заглавную М вместо маленькой м .. например: - static void Main () Я надеюсь, что это помогает ..

3 голосов
/ 21 июня 2016
  1. Выберите App.xaml и отобразите его свойства.Установите Действие сборки на ApplicationDefinition .
  2. App.xaml и соответствующий ему файл * .cs должны быть помещены в корневой каталог файла * .csproj, т.е. нев папку «Исходный код».
2 голосов
/ 07 марта 2012

Похоже на проект Windows Forms, который пытается использовать форму запуска, но по какой-то причине в свойствах проекта установлено значение «Запуск».

Если вы включили каркас приложения, вы можете не увидетьэтот Main активен (это неверная конфигурация).

1 голос
/ 28 февраля 2019

Если вы используете проект библиотеки классов, задайте Class Library в качестве типа вывода в свойствах в разделе приложения проекта.

1 голос
/ 20 июня 2017

Если вы хотите разрешить указывать параметры в команде, они должны выглядеть следующим образом:

 [STAThread]
 static void Main(params string[] paramaters)
 {

вы не можете указать более одного параметра, в противном случае это также приведет к сообщенной выше ошибке.1004 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...