Устранение неполадок "не содержит статический" Основной "метод," когда он явно делает...?

Моя программа MS Visual С# была скомпилирована и работает очень хорошо. Я закрываю MS Visual С#, чтобы уйти и сделать другие вещи в жизни.

Я снова открываю его и (прежде чем что-либо делать) перейдите в "Опубликовать" мою программу и получите следующее сообщение об ошибке:

Программа C:\myprogram.exe не содержит статический метод "Главная", подходящий для точки входа

А? Да, это так... и все это работало 15 минут назад. Конечно, я могу поверить, что я случайно что-то ударил или что-то сделал, прежде чем я его закрыл... но что? Как устранить эту проблему?

Мой файл Program.cs выглядит следующим образом:

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

namespace SimpleAIMLEditor
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new mainSAEForm());
        }
    }
}

... и есть некоторые комментарии там. Других ошибок нет.

Справка

Ответ 1

Являются ли свойства в файле равными Компилировать?

Ответ 2

Я боролся с этой ошибкой только потому, что один из моих class library проектов was set acceddentaly был консольным приложением

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

введите описание изображения здесь

Ответ 3

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

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

Ответ 4

Если у вас есть приложение WPF или Silverlight, убедитесь, что App.xaml имеет "ApplicationDefinition" как BuildAction для свойств файла.

Ответ 5

Проверьте свойства вашего проекта. На вкладке "Приложение" выберите класс Program в качестве объекта "Автозагрузка":

alt text

Ответ 6

Это странно. Ваша программа скомпилирована и успешно запущена, и только "Ошибка публикации" или "сбой" при каждом компиляции теперь?

Кроме того, возможно, вы изменили свойства файла 'Build Action на нечто, отличное от Compile?

Ответ 7

Для меня такая же ошибка произошла, потому что я переименовал пространство имен в классе программы.
В поле "Объект запуска" на вкладке "Приложение" проекта по-прежнему ссылаются на старое пространство имен. Выбор нового объекта запуска решил проблему, а также удалил устаревшую запись из этого списка.
Также вы можете обновить поле "По умолчанию пространства имен на той же вкладке" Приложение ".

Ответ 8

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

Это исправило ошибку: Ошибка 1 Программа "....." не содержит статический "Основной" метод, подходящий для точки входа

Ответ 9

Важно, чтобы метод Main помещался в класс, который правильно настроен в Visual Studio в качестве объекта запуска:

  • Щелкните правой кнопкой мыши ваш проект в проводнике проекта; выберите "Свойства..."
  • В диалоговом окне свойств выберите вкладку "Приложение"
  • На вкладке приложения выберите SimpleAIMLEditor.Program из раскрывающегося списка для вашего объекта запуска

Теперь запустите приложение снова. Ошибка исчезнет.

Ответ 10

У меня была эта проблема, потому что я не использовал последнюю версию С# (С# 7.3 на момент написания этой статьи), и мне пришлось изменить приведенный ниже модификатор internal доступа на public.

internal class Program
 {
    public static void Main(string[] args)
    {
        //My Code
    }
  }

или внесите изменения в .csproj чтобы использовать последнюю версию С# (этот способ означал, что я мог бы сохранить вышеупомянутый класс как internal):

<PropertyGroup>
    <LangVersion>latest</LangVersion>
    <NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>

Ответ 11

Моя проблема в том, что я случайно задал аргументы для Main

static void Main (значение объекта)

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

Ответ 12

В моем случае (где не подходит ни одно из предложенных решений), проблема заключалась в том, что я использовал async/await где сигнатура для метода main выглядела так:

static async void Main(string[] args)

Я просто удалил async чтобы main метод выглядел так:

static void Main(string[] args)

Я также удалил все экземпляры await и использовал .Result для асинхронных вызовов, чтобы мое консольное приложение могло .Result скомпилироваться.

Ответ 13

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

--> Right click on the project

--> and select "Properties"

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