Visual Studio应用程序中的两个主要方法?

时间:2010-12-10 05:39:56

标签: c# visual-studio-2008 visual-studio-2010

在我的项目中,我有两个以上具有相同签名的Main方法。一个是winForm,另一个是Console类。

如何将其中任何一个设置为入口点。

我在设置入口点的一个主要方法之前声明[STAThread]但是它不起作用?

我正在使用Visual Studio express 2010

7 个答案:

答案 0 :(得分:33)

右键单击解决方案资源管理器中的项目,进入项目属性,然后单击属性。在第一个选项卡上,您将看到入口点的下拉列表。选择适当的主要方法。

答案 1 :(得分:8)

STAThread没有设置入口点 - 它强制运行时为执行Main的线程使用Single-Threaded Apartment。

正如Josh所说,您需要在项目属性中设置启动对象。如果未在VS Express中显示,则可能需要强制它显示高级构建属性:打开Tools \ Options并选中Projects and Solutions中的“Show advanced build configuration”。

请注意,您的应用 必须是控制台应用一个WinForms应用。它只能构建为一个(每个配置,无论如何)。你最终会得到一个控制台,显示你何时启动是作为一个WinForms应用程序,或者没有控制台显示你何时启动它作为控制台应用程序。

您是否考虑过将大部分逻辑放在类库中,然后创建两个包装器应用程序 - 一个WinForms和一个控制台 - 只显示相关的UI然后委托给类库?

答案 2 :(得分:4)

如果程序有两个主要的方法编译器得到配置那么运行c#program put main class give

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:一个

  • 输出 一个

CSC Multimain.cs / main:两个

  • 输出 两个

答案 3 :(得分:0)

您可以在单个程序中放置多个main方法,但是一次编译带有一个main方法的程序,例如: 复制在编辑器中粘贴此代码并在第一行更改名称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 
}

答案 4 :(得分:0)

你也可以这样做,但我不知道如何设置哪个主要方法将是入口点

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

   public static void Main(string[] args)
    {
        Program.Main("second main method");
   }

答案 5 :(得分:0)

这个问题可以通过这里的步骤轻松解决 1.打开解决方案 2将这两个类拆分为单独的类文件 3.点击"项目"主菜单栏中的选项卡 4.将光标移动到属性 5.选择您想要运行的所需类名"参考路径" 6.编译项目,错误将会消失。

答案 6 :(得分:-1)

我不认为这会奏效。它甚至不会编译和抱怨该项目有两个主要方法。项目中只能有一个public static main方法。你必须重命名/删除第二个。

顺便说一下你为什么要保留它们?