Сегодня я начал организовывать свой код в отдельные файлы .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), я получаю следующее сообщение об ошибке:
Не содержит статического 'основного' метода, подходящего для точки входа
Я просмотрел свойства приложения в объекте Application-> Startup, но он не предлагает мне никаких вариантов. Как я могу сообщить приложению, чтобы оно начало с файла .cs, в котором есть мой InitializeComponent (); команда?
- Я так долго оглядывался, но не нашел решения.
- Для свойств каждого файла .cs задано значение «Компилировать».
- Я не вижу файла App.xaml в моем обозревателе решений, но я вижу файл app.config.
Я все еще новичок, и это моя первая попытка организовать метод с помощью кода C #.
источник
main
с правильной подписью. Вот как компилятор знает, как запустить вашу программу.[STAThread] static void Main(string[] args) { Application.Run(new shell()); }
Ответы:
Я тоже рассматривал эту проблему, и в моем случае решение было слишком простым. Я добавил в решение новый пустой проект. Вновь добавленный проект автоматически устанавливается как консольное приложение. Но поскольку добавленный проект был «пустым», в этом новом проекте не было Program.cs. (Как и ожидалось)
Все, что мне нужно было сделать, это изменить тип вывода свойств проекта на библиотеку классов.
источник
static void main()
), чтобы определить, где начать выполнение кода; библиотеки классов этого не делают - они вызываются другими библиотеками, которые уже выполняются.main
в двух моих других проектах консольное приложение, такое же, как проект StartUp. Изменение этих двух «вспомогательных» проектов на « Библиотеку классов» на экране «Свойства» немедленно исправило проблему.Измените Тип вывода в разделе «Проект»> «Свойства» на «Библиотеку классов». По умолчанию для этого параметра могло быть установлено «Консольное приложение».
источник
Попробуйте добавить этот метод в класс и посмотрите, по-прежнему ли вы получаете ошибку:
[STAThread] static void Main() { }
источник
У меня была эта ошибка, и я решил ее с помощью этого решения.
источник
Если у вас нет файла с именем
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()); } } }
источник
источник
Если у вас есть метод Main, но по-прежнему возникает эта ошибка, убедитесь, что для файла, содержащего метод Main, для параметра «Действие сборки» установлено значение «Скомпилировать», а для параметра «Копировать в выходной каталог» установлено значение «Не копировать».
источник
Отредактируйте файл .csproj
<OutputType>Library</OutputType>
ура!
источник
Library
(с большой буквыL
)Для меня ошибка на самом деле была вызвана тем, что «функция 'async main' недоступна в C # 7.0. Используйте версию языка 7.1 или выше». Эта проблема приводила к появлению сообщения «Не содержит статического« основного »метода, подходящего для точки входа» в списке ошибок, но в окне вывода отображалась ошибка «недоступно». Чтобы исправить это, я изменил языковую версию с «Последняя дополнительная версия C # (по умолчанию)» на «Последняя дополнительная версия C # (последняя)» в разделе «Дополнительные параметры сборки».
источник
эй, у меня такая же ошибка, и решение этой ошибки - просто написать заглавную M вместо маленького m .. например: - static void Main () Я надеюсь, что это поможет ..
источник
Была ли эта проблема в VS 2017, вызванная:
статический асинхронная задача Main (строка [] аргументы)
( Функция async main недоступна в C # 7.0. Используйте версию 7.1 или выше )
Добавление
<LangVersion>latest</LangVersion>
app.csproj помогло.
источник
Похоже, что проект Windows Forms пытается использовать стартовую форму, но по какой-то причине свойства проекта настроены на запуск как Main.
Если вы включили платформу приложения, возможно, вы не увидите, что Main активен (это недопустимая конфигурация).
источник
Салам, у меня есть и то,
Visual Studio 2017
и другоеVisual Studio 2019
Visual Studio 2019 не показывает эту ошибку, но 2017 показывает. Попробуйте установить Visual Studio 2019.
Visual Studio 2017
Visual Studio 2019
источник
Если вы хотите разрешить указывать параметры в команде, они должны выглядеть так:
[STAThread] static void Main(params string[] paramaters) {
вы не можете указать более одного параметра, иначе это также вызовет ошибку, указанную выше.
источник
Для некоторых, приезжающих сюда:
В моем случае я скопировал .csproj из демонстрационного проекта, который был включен
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
без включения файла Program.cs. Исправление заключалось в том, чтобы либо удалить EnableDefaultCompileItems, либо явно включить Program.cs в компиляцию.источник
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"); } } }
источник
Если вы используете проект библиотеки классов, установите «Библиотека классов» в качестве типа вывода в свойствах в разделе приложения проекта.
источник
После размещения вышеуказанного кода в Program.cs выполните следующие действия:
Щелкните правой кнопкой мыши проект
Выберите "Свойства"
Установите "Тип вывода" на "Приложение Windows"
Объект запуска: namepace.Program
источник
Если у вас действительно есть общедоступный статический метод main, это могут быть настройки вашей сборки, как описано в этом вопросе: Устранение неполадок «программа не содержит статический метод Main», когда он явно содержит ...?
источник
Я тоже столкнулся с этой проблемой. Затем я понял, что выбираю консольное приложение (пакет), а не консольное приложение.
источник
Я использую Visual Studio, и у меня тоже была эта проблема. Это заняло у меня некоторое время, но в моей программе это было вызвано тем, что я случайно удалил класс с именем «Программа», который создается автоматически.
источник
Для будущих читателей, которые столкнулись с той же проблемой с приложением Windows Forms, одним из решений является добавление этих строк в ваш основной / стартовый класс формы:
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MyMainForm()); }
Затем перейдите в свойства проекта> Приложение> раскрывающийся список Startup Object, вы должны увидеть пространство имен MyMainForm, выбрать его, очистить и построить решение. И это должно работать.
источник
Проверьте, установлен ли проект как «Начальный проект».
Щелкните правой кнопкой мыши проект и выберите в меню «Установить как запускаемый проект».
источник
Если вы похожи на меня, то вы могли начать с библиотеки классов, а затем переключили ее на консольное приложение. Если да, измените это ...
namespace ClassLibrary1 { public class Class1 { } }
К этому...
namespace ConsoleApp1 { class Program { static void Main(string[] args) { } } }
источник
Допустимая запись выглядит так:
public static class ConsoleProgram { [STAThread] static void Main() { Console.WriteLine("Got here"); Console.ReadLine(); } }
У меня были проблемы при написании веб-приложения, но из-за ужасного времени загрузки я хотел быстро преобразовать тот же проект в консольное приложение и выполнить быстрые тесты методов, не загружая все решение.
Моя точка входа была помещена в /App_Code/Main.cs, и мне пришлось сделать следующее:
После этого я могу установить вывод (как упоминалось в шаге 1) в Библиотеку классов, чтобы запустить веб-сайт, или Консольное приложение, чтобы войти в режим консоли.
Почему я сделал это вместо двух отдельных проектов?
Просто потому, что у меня были ссылки на Entity Framework и другие конкретные ссылки, которые создавали проблемы с запуском двух отдельных проектов.
Для более простых решений я бы по-прежнему рекомендовал два отдельных проекта, так как вывод консоли - это в основном тестовый код, и вы, вероятно, не хотите рисковать, выходя из рабочего кода.
источник
Возможно, непреднамеренно, но перемещение моего файла докеров в папку решения вместо проекта устранило ошибку. Это было полезно, когда я все еще хотел запустить решение независимо от докера.
источник