.NET框架

.NET Framework 1.0

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

.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.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。廠商通常利用這個機會來同時改變語言的其他特性。

ASP.NET & ADO.NET

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