在我的项目中,我有两个以上具有相同签名的Main方法。一个是winForm,另一个是Console类。
如何将其中任何一个设置为入口点。
我在设置入口点的一个主要方法之前声明[STAThread]
但是它不起作用?
我正在使用Visual Studio express 2010
答案 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
方法。你必须重命名/删除第二个。
顺便说一下你为什么要保留它们?