繁体   English   中英

什么运行我的C#应用​​程序?

[英]What runs my C# application?

在Visual Studio中开发C#项目时,我有三个输出类型选项。 控制台应用程序,Windows应用程序和类库。 AFAIK是DLL和EXE之间的唯一区别,EXE应该定义一个入口点,并在双击文件时调用它。 但是,当我启动从Console Application构建的EXE时,会创建一个控制台窗口。 显然,除了CLR启动然后调用我的Main方法之外,还会发生一些事情。 什么启动控制台窗口? 当我启动从Windows应用程序构建的EXE时,还运行其他一些代码,还是仅仅是我的主要方法?

您的可移植可执行文件(exe)将包含有关它是什么类型的应用程序的信息。

IMAGE_OPTIONAL_HEADER的 Subsystem标志定义了构建应用程序的用户界面类型。

IMAGE_SUBSYSTEM_WINDOWS_CUI定义控制台应用程序, IMAGE_SUBSYSTEM_WINDOWS_GUI定义Windows应用程序等。

有关更多信息PE内部对等:Win32可移植可执行文件格式之旅

输出类型是项目的配置参数,它告诉Visual Studio编译时要执行的操作。 如果设置为Console Application,它将生成一个exe文件,其中包含启动控制台窗口的代码。

dll和exe之间的差异不仅仅是主要方法。 Visual Studio在exe文件中生成了附加代码,用于创建控制台并调用main方法。 有关exe文件如何执行此操作的详细信息,请参阅http://en.wikipedia.org/wiki/Portable_Executable

在这个链接中,调查官添加了一些提到博客文章(第二个链接)的注释。 是否可以构建一个双击时不显示控制台窗口的控制台应用程序?

http://blogs.msdn.com/b/oldnewthing/archive/2009/01/01/9259142.aspx

与Siram的答案https://stackoverflow.com/a/30084790/2005526相同的内容,但为了帮助您进行未来的搜索,这些是谷歌用于查找上述资源的关键字。 “双击exe启动控制台”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM