<p><b>.NET Framework</b>是由微軟開發，一個致力於敏捷軟體開發（agile software development）、快速應用開發（rapid application development）、平臺獨立性和網路透明化的軟體框架。.NET是微軟為2000年代對伺服器和桌上型軟體工程邁出的第一步。.NET包含許多有助於網際網路和內部網套用迅捷發的技術。
</p><p>.NET Framework是微軟公司繼Windows DNA之後的新發平台，採用系統虛擬機器運行，以通用語言運行庫（Common Language Runtime）為基礎，支援多種語言（C#、F#、VB.NET、C++、Python等）的發。
</p><p>.NET也為應用程式介面（API）提供了新功能和發工具。這些革新使得程式設計員可以同時進行Windows應用軟體和網路應用軟體以及元件和服務（web服務）的開發。.NET提供了一個新的反射性的且物件導向程式設計編程介面。.NET設計得足夠通用化從而使許多不同高階語言都得以被匯集。
</p><p>甲骨文公司的Java程式語言和Java平台企業版技術是.NET平台的競爭對手之一。
</p><p>2014年11月12日，微軟宣布完全開放.NET Framework的原始碼，並提供給Linux和macOS使用。</p>


<h2><span id=".E7.89.88.E6.9C.AC"></span><span id="版本">版本</span></h2>

<h2><span id=".E7.99.BC.E8.A1.8C.E6.AD.B7.E5.8F.B2"></span><span id="發行歷史">發行歷史</span></h2>

<h3><span id=".NET_Framework_1.0">.NET Framework 1.0</span></h3>
<p>完整版號 - 1.0.3705
</p><p>這是最早的.NET架構，於2002年發行。它可以以一個獨立且可重新分發的包的形式或在一個軟體發展工具包集中被獲得。它也是第一個微軟Visual Studio .NET的發行版的一部份（也被稱作Visual Studio .NET 2002）。
</p>
<h3><span id=".NET_Framework_1.1">.NET Framework 1.1</span></h3>
<p>完整版號 - 1.1.4322
</p><p>這是首個主要的.NET Framework升級版本，發行於2003年。它可以以一個獨立的可重新分發的包的形式或在一個軟體發展工具包集中被獲得。它也是第二個微軟Visual Studio .NET版本的一部份（也被稱作Visual Studio .NET 2003）。它也是首個被Windows作業系統-Windows Server 2003所內建的.NET Framework版本。
</p><p>自1.0版本以來的改進：
</p>
<ul><li>內建了對mobile ASP.NET控制項的支援。這在1.0版本是以附加功能方式實現的，現在已經整合到框架的內部。</li>
<li>安全方面的變更 - 使得Windows表單代碼以可靠的行為執行，從而可以在Internet環境內安全運行，並且加入了ASP.NET應用程式的代碼安全存取功能。</li>
<li>內建了對ODBC和Oracle資料庫的支援。這在1.0版本是以附加功能方式實現的，現在已經整合到框架的內部。</li>
<li>.NET Compact Framework- 這是一個用於智慧型裝置（例如Pocket PC或者SmartPhone）的.NET Framework的子集。</li>
<li>對IPv6的支援。</li>
<li>大量的API變更。</li></ul><h3><span id=".NET_Framework_2.0">.NET Framework 2.0</span></h3>
<p>完整版號 - 2.0.50727.42，發行於2005年10月27日。
</p><p>.NET Framework 2.0的元件都包含在 Visual Studio 2005和SQL Server 2005裡面。通過MSDN Universe版可以免費下載RTM版本。
</p><p>自1.1版本以來的改進：
</p>
<ul><li>大量的API變更。</li>
<li>新的API讓需要管理.NET運行庫實例的非.NET的應用程式可以做到這點。這個新的API對.NET運行庫的各種功能，包括：多執行緒、記憶體分配、代碼載入等，提供了很好的控制。它最初是為Microsoft SQL Server能夠有效率的使用.NET運行庫而設計的，因為Microsoft SQL Server擁有它自己的日程管理器和記憶體管理器。</li></ul><h3><span id=".NET_Framework_3.0">.NET Framework 3.0</span></h3>

<p>發佈日期2006/11/21。曾用名「WinFX」。依然使用.NET Framework 2.0版本的公共語言運行庫（CLR），並加入了適應未來軟體發展方向的4個框架：
</p>
<ul><li>Windows Presentation Foundation（WPF）：提供更佳的使用者體驗，用來開發Windows Forms程式以及瀏覽器應用程式（參見WPF/E）.</li>
<li>Windows Communication Foundation（WCF）：提供SOA（面向服務的軟體構架）支援的安全的網路服務（Web Service）框架。</li>
<li>Windows Workflow Foundation（WF）：提供一個設計與發展工作流程導向（Workflow-oriented）應用程式基礎支援的應用程式介面。</li>
<li>Windows CardSpace：提供一個SSO的解決方案，每個使用者都有各自的CardSpace。</li></ul><h3><span id=".NET_Framework_3.5">.NET Framework 3.5</span></h3>
<p>這個版本將包含一個支援C#和VB.Net中心的語言特性的編譯器，以及對語言整合查詢（LINQ, Language-Integrated Query）的支援。該版本隨Visual Studio 2008一起發佈。
</p><p>同時，.NET Framework 3.5自動包含.NET Framework 2.0 SP1以及.NET Framework 3.0 SP1，用於為這兩個版本提供安全性修復，以及少量新增的類別館（如System.DateTimeOffest），此版本提供的新功能有：
</p>
<ul><li>擴充方法（Extension Method）內容（Attribute），用於為擴充方法提供支援</li>
<li>LINQ支援，包括LINQ to Object、LINQ to ADO.NET以及LINQ to XML</li>
<li>表達式目錄樹（Expression Tree），用於為Lambda表達式提供支援</li>
<li>與語言整合查詢（LINQ）和資料感知緊密整合。藉助這個新功能，您可以使用相同的語法，在任何支援LINQ的語言中編寫相關程式碼，以篩選和列舉多種類型的SQL資料、集合、XML和資料集，以及建立它們的投影。</li>
<li>利用ASP.NET AJAX可以建立更有效、更具互動性、高度個人化的Web體驗，這些體驗在所有最流行的瀏覽器上都能實現。</li>
<li>用於生成WCF服務的全新Web協定支援，包括AJAX、JSON、REST、POX、RSS、ATOM和若干新的WS-*標準。</li>
<li>Visual Studio 2008中面向WF、WCF和WPF的完整工具支援，其中包括支援工作流的服務這一新技術。</li>
<li>.NET Framework 3.5基礎類別媒體櫃（BCL）中的新類可滿足許多常見的客戶請求。</li></ul><h4><span id=".NET_Framework_3.5_SP1">.NET Framework 3.5 SP1</span></h4>
<p>.NET Framework 3.5 SP1自動包含.NET Framework 2.0 SP2以及.NET Framework 3.0 SP2。該版本隨Visual Studio 2008 SP1釋出，此版本提供了下列的新功能：
</p>
<ul><li>新增的ASP.NET功能包括ASP.NET動態資料和ASP.NET AJAX附加功能，前者提供了無需編寫程式碼就可實現資料驅動的快速開發的豐富支架框架，後者為管理瀏覽器歷史記錄提供了支援（後退按鈕支援）。</li>
<li>ADO.NET Entity Framework。</li>
<li>對SQL Server 2008的資料提供程式支援。</li>
<li>.NET Framework客戶端設定檔是完整版.NET Framework的子集，面向客戶端應用程式。這改善了尚未安裝.NET Framework的電腦上的安裝體驗。</li>
<li>改進Windows Presentation Foundation的效能，其中包括啟動速度的點陣圖效果效能的提高。為Windows Presentation Foundation增加的功能包括對業務線應用程式的更好支援、本機閃屏支援、DirectX像素著色器支援以及新的WebBrowser控制項。</li>
<li>ClickOnce應用程式釋出者可以根據具體情況決定是否取消簽章和雜湊，開發人員可以以編程方式安裝顯示自訂姓名標示的ClickOnce應用程式，ClickOnce錯誤對話方塊支援指向網路上特定於應用程式的支援站點的連結。</li>
<li>用於SQL Server的.NET Framework資料提供程式（System.Data.SqlClient）完全支援SQL Server 2008資料庫引擎的所有新功能。有關.NET Framework對SQL Server 2008的支援的更多資訊，請參見SQL Server中的新功能（ADO.NET）。ADO.NET資料平台是一種多版本策略，它使開發人員能夠針對概念性實體資料模型進行編程，從而減輕他們的編碼和維護工作。此平台提供了ADO.NET Entity Framework、實體資料模型（EDM）、物件服務、LINQ to Entities、Entity SQL、EntityClient、ADO.NET資料服務及實體資料模型工具。</li>
<li>Windows Communication Foundation現在提供了改進的互操作性支援，增強了部份信任方案中的除錯體驗，並擴充了整合協定支援以更廣泛地套用於Web 2.0應用程式，從而使DataContract序列化程式更易於使用。</li>
<li>Microsoft.VisualBasic.PowerPacks命名空間引入了新的DataRepeater控制項，該控制項以可自訂的列表格式顯示資料。此命名空間還包含新的向量形狀。</li></ul><h3><span id=".NET_Framework_4.0">.NET Framework 4.0</span></h3>
<ul><li>.NET Framework 4.0主要增加了並列支援，英文版於2010年4月12日推出。</li>
<li>新增System.Lazy &lt;T&gt;，做為延遲初始化時使用。</li>
<li>新增大整數的System.Numerics.BigInteger與複數的System.Numerics.Complex（使用時需加入參考System.Numerics.dll）</li>
<li>微軟於2016年1月12開始停止對.NET 4.0, 4.5, 4.5.1的安全性更新及技術支援</li></ul><h3><span id=".NET_Framework_4.5">.NET Framework 4.5</span></h3>
<p>.NET Framework 4.5是.NET Framework 4高相容性的置位更新（in-place update）。搭配C# 或Visual Basic程式設計語言使用.NET Framework 4.5，即可編寫Windows Store風格的應用程式。.NET Framework 4.5可提升效能、可靠度及安全性。於2012年8月15日推出。但請注意，.NET Framework 4.5只支援Windows Vista SP2以上版本的作業系統。</p>
<ul><li>微軟於2016年1月12開始停止對.NET 4.0, 4.5, 4.5.1的安全性更新及技術支援</li></ul><h4><span id=".NET_Framework_4.5.1">.NET Framework 4.5.1</span></h4>
<p>.NET Framework 4.5.1於2013年10月17日隨著Visual Studio 2013發布。此版本需要Windows Vista SP2或更新的環境，並且包含在Windows 8.1和Windows Server 2012 R2中。.NET Framework 4.5.1的新功能有：</p>
<ul><li>偵錯器支援X64編輯和繼續（EnC）</li>
<li>偵錯器支援檢視代管返回值</li>
<li>「Call Stack」和「Task」視窗中的異步感知偵錯</li>
<li>偵錯器支援分析.NET記憶體轉儲（在Visual Studio Ultimate SKU中）</li>
<li>適用於Performance 及 Diagnostics中心的.NET開發者工具</li>
<li>代碼分析UI改進</li>
<li>ADO.NET空閒連接彈性</li></ul><h4><span id=".NET_Framework_4.5.2">.NET Framework 4.5.2</span></h4>
<p>.NET Framework 4.5.2的發表宣佈於2014年5月5日。此版本需要Windows Vista SP2及更新版本。對於Windows Forms應用程式，對高DPI方案進行了改進。對於ASP.NET，可以使用更高可靠性的HTTP開頭檢查和修改方法，這是一種規劃背景異步工作任務的新方法。</p>
<h3><span id=".NET_Framework_4.6">.NET Framework 4.6</span></h3>
<p>.NET Framework 4.6 是在2014年11月12月宣佈，而在2015年7月20日發行。 它對64位元系統支援一個新的即時編譯（JIT），稱之為 RyuJIT，呈現較佳的效能，並支援SSE2與AVX2指令集。WPF 與 Windows Forms 都獲得更新以達成較高的 DPI 情境。支援TLS 1.1 與 TLS 1.2 的功能已經被加入 WCF。 此版本需要Windows Vista SP2 或更新的版本。</p>
<h4><span id=".NET_Framework_4.6.1">.NET Framework 4.6.1</span></h4>
<p>.NET Framework 4.6.1 發行的訊息在2015年11月30日宣佈。這個版本需要 Windows 7 SP1 或更新的版本。新的功能與 API 包括：
</p>
<ul><li>WPF改進了拼寫檢查，支援使用者自訂詞典，並改進觸控效能。</li>
<li>增強支援橢圓曲線數字簽名演算法（ECDSA）X509 認證。</li>
<li>當連接Azure SQL資料庫時，添加了對AlwaysOn、Always Encrypted的SQL連接，並改進連接開放彈性。</li>
<li>Azure SQL資料庫現在使用更新的System.Transactions API支援分散式處理。</li>
<li>RyuJIT、GC、WPF和WCF中的許多其他效能、穩定性和可靠性相關修復。</li></ul><h4><span id=".NET_Framework_4.6.2">.NET Framework 4.6.2</span></h4>
<p>.NET Framework 4.6.2 的預覽在2016年3月30日宣佈，發行日期則為2016年8月2日。此版本需要 Windows 7 SP1 或更新版。 New features include:
</p>
<ul><li>支援超過260個字元的路徑</li>
<li>支援X.509認證的FIPS 186-3 DSA</li>
<li>TLS 1.1 / 1.2支援 ClickOnce</li>
<li>支援 ASP.NET 數據註釋的在地化</li>
<li>啟用具備 Project Centennial 的 .NET桌面應用程式</li>
<li>針對WPF支援軟鍵盤和每個監視器DPI</li></ul><h3><span id=".NET_Framework_4.7">.NET Framework 4.7</span></h3>
<p>2017年4月5日，微軟宣佈 .NET Framework 4.7 將被整合到 Windows 10 創作者更新, 承諾為其他Windows版本提供獨立安裝程式。同日，發行一個 Visual Studio 2017 更新版以加強支援標的物 .NET Framework 4.7。 所承諾的 Windows 7 及更新版本獨立安裝程式在2017年5月2日發行， 但有一些重要成份不包含在內。</p><p>.NET Framework 4.7 的新功能包括：</p>
<ul><li>使用橢圓曲線密碼學的增強加密</li>
<li>改進對傳輸層安全性協定（TLS）的支援，尤其是對於1.2版</li>
<li>支援Windows Forms 的高DPI感知支援</li>
<li>在 WPF 中對觸控和手寫的更多支援</li>
<li>WPF 的新印表 API</li></ul><h4><span id=".NET_Framework_4.7.1">.NET Framework 4.7.1</span></h4>
<p>.NET Framework 4.7.1 在2017年10月17日發行。在修復程式和新功能中，它修正了d3dcompiler依賴性問題。 
它還增加了與.NET Standard 2.0開箱即用的相容性。</p>
<h4><span id=".NET_Framework_4.7.2">.NET Framework 4.7.2</span></h4>
<p>.NET Framework 4.7.2 在2018年4月30日發行。主要的異動是改進 ASP.NET、BCL、CLR、ClickOnce、Networking、SQL、WCF、Windows Forms、Workflow 及 WPF。</p>
<h2><span id="CLR.E8.88.87CLI"></span><span id="CLR與CLI">CLR與CLI</span></h2>

<p>.NET的初級組成是CLI（通用語言架構）和CLR（通用語言運行庫）。
</p><p>CLI（通用語言架構）全名為Common Language Infrastructure，是一套運作環境規範，包括一般系統、基礎類庫和與機器無關的中間代碼。CLR則是確認操作密碼符合CLI的平臺。在通用中間語言（CIL）執行前，CLR必須將指令及時編譯轉換成原始機器碼。
</p><p>所有CLI都可經由.NET自我表述。CLR檢查元資料以確保正確的方法被調用。元資料通常是由語言編譯器生成的，但開發人員也可以通過使用客戶屬性建立他們自己的元資料。
</p><p>如果一種語言實現生成了CLI，它也可以通過使用CLR被調用，這樣它就可以與任何其他.NET語言生成的資料相互動。CLR也被設計為作業系統無關性。
</p><p>當一個彙編體被載入時，CLR執行各種各樣的測試。其中的兩個測試是確認與核查。在確認的時候，CLR檢查彙編體是否包含有效的元資料和CIL，並且檢查內部表的正確性。核查則不那麼精確。核查機制檢查代碼是否會執行一些「不安全」的操作。核查所使用的演算法非常保守，導致有時一些「安全」的代碼也通不過核查。不安全的代碼只有在彙編體擁有「跳過核查」許可的情況下才會被執行，通常這意味著代碼是安裝在本機上的。
</p><p>通過.NET，你可以用SOAP和不同的web服務進行互動。
</p>
<h2><span id=".E6.A8.99.E6.BA.96.E5.8C.96.E5.92.8C.E7.89.88.E6.AC.8A"></span><span id="標準化和版權">標準化和著作權</span></h2>
<p>2000年8月，微軟、惠普和英特爾共同制定CLI和C#程式語言的標準規格。2001年12月，以上兩者通過並成為ECMA標準規格。（ECMA 335（頁面存檔備份，存於網際網路檔案館）和ECMA 334（頁面存檔備份，存於網際網路檔案館））。ISO亦於2003年4月跟隨（ISO/IEC 23271（頁面存檔備份，存於網際網路檔案館）和ISO/IEC 23270（頁面存檔備份，存於網際網路檔案館））。
</p><p>這會有一定的風險，但它可以鼓勵標準聯合的實現，以提供一座橋梁來把非Windows的軟體轉變為微軟.NET。將此推廣為標準的一個團體是國際.NET聯合會（INETA）。
</p><p>儘管微軟及其他合作夥伴持有CLI及C#的專利，ECMA和ISO要求所有專利都應該遵守「合理與非歧視準則」。除此之外，這些公司亦同意讓使用者免費使用這兩項專利。
</p><p>不過，這並不包括.NET Framework內並不為ECMA/ISO標準涵蓋的範圍，這包括了：Windows Forms、ADO.NET及ASP.NET。微軟對上述部件所持有的專利，使開發者未必能夠為非微軟平臺開發出一套完整的作品。
</p><p>2014 年11月13日，微軟新任執行長薩帝亞·納德拉決心下，該公司釋出的<span lang="en">.NET</span>原始碼包含了伺服器部份的核心，如<span lang="en">.NET Framework Libraries</span>、<span lang="en">.NET Core Framework Libraries</span>和<span lang="en">RyuJit VM</span>，正式對外開放原始碼。</p>
<h2><span id=".NET.E4.B8.8EJava_EE"></span><span id=".NET与Java_EE">.NET與Java EE</span></h2>
<p>公共語言基礎（CLI），通用中間語言（CIL）以及C#與甲骨文公司的Java虛擬機和Java之間有不少的相似之處，因此它們無疑是強烈的競爭者。它們兩者都使用它們各自的中間碼（在微軟，它們叫做通用中間語言，而在Oracle，它們叫位元組碼）。通用中間語言被設計來即時編譯（JIT），而Java的位元組碼在最初的時候則是設計成用於解釋運行，而非即時編譯。.NET現在只在Windows上被完美地支援，而Java則可在很多平臺上被完好支援。然而，現在一些正在開發中的實現版本例如Mono或者Shared source CLI可以用於在類Unix作業系統例如Linux，FreeBSD和Mac OS X上運行.NET應用程式。甲骨文公司的一個產品，J2EE提供與微軟的一些捆綁於Windows中的技術例如COM+（先前的MTS）和MSMQ等效的功能。
</p><p>Java和.NET可經由IKVM，一個在.NET平臺上實作的Java虛擬機作更多的溝通。
</p><p>Java有其專門的遠端程式呼叫技術RMI（Remote Method Invocation）, RMI的另一版本RMI-IIOP更可相容CORBA。
</p><p>然而，.NET與Java之間的競爭關係，在.NET Core出現後，一切都改觀了。
</p>
<h2><span id=".NET.E4.B8.8ECOM"></span><span id=".NET与COM">.NET與COM</span></h2>
<p>前一版軟體元件技術由Microsoft所提出的COM，該技術被用來建立大型（large-scale）的軟體系統上，使用COM+ 或MTS對於傳統分散式元件有強化的作用。當.NET將COM-objects封裝成.NET元件以及將.NET元件封裝成COM-objects後，Microsoft分別將他命名為Runtime Callable Wrapper（RCW）和COM Callable Wrapper（CCW）。很明顯的，Microsoft最終將以.NET全面取代COM成為軟體元件的架構。Microsoft希望開發者能夠在Win32平臺上使用.Net取代COM，而已經存在的服務則透過抽象介面來使用（如：目前交易的.Net元件仍然使用COM+）。
</p>
<h2><span id=".Net_Remoting.E4.B8.8EXML_WebServices"></span><span id=".Net_Remoting与XML_WebServices">.Net Remoting與XML WebServices</span></h2>
<p>.NET remoting屬於行程（process）內溝通的抽象方法。
</p><p>Microsoft® .NET Remoting提供一個豐富可擴充的框架給存在兩個不同AppDomain中的Object，使得在不同行程（行程）和不同機器中能夠進行無縫地溝通。.NET Remoting提供一種強大但簡單的可程式化模型並且在執行階段支援資料交換。
</p><p>XML Web services將基礎的功能區塊佈署到網路的不同電腦上。開放標準的通訊協定以及人和應用程式可以透過Web Services整合應用程式的環境來合作。應用程式可以從不同的來源使用多個XML Web Services來建構應用程式而不需要知道他們在哪裡以及如何來運作。
</p>
<h2><span id=".NET.E7.9A.84.E8.AA.9E.E8.A8.80"></span><span id=".NET的語言">.NET的語言</span></h2>
<p>CLI被設計成支援任何物件導向的程式語言，分享共同物件模型與大型共同類別庫。.NET支援超過40種程式語言。這些編譯器大都是免費的（軟體廠商僅開發出售整合式開發環境）。
</p><p>大部份的語言都做了重大改變以搭配.NET Framework。廠商通常利用這個機會來同時改變語言的其他特性。
</p>
<h3><span id=".E5.BE.AE.E8.BB.9F.E9.96.8B.E7.99.BC.E7.9A.84.NET.E5.B9.B3.E8.87.BA.E7.B7.A8.E7.A8.8B.E8.AA.9E.E8.A8.80"></span><span id="微軟開發的.NET平臺編程語言">微軟開發的.NET平臺程式語言</span></h3>
<ul><li>C#，一個以C++和Java語法為基礎開發的一個全新的物件導向語言，是.NET開發的首選語言。</li>
<li>Visual Basic .NET，一個加強了物件導向支援的，支援多執行緒的Visual Basic版本。</li>
<li>C++/CLI，一個C++的.NET平臺版本變種。</li>
<li>JScript .NET，一個編譯版本的MicrosoftJScript語言。</li>
<li>J#，一個對應於Java和J++（微軟自己開發的Java變種）的.NET平臺版本，但是由於智慧財產權問題，目前微軟公司已經停止其開發套用。</li>
<li>F#，ML語言家族的一員。</li>
<li>Microsoft Small Basic</li></ul><h3><span id=".E7.AC.AC.E4.B8.89.E6.96.B9.E4.BD.BF.E7.94.A8.NET.E7.9A.84.E7.B7.A8.E7.A8.8B.E8.AA.9E.E8.A8.80"></span><span id="第三方使用.NET的編程語言">第三方使用.NET的程式語言</span></h3>
<ul><li>Ada，參閱A#。</li>
<li>APL</li>
<li>Boo，基於Python。</li>
<li>COBOL</li>
<li>Component Pascal，基於部件的Pascal，比起Pascal來更接近於Oberon。</li>
<li>Delphi 8 and Delphi 2005以及現在的delphi xe2都採用.net</li>
<li>Eiffel</li>
<li>Forth</li>
<li>FORTRAN</li>
<li>IKVM，Java。</li>
<li>IronPython，基於Python。</li>
<li>IronRuby，基於Ruby。</li>
<li>Lexico，基於西班牙語的面向物件程式語言。</li>
<li>Lisp</li>
<li>Mercury</li>
<li>Mondrian為了便於指令碼部件編程而開發的功能型語言。</li>
<li>Nemerle函數式／指令式混合語言。</li>
<li>Oberon</li>
<li>Perl</li>
<li>Phalanger，PHP的.net編譯器。</li>
<li>RPG</li>
<li>Smalltalk</li>
<li>TclBridge，基於Tcl。</li>
<li>PowerBuilder.NET powerbuilder 11.5及以後的版本都採用.net技術，但這種語言目前停止開發了。</li></ul><h3><span id="ASP.NET_.26_ADO.NET"></span><span id="ASP.NET_&amp;_ADO.NET">ASP.NET &amp; ADO.NET</span></h3>

<p>ASP.NET是內含於.NET Framework中，專門用來發展Web應用程式的一組類別庫集。
</p><p>ADO.NET是內含於.NET Framework中，專門處理與資料來源溝通的資料存取類別庫集，被Windows Forms與ASP.NET應用程式大量使用，可說是.NET Framework中唯一的資料存取介面。
</p>
<h2><span id=".E5.8F.AF.E4.BE.9B.E9.81.B8.E6.93.87.E7.9A.84.E5.AF.A6.E7.8F.BE.E7.89.88.E6.9C.AC"></span><span id="可供選擇的實現版本">可供選擇的實現版本</span></h2>
<p>微軟的.NET Framework是.NET技術的旗艦級實現版本，在此之外還有一些其他實現版本。
</p>
<ul><li>.NET Core 是微軟開發的跨平台 (Windows、Mac OSX、Linux) 的應用程式開發框架（Application Framework）</li></ul><ul><li>微軟開發了一個稱為共享原始碼公共語言基礎（Shared Source Common Language Infrastructure，Shared Source CLI；即今ECMA—通用語言架構），是微軟的.NET Framework（共通語言執行平臺）的一個原始碼共享的實現架構，可運行於Windows XP，FreeBSD，和Mac OS X10.2。</li></ul><ul><li>Mono是一個開源的.NET運行時和開發庫實現版本。Mono現正由xamarin公司和開源軟體發展社區負責開發。它正迅速發展成熟，現已經包含了對ASP.NET和ADO.NET的支援，對Windows Forms庫的支援也較充分。它提供了一個C#編譯器，而一個VB.NET編譯器現在也已經處於pre-beta階段。Mono項目還包含了一些新的庫和技術的開發：
<ul><li>Gtk：一個GTK+GUI工具包的.NET封裝。</li>
<li>xSP：一個用C#編寫的支援運行ASP.NET應用程式的網頁伺服器軟體。</li>
<li>MonoDevelop：SharpDevelop的一個移植版本，是一個符合GPL標準的面向Gtk#和Mono的.NET整合開發環境。</li>
<li>Novell.Directory.Ldap類庫：Lightweight Directory Access Protocol（LDAP）for .NET的一個免費的實現版本。</li>
<li>SerialPortNet：Aserial portlibrary for .Net &amp; Mono implementing .NET 2.0 specifications.</li>
<li>Mono for Android和MonoTouch for iOS：Mono在行動平台Android和iOS上的移植，使開發者可以在Android和iOS平台上使用C#和Mono框架開發套用。Xamarin Forms是這些實現的核心，可以根據系統不同生成符合該系統風格的介面。</li>
<li>MonoMac：Mono對於一些OS X原生Step API的封裝。</li></ul></li></ul><ul><li>Portable.NET不及Mono成熟，這得歸因於Portable.NET並不是在最初的時候就使用了微軟的開發框架。提供了一個可以從C編譯到通用中間語言的編譯器。</li></ul><h2><span id=".E5.8F.83.E8.A6.8B"></span><span id="參見">參見</span></h2>

<ul><li>C#</li>
<li>VB.NET</li>
<li>ASP.NET</li>
<li>AJAX</li>
<li>COM Interop</li>
<li>Windows API</li>
<li>.NET Compact Framework</li>
<li>.NET Micro Framework</li></ul><h2><span id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"></span><span id="参考文献">參考文獻</span></h2>

<h2><span id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></span><span id="外部链接">外部連結</span></h2>
<ul><li><span><span>官方網站</span></span> </li>
<li>Overview of .NET Framework (MSDN)（頁面存檔備份，存於網際網路檔案館）<span title="英語">（英文）</span>
<ul><li>.NET Framework 概述（頁面存檔備份，存於網際網路檔案館）<span title="中文">（簡體中文）</span></li>
<li>.NET Framework 的概觀（頁面存檔備份，存於網際網路檔案館）<span title="中文">（繁體中文）</span></li></ul></li>
<li>.NET Github repository（頁面存檔備份，存於網際網路檔案館）</li></ul>
<!-- 
NewPP limit report
Parsed by mw2443
Cached time: 20230505225850
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 1.123 seconds
Real time usage: 1.498 seconds
Preprocessor visited node count: 11068/1000000
Post‐expand include size: 740339/2097152 bytes
Template argument size: 20886/2097152 bytes
Highest expansion depth: 28/100
Expensive parser function count: 136/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 42020/5000000 bytes
Lua time usage: 0.437/10.000 seconds
Lua memory usage: 32550082/52428800 bytes
Number of Wikibase entities loaded: 1/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  959.855      1 -total
 21.87%  209.961      2 Template:NavboxV2
 18.06%  173.376     95 Template:Le
 14.97%  143.686      1 Template:Reflist
 14.36%  137.856      1 Template:Microsoft
 12.94%  124.237      1 Template:Infobox_Software
 11.76%  112.858      1 Template:Infobox
 11.69%  112.177     29 Template:Cite_web
  9.90%   95.050      1 Template:多個問題
  8.64%   82.921      2 Template:Navbox
-->
**.NET Framework** 是由微軟開發，一個致力於敏捷軟體開發（agile software development）、快速應用開發（rapid application development）、平臺獨立性和網路透明化的軟體框架。.NET 是微軟為 2000 年代對伺服器和桌上型軟體工程邁出的第一步。.NET 包含許多有助於網際網路和內部網套用迅捷發的技術。

.NET Framework 是微軟公司繼 Windows DNA 之後的新發平台，採用系統虛擬機器運行，以通用語言運行庫（Common Language Runtime）為基礎，支援多種語言（C#、F#、VB.NET、C++、Python 等）的發。

.NET 也為應用程式介面（API）提供了新功能和發工具。這些革新使得程式設計員可以同時進行 Windows 應用軟體和網路應用軟體以及元件和服務（web 服務）的開發。.NET 提供了一個新的反射性的且物件導向程式設計編程介面。.NET 設計得足夠通用化從而使許多不同高階語言都得以被匯集。

甲骨文公司的 Java 程式語言和 Java 平台企業版技術是.NET 平台的競爭對手之一。

2014 年 11 月 12 日，微軟宣布完全開放.NET Framework 的原始碼，並提供給 Linux 和 macOS 使用。

## 版本

## 發行歷史

### .NET Framework 1.0

完整版號 - 1.0.3705

這是最早的.NET 架構，於 2002 年發行。它可以以一個獨立且可重新分發的包的形式或在一個軟體發展工具包集中被獲得。它也是第一個微軟 Visual Studio .NET 的發行版的一部份（也被稱作 Visual Studio .NET 2002）。

### .NET Framework 1.1

完整版號 - 1.1.4322

這是首個主要的.NET Framework 升級版本，發行於 2003 年。它可以以一個獨立的可重新分發的包的形式或在一個軟體發展工具包集中被獲得。它也是第二個微軟 Visual Studio .NET 版本的一部份（也被稱作 Visual Studio .NET 2003）。它也是首個被 Windows 作業系統 - Windows Server 2003 所內建的.NET Framework 版本。

自 1.0 版本以來的改進：

* 內建了對 mobile ASP.NET 控制項的支援。這在 1.0 版本是以附加功能方式實現的，現在已經整合到框架的內部。
* 安全方面的變更 - 使得 Windows 表單代碼以可靠的行為執行，從而可以在 Internet 環境內安全運行，並且加入了 ASP.NET 應用程式的代碼安全存取功能。
* 內建了對 ODBC 和 Oracle 資料庫的支援。這在 1.0 版本是以附加功能方式實現的，現在已經整合到框架的內部。
* .NET Compact Framework- 這是一個用於智慧型裝置（例如 Pocket PC 或者 SmartPhone）的.NET Framework 的子集。
* 對 IPv6 的支援。
* 大量的 API 變更。

### .NET Framework 2.0

完整版號 - 2.0.50727.42，發行於 2005 年 10 月 27 日。

.NET Framework 2.0 的元件都包含在 Visual Studio 2005 和 SQL Server 2005 裡面。通過 MSDN Universe 版可以免費下載 RTM 版本。

自 1.1 版本以來的改進：

* 大量的 API 變更。
* 新的 API 讓需要管理.NET 運行庫實例的非.NET 的應用程式可以做到這點。這個新的 API 對.NET 運行庫的各種功能，包括：多執行緒、記憶體分配、代碼載入等，提供了很好的控制。它最初是為 Microsoft SQL Server 能夠有效率的使用.NET 運行庫而設計的，因為 Microsoft SQL Server 擁有它自己的日程管理器和記憶體管理器。

### .NET Framework 3.0

發佈日期 2006/11/21。曾用名「WinFX」。依然使用.NET Framework 2.0 版本的公共語言運行庫（CLR），並加入了適應未來軟體發展方向的 4 個框架：

* Windows Presentation Foundation（WPF）：提供更佳的使用者體驗，用來開發 Windows Forms 程式以及瀏覽器應用程式（參見 WPF/E）.
* Windows Communication Foundation（WCF）：提供 SOA（面向服務的軟體構架）支援的安全的網路服務（Web Service）框架。
* Windows Workflow Foundation（WF）：提供一個設計與發展工作流程導向（Workflow-oriented）應用程式基礎支援的應用程式介面。
* Windows CardSpace：提供一個 SSO 的解決方案，每個使用者都有各自的 CardSpace。

### .NET Framework 3.5

這個版本將包含一個支援 C# 和 VB.Net 中心的語言特性的編譯器，以及對語言整合查詢（LINQ, Language-Integrated Query）的支援。該版本隨 Visual Studio 2008 一起發佈。

同時，.NET Framework 3.5 自動包含.NET Framework 2.0 SP1 以及.NET Framework 3.0 SP1，用於為這兩個版本提供安全性修復，以及少量新增的類別館（如 System.DateTimeOffest），此版本提供的新功能有：

* 擴充方法（Extension Method）內容（Attribute），用於為擴充方法提供支援
* LINQ 支援，包括 LINQ to Object、LINQ to ADO.NET 以及 LINQ to XML
* 表達式目錄樹（Expression Tree），用於為 Lambda 表達式提供支援
* 與語言整合查詢（LINQ）和資料感知緊密整合。藉助這個新功能，您可以使用相同的語法，在任何支援 LINQ 的語言中編寫相關程式碼，以篩選和列舉多種類型的 SQL 資料、集合、XML 和資料集，以及建立它們的投影。
* 利用 ASP.NET AJAX 可以建立更有效、更具互動性、高度個人化的 Web 體驗，這些體驗在所有最流行的瀏覽器上都能實現。
* 用於生成 WCF 服務的全新 Web 協定支援，包括 AJAX、JSON、REST、POX、RSS、ATOM 和若干新的 WS-\* 標準。
* Visual Studio 2008 中面向 WF、WCF 和 WPF 的完整工具支援，其中包括支援工作流的服務這一新技術。
* .NET Framework 3.5 基礎類別媒體櫃（BCL）中的新類可滿足許多常見的客戶請求。

#### .NET Framework 3.5 SP1

.NET Framework 3.5 SP1 自動包含.NET Framework 2.0 SP2 以及.NET Framework 3.0 SP2。該版本隨 Visual Studio 2008 SP1 釋出，此版本提供了下列的新功能：

* 新增的 ASP.NET 功能包括 ASP.NET 動態資料和 ASP.NET AJAX 附加功能，前者提供了無需編寫程式碼就可實現資料驅動的快速開發的豐富支架框架，後者為管理瀏覽器歷史記錄提供了支援（後退按鈕支援）。
* ADO.NET Entity Framework。
* 對 SQL Server 2008 的資料提供程式支援。
* .NET Framework 客戶端設定檔是完整版.NET Framework 的子集，面向客戶端應用程式。這改善了尚未安裝.NET Framework 的電腦上的安裝體驗。
* 改進 Windows Presentation Foundation 的效能，其中包括啟動速度的點陣圖效果效能的提高。為 Windows Presentation Foundation 增加的功能包括對業務線應用程式的更好支援、本機閃屏支援、DirectX 像素著色器支援以及新的 WebBrowser 控制項。
* ClickOnce 應用程式釋出者可以根據具體情況決定是否取消簽章和雜湊，開發人員可以以編程方式安裝顯示自訂姓名標示的 ClickOnce 應用程式，ClickOnce 錯誤對話方塊支援指向網路上特定於應用程式的支援站點的連結。
* 用於 SQL Server 的.NET Framework 資料提供程式（System.Data.SqlClient）完全支援 SQL Server 2008 資料庫引擎的所有新功能。有關.NET Framework 對 SQL Server 2008 的支援的更多資訊，請參見 SQL Server 中的新功能（ADO.NET）。ADO.NET 資料平台是一種多版本策略，它使開發人員能夠針對概念性實體資料模型進行編程，從而減輕他們的編碼和維護工作。此平台提供了 ADO.NET Entity Framework、實體資料模型（EDM）、物件服務、LINQ to Entities、Entity SQL、EntityClient、ADO.NET 資料服務及實體資料模型工具。
* Windows Communication Foundation 現在提供了改進的互操作性支援，增強了部份信任方案中的除錯體驗，並擴充了整合協定支援以更廣泛地套用於 Web 2.0 應用程式，從而使 DataContract 序列化程式更易於使用。
* Microsoft.VisualBasic.PowerPacks 命名空間引入了新的 DataRepeater 控制項，該控制項以可自訂的列表格式顯示資料。此命名空間還包含新的向量形狀。

### .NET Framework 4.0

* .NET Framework 4.0 主要增加了並列支援，英文版於 2010 年 4 月 12 日推出。
* 新增 System.Lazy <T>，做為延遲初始化時使用。
* 新增大整數的 System.Numerics.BigInteger 與複數的 System.Numerics.Complex（使用時需加入參考 System.Numerics.dll）
* 微軟於 2016 年 1 月 12 開始停止對.NET 4.0, 4.5, 4.5.1 的安全性更新及技術支援

### .NET Framework 4.5

.NET Framework 4.5 是.NET Framework 4 高相容性的置位更新（in-place update）。搭配 C# 或 Visual Basic 程式設計語言使用.NET Framework 4.5，即可編寫 Windows Store 風格的應用程式。.NET Framework 4.5 可提升效能、可靠度及安全性。於 2012 年 8 月 15 日推出。但請注意，.NET Framework 4.5 只支援 Windows Vista SP2 以上版本的作業系統。

* 微軟於 2016 年 1 月 12 開始停止對.NET 4.0, 4.5, 4.5.1 的安全性更新及技術支援

#### .NET Framework 4.5.1

.NET Framework 4.5.1 於 2013 年 10 月 17 日隨著 Visual Studio 2013 發布。此版本需要 Windows Vista SP2 或更新的環境，並且包含在 Windows 8.1 和 Windows Server 2012 R2 中。.NET Framework 4.5.1 的新功能有：

* 偵錯器支援 X64 編輯和繼續（EnC）
* 偵錯器支援檢視代管返回值
* 「Call Stack」和「Task」視窗中的異步感知偵錯
* 偵錯器支援分析.NET 記憶體轉儲（在 Visual Studio Ultimate SKU 中）
* 適用於 Performance 及 Diagnostics 中心的.NET 開發者工具
* 代碼分析 UI 改進
* ADO.NET 空閒連接彈性

#### .NET Framework 4.5.2

.NET Framework 4.5.2 的發表宣佈於 2014 年 5 月 5 日。此版本需要 Windows Vista SP2 及更新版本。對於 Windows Forms 應用程式，對高 DPI 方案進行了改進。對於 ASP.NET，可以使用更高可靠性的 HTTP 開頭檢查和修改方法，這是一種規劃背景異步工作任務的新方法。

### .NET Framework 4.6

.NET Framework 4.6 是在 2014 年 11 月 12 月宣佈，而在 2015 年 7 月 20 日發行。 它對 64 位元系統支援一個新的即時編譯（JIT），稱之為 RyuJIT，呈現較佳的效能，並支援 SSE2 與 AVX2 指令集。WPF 與 Windows Forms 都獲得更新以達成較高的 DPI 情境。支援 TLS 1.1 與 TLS 1.2 的功能已經被加入 WCF。 此版本需要 Windows Vista SP2 或更新的版本。

#### .NET Framework 4.6.1

.NET Framework 4.6.1 發行的訊息在 2015 年 11 月 30 日宣佈。這個版本需要 Windows 7 SP1 或更新的版本。新的功能與 API 包括：

* WPF 改進了拼寫檢查，支援使用者自訂詞典，並改進觸控效能。
* 增強支援橢圓曲線數字簽名演算法（ECDSA）X509 認證。
* 當連接 Azure SQL 資料庫時，添加了對 AlwaysOn、Always Encrypted 的 SQL 連接，並改進連接開放彈性。
* Azure SQL 資料庫現在使用更新的 System.Transactions API 支援分散式處理。
* RyuJIT、GC、WPF 和 WCF 中的許多其他效能、穩定性和可靠性相關修復。

#### .NET Framework 4.6.2

.NET Framework 4.6.2 的預覽在 2016 年 3 月 30 日宣佈，發行日期則為 2016 年 8 月 2 日。此版本需要 Windows 7 SP1 或更新版。 New features include:

* 支援超過 260 個字元的路徑
* 支援 X.509 認證的 FIPS 186-3 DSA
* TLS 1.1 / 1.2 支援 ClickOnce
* 支援 ASP.NET 數據註釋的在地化
* 啟用具備 Project Centennial 的 .NET 桌面應用程式
* 針對 WPF 支援軟鍵盤和每個監視器 DPI

### .NET Framework 4.7

2017 年 4 月 5 日，微軟宣佈 .NET Framework 4.7 將被整合到 Windows 10 創作者更新，承諾為其他 Windows 版本提供獨立安裝程式。同日，發行一個 Visual Studio 2017 更新版以加強支援標的物 .NET Framework 4.7。 所承諾的 Windows 7 及更新版本獨立安裝程式在 2017 年 5 月 2 日發行， 但有一些重要成份不包含在內。

.NET Framework 4.7 的新功能包括：

* 使用橢圓曲線密碼學的增強加密
* 改進對傳輸層安全性協定（TLS）的支援，尤其是對於 1.2 版
* 支援 Windows Forms 的高 DPI 感知支援
* 在 WPF 中對觸控和手寫的更多支援
* WPF 的新印表 API

#### .NET Framework 4.7.1

.NET Framework 4.7.1 在 2017 年 10 月 17 日發行。在修復程式和新功能中，它修正了 d3dcompiler 依賴性問題。 
它還增加了與.NET Standard 2.0 開箱即用的相容性。

#### .NET Framework 4.7.2

.NET Framework 4.7.2 在 2018 年 4 月 30 日發行。主要的異動是改進 ASP.NET、BCL、CLR、ClickOnce、Networking、SQL、WCF、Windows Forms、Workflow 及 WPF。

## CLR 與 CLI

.NET 的初級組成是 CLI（通用語言架構）和 CLR（通用語言運行庫）。

CLI（通用語言架構）全名為 Common Language Infrastructure，是一套運作環境規範，包括一般系統、基礎類庫和與機器無關的中間代碼。CLR 則是確認操作密碼符合 CLI 的平臺。在通用中間語言（CIL）執行前，CLR 必須將指令及時編譯轉換成原始機器碼。

所有 CLI 都可經由.NET 自我表述。CLR 檢查元資料以確保正確的方法被調用。元資料通常是由語言編譯器生成的，但開發人員也可以通過使用客戶屬性建立他們自己的元資料。

如果一種語言實現生成了 CLI，它也可以通過使用 CLR 被調用，這樣它就可以與任何其他.NET 語言生成的資料相互動。CLR 也被設計為作業系統無關性。

當一個彙編體被載入時，CLR 執行各種各樣的測試。其中的兩個測試是確認與核查。在確認的時候，CLR 檢查彙編體是否包含有效的元資料和 CIL，並且檢查內部表的正確性。核查則不那麼精確。核查機制檢查代碼是否會執行一些「不安全」的操作。核查所使用的演算法非常保守，導致有時一些「安全」的代碼也通不過核查。不安全的代碼只有在彙編體擁有「跳過核查」許可的情況下才會被執行，通常這意味著代碼是安裝在本機上的。

通過.NET，你可以用 SOAP 和不同的 web 服務進行互動。

## 標準化和著作權

2000 年 8 月，微軟、惠普和英特爾共同制定 CLI 和 C# 程式語言的標準規格。2001 年 12 月，以上兩者通過並成為 ECMA 標準規格。（ECMA 335（頁面存檔備份，存於網際網路檔案館）和 ECMA 334（頁面存檔備份，存於網際網路檔案館））。ISO 亦於 2003 年 4 月跟隨（ISO/IEC 23271（頁面存檔備份，存於網際網路檔案館）和 ISO/IEC 23270（頁面存檔備份，存於網際網路檔案館））。

這會有一定的風險，但它可以鼓勵標準聯合的實現，以提供一座橋梁來把非 Windows 的軟體轉變為微軟.NET。將此推廣為標準的一個團體是國際.NET 聯合會（INETA）。

儘管微軟及其他合作夥伴持有 CLI 及 C# 的專利，ECMA 和 ISO 要求所有專利都應該遵守「合理與非歧視準則」。除此之外，這些公司亦同意讓使用者免費使用這兩項專利。

不過，這並不包括.NET Framework 內並不為 ECMA/ISO 標準涵蓋的範圍，這包括了：Windows Forms、ADO.NET 及 ASP.NET。微軟對上述部件所持有的專利，使開發者未必能夠為非微軟平臺開發出一套完整的作品。

2014 年 11 月 13 日，微軟新任執行長薩帝亞・納德拉決心下，該公司釋出的.NET 原始碼包含了伺服器部份的核心，如.NET Framework Libraries、.NET Core Framework Libraries 和 RyuJit VM，正式對外開放原始碼。

## .NET 與 Java EE

公共語言基礎（CLI），通用中間語言（CIL）以及 C# 與甲骨文公司的 Java 虛擬機和 Java 之間有不少的相似之處，因此它們無疑是強烈的競爭者。它們兩者都使用它們各自的中間碼（在微軟，它們叫做通用中間語言，而在 Oracle，它們叫位元組碼）。通用中間語言被設計來即時編譯（JIT），而 Java 的位元組碼在最初的時候則是設計成用於解釋運行，而非即時編譯。.NET 現在只在 Windows 上被完美地支援，而 Java 則可在很多平臺上被完好支援。然而，現在一些正在開發中的實現版本例如 Mono 或者 Shared source CLI 可以用於在類 Unix 作業系統例如 Linux，FreeBSD 和 Mac OS X 上運行.NET 應用程式。甲骨文公司的一個產品，J2EE 提供與微軟的一些捆綁於 Windows 中的技術例如 COM+（先前的 MTS）和 MSMQ 等效的功能。

Java 和.NET 可經由 IKVM，一個在.NET 平臺上實作的 Java 虛擬機作更多的溝通。

Java 有其專門的遠端程式呼叫技術 RMI（Remote Method Invocation）, RMI 的另一版本 RMI-IIOP 更可相容 CORBA。

然而，.NET 與 Java 之間的競爭關係，在.NET Core 出現後，一切都改觀了。

## .NET 與 COM

前一版軟體元件技術由 Microsoft 所提出的 COM，該技術被用來建立大型（large-scale）的軟體系統上，使用 COM+ 或 MTS 對於傳統分散式元件有強化的作用。當.NET 將 COM-objects 封裝成.NET 元件以及將.NET 元件封裝成 COM-objects 後，Microsoft 分別將他命名為 Runtime Callable Wrapper（RCW）和 COM Callable Wrapper（CCW）。很明顯的，Microsoft 最終將以.NET 全面取代 COM 成為軟體元件的架構。Microsoft 希望開發者能夠在 Win32 平臺上使用.Net 取代 COM，而已經存在的服務則透過抽象介面來使用（如：目前交易的.Net 元件仍然使用 COM+）。

## .Net Remoting 與 XML WebServices

.NET remoting 屬於行程（process）內溝通的抽象方法。

Microsoft® .NET Remoting 提供一個豐富可擴充的框架給存在兩個不同 AppDomain 中的 Object，使得在不同行程（行程）和不同機器中能夠進行無縫地溝通。.NET Remoting 提供一種強大但簡單的可程式化模型並且在執行階段支援資料交換。

XML Web services 將基礎的功能區塊佈署到網路的不同電腦上。開放標準的通訊協定以及人和應用程式可以透過 Web Services 整合應用程式的環境來合作。應用程式可以從不同的來源使用多個 XML Web Services 來建構應用程式而不需要知道他們在哪裡以及如何來運作。

## .NET 的語言

CLI 被設計成支援任何物件導向的程式語言，分享共同物件模型與大型共同類別庫。.NET 支援超過 40 種程式語言。這些編譯器大都是免費的（軟體廠商僅開發出售整合式開發環境）。

大部份的語言都做了重大改變以搭配.NET Framework。廠商通常利用這個機會來同時改變語言的其他特性。

### 微軟開發的.NET 平臺程式語言

* C#，一個以 C++ 和 Java 語法為基礎開發的一個全新的物件導向語言，是.NET 開發的首選語言。
* Visual Basic .NET，一個加強了物件導向支援的，支援多執行緒的 Visual Basic 版本。
* C++/CLI，一個 C++ 的.NET 平臺版本變種。
* JScript .NET，一個編譯版本的 MicrosoftJScript 語言。
* J#，一個對應於 Java 和 J++（微軟自己開發的 Java 變種）的.NET 平臺版本，但是由於智慧財產權問題，目前微軟公司已經停止其開發套用。
* F#，ML 語言家族的一員。
* Microsoft Small Basic

### 第三方使用.NET 的程式語言

* Ada，參閱 A#。
* APL
* Boo，基於 Python。
* COBOL
* Component Pascal，基於部件的 Pascal，比起 Pascal 來更接近於 Oberon。
* Delphi 8 and Delphi 2005 以及現在的 delphi xe2 都採用.net
* Eiffel
* Forth
* FORTRAN
* IKVM，Java。
* IronPython，基於 Python。
* IronRuby，基於 Ruby。
* Lexico，基於西班牙語的面向物件程式語言。
* Lisp
* Mercury
* Mondrian 為了便於指令碼部件編程而開發的功能型語言。
* Nemerle 函數式／指令式混合語言。
* Oberon
* Perl
* Phalanger，PHP 的.net 編譯器。
* RPG
* Smalltalk
* TclBridge，基於 Tcl。
* PowerBuilder.NET powerbuilder 11.5 及以後的版本都採用.net 技術，但這種語言目前停止開發了。

### ASP.NET & ADO.NET

ASP.NET 是內含於.NET Framework 中，專門用來發展 Web 應用程式的一組類別庫集。

ADO.NET 是內含於.NET Framework 中，專門處理與資料來源溝通的資料存取類別庫集，被 Windows Forms 與 ASP.NET 應用程式大量使用，可說是.NET Framework 中唯一的資料存取介面。

## 可供選擇的實現版本

微軟的.NET Framework 是.NET 技術的旗艦級實現版本，在此之外還有一些其他實現版本。

* .NET Core 是微軟開發的跨平台 (Windows、Mac OSX、Linux) 的應用程式開發框架（Application Framework）
* 微軟開發了一個稱為共享原始碼公共語言基礎（Shared Source Common Language Infrastructure，Shared Source CLI；即今 ECMA— 通用語言架構），是微軟的.NET Framework（共通語言執行平臺）的一個原始碼共享的實現架構，可運行於 Windows XP，FreeBSD，和 Mac OS X10.2。
* Mono 是一個開源的.NET 運行時和開發庫實現版本。Mono 現正由 xamarin 公司和開源軟體發展社區負責開發。它正迅速發展成熟，現已經包含了對 ASP.NET 和 ADO.NET 的支援，對 Windows Forms 庫的支援也較充分。它提供了一個 C# 編譯器，而一個 VB.NET 編譯器現在也已經處於 pre-beta 階段。Mono 項目還包含了一些新的庫和技術的開發：
  * Gtk：一個 GTK+GUI 工具包的.NET 封裝。
  * xSP：一個用 C# 編寫的支援運行 ASP.NET 應用程式的網頁伺服器軟體。
  * MonoDevelop：SharpDevelop 的一個移植版本，是一個符合 GPL 標準的面向 Gtk# 和 Mono 的.NET 整合開發環境。
  * Novell.Directory.Ldap 類庫：Lightweight Directory Access Protocol（LDAP）for .NET 的一個免費的實現版本。
  * SerialPortNet：Aserial portlibrary for .Net & Mono implementing .NET 2.0 specifications.
  * Mono for Android 和 MonoTouch for iOS：Mono 在行動平台 Android 和 iOS 上的移植，使開發者可以在 Android 和 iOS 平台上使用 C# 和 Mono 框架開發套用。Xamarin Forms 是這些實現的核心，可以根據系統不同生成符合該系統風格的介面。
  * MonoMac：Mono 對於一些 OS X 原生 Step API 的封裝。
* Portable.NET 不及 Mono 成熟，這得歸因於 Portable.NET 並不是在最初的時候就使用了微軟的開發框架。提供了一個可以從 C 編譯到通用中間語言的編譯器。

## 參見

* C#
* VB.NET
* ASP.NET
* AJAX
* COM Interop
* Windows API
* .NET Compact Framework
* .NET Micro Framework

## 參考文獻

## 外部連結

* 官方網站
* Overview of .NET Framework (MSDN)（頁面存檔備份，存於網際網路檔案館）（英文）
  * .NET Framework 概述（頁面存檔備份，存於網際網路檔案館）（簡體中文）
  * .NET Framework 的概觀（頁面存檔備份，存於網際網路檔案館）（繁體中文）
* .NET Github repository（頁面存檔備份，存於網際網路檔案館）
.NET框架