Подтвердить что ты не робот

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

Сегодня я начал организовывать свой код в отдельные файлы .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.

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

4b9b3361

Ответ 1

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

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

Ответ 2

Измените тип вывода в Project > Properties на свойства "Class Library". По умолчанию этот параметр может быть установлен в "Консольное приложение".

Ответ 3

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

[STAThread]
static void Main()
{
}

Ответ 4

Если у вас нет файла с именем 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());
         }
     }

 }

Ответ 5

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

Ответ 6

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

Ответ 7

Я имел эту ошибку и решил это решение.

--> Right click on the project

--> and select "Properties"

--> then set "Output Type" to "Class Library".

Ответ 8

  • Выберите App.xaml и покажите его свойства. Установите Действие сборки на ApplicationDefinition.
  • App.xaml и соответствующий файл *.cs должны быть помещены в корневой каталог файла *.csproj, т.е. е. а не в папку "Источник".

Ответ 9

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

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

Ответ 10

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

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

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

Ответ 11

Для некоторых других, приезжающих сюда:

В моем случае я скопировал .csproj из примера проекта, который включал <EnableDefaultCompileItems>false</EnableDefaultCompileItems> без включения файла Program.cs. Исправлено было либо удалить EnableDefaultCompileItems, либо явно включить Program.cs в компиляцию

Ответ 12

hellow ваш основной класс был удален, поэтому добавьте новый класс с именем, установленным как Main.cs, и добавьте этот код в код, или, если проблема в окне, та же проблема

using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;

namespace your_PKG_name.iOS
{
       public class Application
        {
            // This is the main entry point of the application.
            static void Main(string[] args)
            {
                // if you want to use a different Application Delegate class from "AppDelegate"
                // you can specify it here.
                UIApplication.Main(args, null, "AppDelegate");

            }
        }
}

Ответ 13

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

Ответ 15

Я тоже столкнулся с этой проблемой. Затем я понял, что я выбираю консольное приложение (пакет), а не консольное приложение.

Ответ 16

Я использую Visual Studio, а также эту проблему. Мне потребовалось некоторое время, но в моей программе это было вызвано тем, что я случайно удалил класс с именем "Программа", который генерируется автоматически.

Ответ 17

Для будущих читателей, которые столкнулись с одной и той же проблемой с Windows Forms Application, одним из решений является добавление этих строк в ваш основной/начальный класс формы:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyMainForm());
    }

Затем перейдите к свойствам проектa > Приложение > Выпадающий список запуска, вы увидите пространство имен. MyMainForm, выберите его, очистите и постройте решение. И он должен работать.

Ответ 18

Проверьте, установлен ли проект как "Startup Project"

Щелкните правой кнопкой мыши по проекту и выберите в меню пункт "Установить как проект запуска".

Ответ 19

Если вы похожи на меня, то, возможно, вы начали с библиотеки классов, а затем переключились на консольное приложение. Если так, измените это...

namespace ClassLibrary1
{
    public class Class1
    {
    }
}

К этому...

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Ответ 20

Действительная запись выглядит так:

public static class ConsoleProgram
    {
        [STAThread]
        static void Main()
        {
            Console.WriteLine("Got here");
            Console.ReadLine();
        }
    }

У меня были проблемы при написании веб-приложения, но в течение ужасного времени загрузки я хотел быстро преобразовать тот же проект в консольное приложение и выполнить быстрые тесты методов без загрузки всего решения.

Моя точка входа была помещена в /App_Code/Main.cs, и мне пришлось сделать следующее:

  1. Задать проект → Свойства → Приложение → Тип вывода = Консольное приложение
  2. Создайте /App_Code/Main.cs
  3. Добавьте приведенный выше код (и ссылки на методы в моем проекте)
  4. Щелкните правой кнопкой мыши файл Main.cs → Свойства → Создать действие = Компилировать.

После этого я могу установить выходные данные (как указано в шаге 1) для библиотеки классов, чтобы запустить веб-сайт, или для консольного приложения, чтобы войти в режим консоли.

Почему я сделал это вместо 2 отдельных проектов?

Просто потому, что у меня были ссылки на Entity Framework и другие конкретные ссылки, которые создавали проблемы при запуске 2 отдельных проектов.

Для более простых решений я по-прежнему рекомендую 2 отдельных проекта, поскольку вывод консоли представляет собой в основном тестовый код, и вы, вероятно, не захотите рисковать этим в производственном коде.

Ответ 21

Салам, у меня есть и Visual Studio 2017 и Visual Studio 2019

Visual Studio 2019 не показывает эту ошибку, но 2017 показывает. Попробуйте установить Visual Studio 2019.


Visual Studio 2017

Visual Studio 2017


Visual Studio 2019

Visual Studio 2019

Ответ 22

Для меня ошибка на самом деле была вызвана тем, что "функция" async main "недоступна в С# 7.0. Пожалуйста, используйте языковую версию 7.1 или выше". Эта проблема приводила к появлению сообщения "Не содержит статический метод main, подходящий для точки входа" в списке ошибок, но в окне "Вывод" отображалась ошибка "недоступно". Чтобы исправить это, я изменил языковую версию с 'С# последняя минорная версия (по умолчанию)' на 'С# последняя минорная версия (последняя)' в разделе Advanced Build Settings.

Ответ 23

Простое решение.

1.BUILD → ЧИСТЫЙ ПРОЕКТ-ИМЯ (он очистит ваш предыдущий не завершенный сбор "он похож на обновление" )

2.BUILD → BUILD PROJECT-NAME.

тогда вы можете просто запустить свой Script, он будет работать.  Пожалуйста, найдите Приложение!