在我的项目中,我有两个以上具有相同签名的Main方法。一个是winForm,另一个是Console类。
如何将其中任何一个设置为入口点。
我在一个主要方法之前宣布[STAThread]
设置入口点但是它不起作用?
我正在使用Visual Studio Express 2010
右键单击解决方案资源管理器中的项目,进入项目属性,然后单击属性。在第一个选项卡上,您将看到入口点的下拉列表。选择适当的主方法。
STAThread
没有设置入口点 - 它强制运行时为执行Main的线程使用单线程单元。
正如Josh所说,您需要在项目属性中设置启动对象。如果未在VS Express中显示,则可能需要强制它显示高级构建属性:打开Tools \ Options并选中Projects and Solutions中的“Show advanced build configuration”。
请注意,您的应用程序必须是控制台应用程序或WinForms应用程序。它只能构建为一个(每个配置,无论如何)。您最终会得到一个控制台,显示您何时启动是作为WinForms应用程序,还是没有控制台显示您何时启动它作为控制台应用程序。
您是否考虑将大量逻辑放在类库中,然后创建两个包装器应用程序 - 一个WinForms和一个控制台 - 它们只显示相关的UI然后委托给类库?
如果程序有两个主要方法编译器得到配置那么运行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:一个
CSC Multimain.cs / main:两个
您可以在声明的每个类中放置Main方法。一些程序员利用这一点在他们声明的每个类中构建一个小测试应用程序。
但是,如果在项目的类中声明多个Main方法,则需要向IDE指示您希望哪个是应用程序的入口点。为此:
您可以在单个程序中放置多个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
}
你也可以这样做,但我不知道如何设置哪个主要方法将是入口点
public static void Main(string args)
{
Console.WriteLine("this is second main method");
}
public static void Main(string[] args)
{
Program.Main("second main method");
}
此问题可以通过以下步骤轻松解决:1。打开解决方案2将两个类拆分为单独的类文件3.单击主菜单栏中的“项目”选项卡4.将光标移动到属性5.选择所需的类要为“参考路径”运行的名称.6。编译项目,错误将会消失。
我不认为这会奏效。它甚至不会编译和抱怨该项目有两个主要方法。项目中只能有一个public static main
方法。你必须重命名/删除第二个。
顺便说一句,你为什么要保留它们?