在我的项目中,我有两个签名相同的Main方法。一个是WinForm,另一个是控制台类。
如何将它们中的任何一个设置为入口点?
我在一个主方法之前声明了[STAThread]
以设置入口点,但它不起作用?
我正在使用Visual Studio Express 2010。
在我的项目中,我有两个签名相同的Main方法。一个是WinForm,另一个是控制台类。
如何将它们中的任何一个设置为入口点?
我在一个主方法之前声明了[STAThread]
以设置入口点,但它不起作用?
我正在使用Visual Studio Express 2010。
通过在解决方案资源管理器中右键单击项目并选择属性,进入项目属性。在第一个选项卡中,您将看到一个下拉列表,用于选择入口点。选择适当的主方法。
STAThread
不会设置入口点 - 它强制运行时使用单线程公寓来执行 Main 线程。正如 Josh 所说,您需要在项目属性中设置启动对象。如果在 VS Express 中没有显示,您可能需要强制显示高级生成属性:打开“工具”\“选项”,并在“项目和解决方案”中选中“显示高级生成配置”。请注意,您的应用程序必须是控制台应用程序或 WinForms 应用程序之一。它只能构建为一个(无论如何每个配置都是这样)。当您将其作为 WinForms 应用程序启动时,它会显示控制台,而当您将其作为控制台应用程序启动时,它将不会显示控制台。您考虑过将大部分逻辑放在类库中,然后创建两个包装器应用程序,一个是 WinForms,一个是控制台,它们只显示相关 UI,然后委托给类库吗?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:two
你也可以用这种方式,但我不知道如何设置哪个主方法将成为入口点
public static void Main(string args)
{
Console.WriteLine("this is second main method");
}
public static void Main(string[] args)
{
Program.Main("second main method");
}
你可以在一个程序中放置多个主方法,但只有一个主方法的程序会被编译,例如: 将此代码复制粘贴到编辑器中,并更改第一行中的名称“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
}
这个问题可以通过以下步骤轻松解决: 1. 打开解决方案 2. 将两个类分割成单独的类文件 3. 从主菜单栏中点击“项目”选项卡 4. 将光标移动到属性上 5. 选择您想要运行的所需类名作为“引用路径” 6. 编译项目,错误将被消除。
public static main
方法。你必须重新命名/删除第二个方法。