Ответ 1
Являются ли свойства в файле равными Компилировать?
Моя программа 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());
}
}
}
... и есть некоторые комментарии там. Других ошибок нет.
Справка
Являются ли свойства в файле равными Компилировать?
Я боролся с этой ошибкой только потому, что один из моих class library
проектов was set acceddentaly
был консольным приложением
поэтому убедитесь, что ваши проекты библиотеки классов являются библиотекой классов в типе Output
Оке, я тоже смотрел на эту проблему. И в моем случае решения были слишком легкими. Я добавил новый пустой проект в решение. Недавно добавленный проект автоматически устанавливается как консольное приложение. Но поскольку добавленный проект был "пустым" проектом, в этом новом проекте не было Program.cs. (Как и ожидалось)
Все, что мне нужно было сделать, это изменить тип вывода свойств проекта на библиотеку классов
Если у вас есть приложение WPF или Silverlight, убедитесь, что App.xaml имеет "ApplicationDefinition" как BuildAction для свойств файла.
Проверьте свойства вашего проекта. На вкладке "Приложение" выберите класс Program
в качестве объекта "Автозагрузка":
Это странно. Ваша программа скомпилирована и успешно запущена, и только "Ошибка публикации" или "сбой" при каждом компиляции теперь?
Кроме того, возможно, вы изменили свойства файла 'Build Action
на нечто, отличное от Compile
?
Для меня такая же ошибка произошла, потому что я переименовал пространство имен в классе программы.
В поле "Объект запуска" на вкладке "Приложение" проекта по-прежнему ссылаются на старое пространство имен. Выбор нового объекта запуска решил проблему, а также удалил устаревшую запись из этого списка.
Также вы можете обновить поле "По умолчанию пространства имен на той же вкладке" Приложение ".
Я обнаружил, что файл Program.cs не был частью решения. Я добавил существующий элемент и добавил файл (Program.cs) обратно к решению.
Это исправило ошибку: Ошибка 1 Программа "....." не содержит статический "Основной" метод, подходящий для точки входа
Важно, чтобы метод Main
помещался в класс, который правильно настроен в Visual Studio в качестве объекта запуска:
SimpleAIMLEditor.Program
из раскрывающегося списка для вашего объекта запускаТеперь запустите приложение снова. Ошибка исчезнет.
У меня была эта проблема, потому что я не использовал последнюю версию С# (С# 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>
Моя проблема в том, что я случайно задал аргументы для Main
static void Main (значение объекта)
благодаря моему инструменту рефакторинга. Принял пару минут, чтобы выяснить, но должен помочь кому-то по пути.
В моем случае (где не подходит ни одно из предложенных решений), проблема заключалась в том, что я использовал async/await
где сигнатура для метода main
выглядела так:
static async void Main(string[] args)
Я просто удалил async
чтобы main
метод выглядел так:
static void Main(string[] args)
Я также удалил все экземпляры await
и использовал .Result
для асинхронных вызовов, чтобы мое консольное приложение могло .Result
скомпилироваться.
Я имел эту ошибку и решил это решение.
--> Right click on the project
--> and select "Properties"
--> then set "Output Type" to "Class Library".