我知道,這個問題對許多人來說可能是一個常見的問題,但我很困惑。我在用c#閱讀.net。我經歷了許多文章和msdn。我的疑問是:已發佈的應用程序(windows窗體)是機器碼?
當我在VS中開發C#Windows窗體應用程序代碼並運行它時,請執行Project \ bin \ Debug \中具有擴展名「.exe」的文件是中間代碼還是機器代碼?當我發佈它時,我得到一個安裝程序的那一刻,它是一個機器代碼還是一箇中間代碼?因爲有時安裝程序需要安裝.net。
請幫我理解這個概念。
謝謝。
我知道,這個問題對許多人來說可能是一個常見的問題,但我很困惑。我在用c#閱讀.net。我經歷了許多文章和msdn。我的疑問是:已發佈的應用程序(windows窗體)是機器碼?
當我在VS中開發C#Windows窗體應用程序代碼並運行它時,請執行Project \ bin \ Debug \中具有擴展名「.exe」的文件是中間代碼還是機器代碼?當我發佈它時,我得到一個安裝程序的那一刻,它是一個機器代碼還是一箇中間代碼?因爲有時安裝程序需要安裝.net。
請幫我理解這個概念。
謝謝。
編譯的.exe文件包含MSIL
(微軟中間語言代碼),這裏是怎麼回事了(從here):
當我發佈它,那一刻我得到一個安裝程序,它是一個機器代碼或中間代碼?因爲有時安裝程序需要安裝.net。
在.NET .exe
總是MSIL
碼,安裝程序會爲您的應用程序的先決條件之前安裝.NET Framework。
它們都是MSIL
代碼,Project\bin\Debug
中的可執行文件與您在發佈應用程序時獲得的可執行文件相同,但它們與打開的調試符號鏈接。
簡體答案:
當我開發VS一個C#Windows窗體應用程序代碼並運行它,做項目\ BIN \調試\它的擴展名爲「.exe」的文件是一箇中間代碼或機器碼?
它的IL代碼將由.NET當您啓動.exe文件轉換爲二進制/機器碼
,當我發佈了,那一刻我得到一個安裝程序,它是一個機器代碼或中間代碼?因爲有時安裝程序需要安裝.net。
同樣的事情。發佈模式(您應該發佈)和調試模式之間的區別在於前者是優化的,而另一種是爲了使調試更容易。
所以當我雙擊發布的.exe代碼時,MSIL是由CLR執行的?我的意思是,當我給某人安裝程序時,他們應該使用CLR(.NET)來運行安裝程序? –
您需要運行應用程序的.NET,但安裝程序不需要.NET。您可以讓您的安裝程序包含.NET框架,以便與您的應用程序一起安裝。 – PVitt