簡體   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