net編譯
『壹』 精品賞析:一個.NET程序在編譯和運行時都做了些什麼
run-time)和運行原理 (CPU-specific binary or pseudo-code)的疑問。 這里是一個簡單的回答:當你編譯一個C#應用程序或任何一種CLS(Commmon Language Specification)兼容的語言時,它將首先被編譯成一種稱為IL (Intermediate Language)的偽代碼(pseudo-code)。在這個應用程序第一次 被運行的時候,這種IL代碼將被編譯成機器代碼,用於執行。也就是說從源代碼 到得到運行結果,進行了兩次編譯。事實上,只有那些被真正使用的函數代碼 才會被進行第二次編譯。下面揭示開發過程中被隱藏起來的細節: 1) 你用C#開發一些程序 2) 用C#編譯器或CLS兼容的編譯器編譯成EXE 3) 編譯器將生成的IL代碼和附加信息(manifest)放入擁有一個標准PE頭的Win32 可執行文件的只讀部分。 4) 編譯器在創建這個可執行文件時導入(import)一個名為_CorExeMain的函數。 這個函數是.NET EE(execution engine)--.NET運行期引擎的入口函數。 5) 當執行這個Win32可執行文件時,因為其主要是依賴於DLL的PE文件,操作系 統將會調用位於MSCorEE.DLL中的_CorExeMain函數。 6) 操作系統通過PE文件里的進入點,調用MSCorEE.DLL。並能保證在Windows里 可以有很多程序同時運行。 7) 因為操作系統不能執行.NET IL代碼,EXE里的進入點只是簡單的中介,它將 指示操作系統調用_CorExeMain函數。 8) 隨後_CorExeMain函數開始解釋位於PE文件中的IL代碼。 9) 因為IL是不能被直接執行的, .NET EE使用稱為JITter (Just In Time compiler) 這一即時編譯過程只在第
『貳』 .NET源代碼執行前要經過兩次編譯,分別是哪兩次
第一次編譯使用.net Framework代碼時,把代碼編譯為MSIL(即微軟中間語言)這些代碼不專用於任何操作系統,它是獨立於機器,CPU和操作系統的.
第二次不同種類的編繹器,生成本地機器代碼
『叄』 .net是動態編譯還是靜態編譯該如何解決
------解決方案-------------------------------------------------------- 生成時不同的語言使用不同的編譯器進行一次編譯,成為IL代碼。 IL代碼通過JIT動態編譯成為機器語言。 ------解決方案-------------------------------------------------------- ------解決方案-------------------------------------------------------- visual c++.net可以/CLR ------解決方案-------------------------------------------------------- 可以有動態和靜態的說。 ------解決方案-------------------------------------------------------- 大致有兩種情形,動態和靜態: 1. 一般情況下是JIT (Just in time)。CLR在執行方法的時候會調用一個Stub,這個Stub如過函數沒有被Jit則指向JIT函數,執行則會被自動JIT,然後Patch返回地址,返回之後直接執行JIT之後的本地代碼,如果已經JIT,則指向JIT後的代碼 2. 如果Assembly已經被NGEN過,這種情況下方法的Stub直接指向NGEN之後的代碼,這個代碼已經被Prejit過,可以直接調用而無需JIT參與 ------解決方案--------------------------------------------------------
『肆』 簡述.net程序編譯執行機制
.NET執行機制其實同很多的編程語言有一些不同。一般的高級程序語言會直接將代碼編譯成為機器語言,之後由本地機執行這些高效的機器代碼從而實現編譯過程。而.NET中的編譯機制會在中間多一個環節,就是先將高級語言(如C#、VB)編譯成為中間語言(IL),這些中間語言是.NET框架中所有的語言編譯後的結果。這樣說吧,比如我用C#、VB語言編寫了兩個類,編譯之後的中間語言其實看起來是一樣的,這就顯示實現了.NET平台跨語言的這一事實。當然中間語言最終還是要編譯成為機器代碼以用於最終的本地機的運行。
『伍』 .net源碼如何編譯
你這個應該是CS程序,下載一個Visual Studio 2010 然後在項目里新建一個項目--windows窗體程序。 把你現在這個項目導入進去就可以了。 很簡單。 最後按下F5就可以編譯了
『陸』 如何使用 Visual Studio.Net 編譯和執行 C# 程序,步驟是
啟動 Visual Studio。
在菜單欄上,選擇 File -> New -> Project。
從模板中選擇 Visual C#,然後選擇 Windows。
選擇 Console Application。
為的項目制定一個名稱,然後點擊 OK 按鈕。
新項目會出現在解決方案資源管理器(Solution Explorer)中。
在代碼編輯器(Code Editor)中編寫代碼。
點擊 Run 按鈕或者按下 F5 鍵來運行程序。會出現一個命令提示符窗口(Command Prompt window),顯示 Hello World。
打開一個文本編輯器,添加上面提到的代碼。
保存文件為 helloworld.cs。
打開命令提示符工具,定位到文件所保存的目錄。
鍵入 csc helloworld.cs 並按下 enter 鍵來編譯代碼。
如果代碼沒有錯誤,命令提示符會進入下一行,並生成 helloworld.exe 可執行文件。
接下來,鍵入 helloworld 來執行程序。
將看到 "Hello World" 列印在屏幕上。
您也可以使用命令行代替 Visual Studio IDE 來編譯 C# 程序:
『柒』 簡述asp.net 的編譯過程
從技術上講,ASP.NET模塊分析ASPX文件的內容,並將文件內容分解成單獨的命令以建立代碼的整體結構。完成此工作後,ASP.NET模塊將各命令放置到預定義的類定義中(不需要放在一起,也不需要按編寫順序放置)。然後使用這個類定義一個特殊的ASP.NET對象Page。該對象要完成的任務之一就是生成HTML流,這些HTML流可以返回到IIS,再從IIS返回到客戶。簡言之,在用戶請求IIS伺服器提供一個頁面時,IIS伺服器就根據頁面上的文本、HTML和代碼(這對我們來說是最重要的)建立該頁面。
『捌』 怎麼用net編譯cs文件
操作如下:
打開命令窗口->輸入cmd到控制台->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322轉到vs.net安裝的該目錄下->執行csc命令csc /target:library File.cs->在該目錄下產生一個對應名字的.dll文件(前提:把.cs文件放到C:WINDOWSMicrosoft.NETFrameworkv1.1.4322目錄下)
csc命令的方式很多,請參考以下,
------------------------------------
譯 File.cs 以產生 File.exe:
csc File.cs
編譯 File.cs 以產生 File.dll:
csc /target:library File.cs
編譯 File.cs 並創建 My.exe:
csc /out:My.exe File.cs
通過使用優化和定義 DEBUG 符號,編譯當前目錄中所有的 C# 文件。輸出為 File2.exe:
csc /define:DEBUG /optimize /out:File2.exe *.cs
編譯當前目錄中所有的 C# 文件,以產生 File2.dll 的調試版本。不顯示任何徽標和警告:
csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs
將當前目錄中所有的 C# 文件編譯為 Something.xyz(一個 DLL):
csc /target:library /out:Something.xyz *.cs
編譯 File.cs 以產生 File.dll: csc /target:library File.cs這個就是我們使用最多的一個命令,其實可以簡單的寫成csc /t:library File.cs,另外的一個寫法是
csc /out:mycodebehind.dll /t:library mycodebehind.cs,這個可以自己指定輸出的文件名。
csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,這個的作用是把兩個cs文件裝到一個.dll文件里。。。
『玖』 c# .net 怎麼編譯
使用Visual Studio創建一個Web ASP.net項目,把這些文件添加進項目,然後編譯即可。
編譯出的dll在Bin目錄下。
『拾』 在.NET中,程序編譯過程
.NET平台中代碼的物理單元是可移植可執行程序(protableexecutable,PE)格式,編譯程序和庫時,和平常一樣生成EXE與DLL文件,但在.NET框架下,任何可執行程序項目都鏈接到公共語言運行庫,並由它代理編譯和執行。
.NET中程序編譯的最主要部分是匯編(assembly),匯編包括一個manifest,它是一組元數據,標識匯編向其他應用程序提供的文件和類型;manifest還可以包含強名稱(strongname)、組合匯編名、版本信息和可選文化信息。在使用強名稱的匯編中,元數據包含一個公用密鑰簽名,公共語言運行庫用其驗證匯編自編譯之後是否發生改變。
匯編還可以包括數字簽名,例如用驗證碼(authenticodecertificate)驗證代碼源,以解決在公共語言運行庫保證匯編簽名的真實性問題。
匯編分為專用匯編和共享匯編。專用匯編只在安裝這個匯編的應用程序中使用,而共享匯編則安裝在全局匯編緩沖區(globalassemblycache,GAC)中,全局匯編緩沖區用匯編的引用計數和版本信息管理庫,包括框架的基類庫(baseclasslibrary,BCL),並通過公共語言運行庫避免因庫的版本沖突而形成DLLHell的情形。
選擇專用匯編和共享匯編是一個重要決策。將匯編安裝到全局緩沖區後,就可以在多個應用程序中使用匯編的一個備份,但是還需要用WindowsInstaller之類的安裝程序將應用程序安裝到計算機上。如果使用專用匯編,則得到Microsoft所謂的"XCOPY部署",這樣用戶可以將應用程序復制到目標計算機上,方便地進行安裝。
.NET程序編譯過程如圖1.2所示。