Больше, чем два основных метода в приложении Visual Studio? - PullRequest
19 голосов
/ 10 декабря 2010

В моем проекте у меня более двух основных методов с одинаковой подписью. Один - это winForm, а другой - класс консоли.

Как установить любой из них в качестве точки входа.

Я объявил [STAThread] перед одним основным методом установки точки входа, но он не работает?

Я использую Visual Studio Express 2010

Ответы [ 8 ]

33 голосов
/ 10 декабря 2010

Перейдите в свойства проекта, щелкнув правой кнопкой мыши проект в обозревателе решений и щелкнув свойства. На первой вкладке вы увидите раскрывающийся список для точки входа. Выберите подходящий основной метод.

8 голосов
/ 10 декабря 2010

STAThread не устанавливает точку входа - это заставляет среду выполнения использовать однопотоковую квартиру для потока, который выполняет Main.

Как говорит Джош, вам нужно установить объект запуска всвойства проекта.Если это не отображается в VS Express, может потребоваться заставить его отображать расширенные свойства сборки: откройте Инструменты \ Параметры и отметьте «Показать расширенную конфигурацию сборки» в «Проектах и ​​решениях».

Обратите внимание, что ваше приложение или должно быть консольным приложением или приложением WinForms.Он может быть построен только как один (для конфигурации, в любом случае).Вы либо получите консоль, отображающуюся при запуске в виде приложения WinForms, либо консоль, отображающуюся при запуске как консольное приложение.

Рассматривали ли вы возможность помещения основной массы логики в класс?библиотеки, а затем создать два приложения-оболочки - одну WinForms и одну консоль - которые просто отображают соответствующий пользовательский интерфейс и затем делегируют библиотеке классов?

4 голосов
/ 04 июля 2011

Если в программе есть два основных метода, компилятор получает ошибку, поэтому запустите программу c #, поместите основной класс и задайте

public Class one

{
public static void main()
{
System.console.writeline("One");
}

public Class two
{
public static void main()
{
System.console.writeline("Two");
}
}

запустить C # в консоли

CSC Multimain.cs / main: one

  • Выход Один

CSC Multimain.cs / main: два

  • Выход Два
1 голос
/ 26 февраля 2018

Вы можете разместить метод Main в каждом объявленном вами классе.Некоторые программисты используют это для создания небольшого тестового приложения в каждом объявленном ими классе.

Однако, если вы объявите более одного метода Main среди классов вашего проекта, вам нужно будет указать в IDE, какой из них вы хотели бы использовать в приложении точка входа .Для этого:

  1. Открыв проект в Visual Studio, выберите Проект> [Имя проекта] Свойства ... (где [Имя проекта] - этоназвание вашего проекта).
  2. Выберите класс, содержащий метод Main, который должен быть точкой входа, из списка Startup object .
0 голосов
/ 14 мая 2017

Эта проблема может быть легко решена с помощью шагов здесь 1. Откройте решение 2 разделить два класса на отдельные файлы классов 3. нажмите на вкладку «Проект» в главном меню 4. Переместите курсор к свойству 5. Выберите желаемое имя класса, который вы хотите запустить для "Reference Path" 6. Скомпилируйте проект, ошибка исчезнет.

0 голосов
/ 20 января 2015

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

 public static void Main(string args)
    {
        Console.WriteLine("this is second main method");
    }

   public static void Main(string[] args)
    {
        Program.Main("second main method");
   }
0 голосов
/ 05 марта 2014

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

#define Release 
using System;
class Program
{  
#if Release==true
    public static void Main(string[] args) //for enemy
    {     
        Console.WriteLine("go to  hell");
        Console.ReadLine();
    }


#elif Release==false
    static void Main(string[] args) //for friend
    {    

         Console.WriteLine("hello ");

        Console.ReadLine();
    }

#endif 
}
0 голосов
/ 10 декабря 2010

Я не думаю, что это будет работать. Он даже не скомпилирует и не будет жаловаться, что у проекта есть два основных метода. В проекте должен быть только один public static main метод. Вы должны переименовать / удалить второй.

Кстати, почему именно вы хотели бы оставить их обоих?

...