c# – 什么是应用程序控制台或Windows窗体应用程序?

[Visual Studio 2008]

我为控制台应用程序创建了一个新项目,并将其修改为:

class Program
{
    static void Main (string[] args) {
        Thread.Sleep (2000);
    }
}

然后我为Windows窗体应用程序创建了另一个项目并对其进行了修改:


static class Program
{
    //[STAThread] commented this line
    static void Main (string[] args) { //Added args
        //Commented following lines
        //Application.EnableVisualStyles ();
        //Application.SetCompatibleTextRenderingDefault (false);
        //Application.Run (new Form1 ()); commented this line
        Thread.Sleep (2000);
    }
}

现在我没有在第一个应用程序中编写控制台功能(Console.Write等),也没有在第二个应用程序中写入表单相关的操作.看起来和我一样

第一个应用程序显示BLACK窗口,第二个不显示任何内容.什么使它工作这样?

最佳答案
如果您检查exe文件使用ILDASM,您可以看到清单中有一个区别(寻找“子系统”).

在Winforms应用程序中:

.subsystem 0x0002       // WINDOWS_GUI

在控制台应用程序中:

.subsystem 0x0003       // WINDOWS_CUI

IL代码可能会有更多的区别.

当涉及到在两种情况下编译器发出不同的结果时,它由项目文件的OutputType值控制:

在Winforms应用程序中:

<OutputType>WinExe</OutputType>

在控制台应用程序中:

<OutputType>Exe</OutputType>

出于好奇,我还检查了一个类库项目的值:

<OutputType>Library</OutputType>

转载注明原文:c# – 什么是应用程序控制台或Windows窗体应用程序? - 代码日志