List of .NET libraries and frameworks
This article contains a list of libraries that can be used in .NET languages. These languages require .NET Framework or .NET, which provide a basis for software development, platform independence, language interoperability and extensive framework libraries. Standard Libraries (including the Base Class Library) are not included in this article.
Preamble
Apps created with .NET Framework or .NET run in a software environment known as the Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling. The framework includes a large class library called Framework Class Library (FCL).
Thanks to the hosting virtual machine, different .NET CLI-compliant languages can operate on the same kind of data structures. Therefore, all CLI-compliant languages can use FCL and other .NET libraries that are written in one of the CLI compliant languages. When the source code of a CLI-compliant language is compiled, the compiler generates platform-independent code in the Common Intermediate Language (CIL, also referred to as bytecode), which is stored in CLI assemblies. When a .NET app runs, the just-in-time compiler (JIT) turns the CIL code into platform-specific machine code. To improve performance, .NET Framework also comes with the Native Image Generator (NGEN), which performs ahead-of-time compilation to machine code.
This architecture provides language interoperability. Each language can use code written in other languages. Calls from one language to another are exactly the same as would be within a single programming language. If a library is written in one CLI language, it can be used in other CLI languages. Moreover, apps that consist only of pure .NET assemblies, can be transferred to any platform that contains an implementation of CLI and run on that platform. For example, apps written using .NET can run on Windows, macOS, and various versions of Linux.
.NET apps or their libraries, however, may depend on native platform features, e.g. COM. As such, platform independence of .NET apps depends on the ability to transfer necessary native libraries to target platforms. Until 2019, the Windows Forms and Windows Presentation Foundation portions of .NET Framework were not available on other platforms.[1]
.NET implementations
There are four primary .NET implementations that are actively developed and maintained:
- .NET Framework: The original .NET implementation that has existed since 2002. While not yet discontinued, Microsoft does not plan on releasing its next major version, 5.0.[2]
- Mono: A cross-platform implementation of .NET Framework by Ximian, introduced in 2004. It is free and open-source. It is now developed by Xamarin, a subsidiary of Microsoft.
- Universal Windows Platform (UWP): An implementation of .NET used for building UWP apps. It's designed to unify development for different targeted types of devices, including PCs, tablets, phablets, phones, and the Xbox.
- .NET: A cross-platform re-implementation of .NET Framework, introduced in 2016 and initially called .NET Core. It is free and open-source. Microsoft plans on merging .NET Framework into it.[2]
Each implementation of .NET includes the following components:
The .NET Standard is a set of common APIs that are implemented in the Base Class Library of any .NET implementation. The class library of each implementation must implements the .NET Standard, but may also implement additional APIs. Traditionally, .NET apps targeted a certain version of a .NET implementation, e.g. .NET Framework 4.6.[3][4] Starting with the .NET Standard, an app can target a version of the .NET Standard and then it could be used (without recompiling) by any implementation that supports that level of the standard. This enables portability across different .NET implementations.
The following table lists the .NET implementations that adhere to the .NET Standard and the version number at which each implementation became compliant with a given version of .NET Standard. For example, according to this table, .NET Core 3.0 was the first version of .NET Core that adhered to .NET Standard 2.1. This means that any version of .NET Core bigger than 3.0 (e.g. .NET Core 3.1) also adheres to .NET Standard 2.1.
Implementation | Versions of the .NET Standard[5][6] | ||||||||
---|---|---|---|---|---|---|---|---|---|
1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 | 2.1 | |
.NET | 1.0 | 2.0 | 3.0 | ||||||
.NET Framework | 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.7.2[lower-alpha 1] | 4.7.2[lower-alpha 1] | 4.7.2[lower-alpha 1] | N/A[lower-alpha 2] |
Mono | 4.6 | 5.4 | 6.2 | ||||||
Xamarin.iOS | 10.0 | 10.14 | 12.12 | ||||||
Xamarin.Mac | 3.0 | 3.8 | 5.12 | ||||||
Xamarin.Android | 7.0 | 8.0 | 9.3 | ||||||
Universal Windows Platform | 8[lower-alpha 3] | 8[lower-alpha 3] | 8.1[lower-alpha 3] | 10 | 10 | 10 v1709 | TBA | ||
Unity | 2018.1 | TBA | |||||||
Windows Phone | 8.1[lower-alpha 3] | N/A | |||||||
Windows Phone, via Silverlight | 8[lower-alpha 3] | N/A |
Web frameworks
- ASP.NET
- a server-side web application framework designed for web development to produce dynamic web pages. It is the successor to Microsoft's Active Server Pages (ASP) technology built on the Common Language Runtime (CLR). It provides separate patterns for developing web applications ASP.NET MVC, ASP.NET Web API, and ASP.NET Web Pages (a platform using only Razor pages), which have merged into a unified MVC 6.[7]
- ASP.NET Core
- a successor and re-implementation of ASP.NET as a modular web framework, together with other frameworks like Entity Framework. The framework uses the new open-source .NET Compiler Platform (codename "Roslyn") and is cross platform.
- Blazor
- a free and open-source web framework that enables developers to create Web apps using C# and HTML. Blazor Server apps are hosted on an ASP.NET Core server in ASP.NET Razor format, while Blazor WebAssembly apps are Single-page apps that are downloaded to the client's web browser before running.
Numerical libraries
Open-source numerical libraries
- AForge.NET
- a computer vision and artificial intelligence library. It implements a number of genetic, fuzzy logic and machine learning algorithms with several architectures of artificial neural networks with corresponding training algorithms.
- ALGLIB
- a cross-platform open source numerical analysis and data processing library. It consists of algorithm collections written in different programming languages (C++, C#, FreePascal, Delphi, VBA) and has dual licensing – commercial and GPL.
- Math.NET Numerics
- aims to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integral transforms and more. MIT/X11 license.[8]
- Meta.Numerics
- is a library for advanced scientific computation in the .NET Framework.
Proprietary numerical libraries
- ILNumerics.Net
- a commercial high performance, typesafe numerical array classes and functions for general math, FFT and linear algebra, aims .NET/mono, 32&64 bit, script-like syntax in C#, 2D & 3D plot controls, efficient memory management. Released under GPLv3 or commercial license.[8]
- Measurement Studio
- a commercial integrated suite UI controls and class libraries for use in developing test and measurement applications. The analysis class libraries provide various digital signal processing, signal filtering, signal generation, peak detection, and other general mathematical functionality.:NMath: Commercial numerical component libraries for the .NET platform by CenterSpace Software, including signal processing (FFT) classes, a linear algebra (LAPACK & BLAS) framework, and a statistics package.[8]
3D graphics
Open-source 3D graphics
- Open Toolkit (OpenTK)
- a low-level C# binding for OpenGL, OpenGL ES and OpenAL. It runs on Windows, Linux, Mac OS X, BSD, Android and iOS. It can be used standalone or integrated into a GUI.
- Windows Presentation Foundation (WPF)
- a graphical subsystem for rendering user interfaces, developed by Microsoft. It also contains a 3D rendering engine. In addition, interactive 2D content can be overlaid on 3D surfaces natively.[9][10] It only runs on Windows operating systems.
Proprietary 3D graphics
- Unity
- a cross-platform game engine developed by Unity Technologies[11] and used to develop video games for PC, consoles, mobile devices and websites.
Image processing
- AForge.NET
- a computer vision and artificial intelligence library.[12][13] It implements a number of image processing algorithms and filters. It is released under the LGPLv3 and partly GPLv3 license. Majority of the library is written in C# and thus cross-platform. Functionality of AForge.NET has been extended by the Accord.NET library.[14][15]
- Accord.NET
- another computer vision and artificial intelligence library, available under the Gnu Lesser General Public License, version 2.1. It is mainly written in C#.
Graphical user interface
- Gtk#
- C# wrappers around the underlying GTK+ and GNOME libraries, written in C and available on Linux, MacOS and Windows.[16]
- Windows Forms
- Microsoft's GUI framework. The original Microsoft implementation runs on Windows operating systems and provides access to Windows User Interface Common Controls by wrapping the Windows API in managed code.[17] The alternative Mono's implementation is open source and cross-platform (it runs on Windows, Linux, Unix and OS X). It is mainly compatible with the original implementation but not completely. The library is written in C# in order to avoid Windows dependence.[18]
- At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing of Windows Forms as open source project on GitHub. It is released under the MIT License. Windows Forms has become available for projects targeting the .NET framework. However, the framework is still available only on Windows platform and the Mono's incomplete implementation of WinForms remains the only cross-platform implementation.[19][20]
- Windows Presentation Foundation
- a graphical subsystem for rendering user interfaces in Windows-based applications by Microsoft. It is based on DirectX and employs XAML, an XML-based language, to define and link various interface elements.[21] WPF applications can be deployed as standalone desktop programs or hosted as an embedded object in a website.
- At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing of WPF as open source project on GitHub. It is released under the MIT License. Windows Presentation Foundation has become available for projects targeting the .NET framework. However, the system is still available only on Windows platform.[19][20]
- Windows UI Library (WinUI)
- a set of Microsoft UI controls and features for the Universal Windows Platform (UWP). At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing of WinUI as open source project on GitHub. WinUI has become available for projects targeting the .NET framework. It is released under the MIT License. However, the library is still available only on Windows platform.[19][20]
- Xamarin.Forms
- a cross-platform UI toolkit for development of native user interfaces that can be run on macOS, iOS, Android, and Universal Windows Platform apps. [22][23][16]
- .NET Multi-platform App UI (.NET MAUI)
- a cross-platform UI toolkit announced in May 2020 that originated as a fork of Xamarin.Forms and that can run on Android, iOS, Linux, macOS, Tizen, and Windows. .NET MAUI will run on .NET 6 and later.[24][25][26] The source code is licensed under MIT License and available on GitHub.[27]
Quality assurance
- NUnit
- an open source unit testing framework for .NET, written in C# and thus cross-platform. It is one of many programs in the xUnit family. Licensed under MIT License.
Object-relational mapping
.NET Framework natively provides utilities for object-relational mapping[28] through ADO.NET, a part of .NET stack since .NET 1.0. In addition, a number of third-party object-relational libraries have emerged, especially in earlier years of the .NET development, in order to fill some perceived gaps of the framework.[29][30][31]
As the framework has evolved, additional object-relational tools were added, such as the Entity Framework included with the .NET Framework 3.5. LINQ to SQL was also introduced with .NET 3.5. This somehow reduced significance and popularity of third-party object-relational libraries.
- Entity Framework
- an open source[32] object-relational mapping (ORM) framework for ADO.NET. It was a part of .NET Framework, but since Entity framework version 6 it is separated from .NET framework.
- NHibernate
- NHibernate is an object-relational mapper for the .NET platform.
Notes
- Nuget mistakely believes that .NET Framework 4.6.1 adheres to .NET Standard version 1.5 through 2.0.[5][6]
- There are no plans for the .NET Framework to support .NET Standard 2.1
- Microsoft has removed Windows 8, Windows 8.1, Windows Phone 8 and Windows Phone 8.1 from its tables, as they are deprecated.[lower-alpha 4] .NET Foundation has only removed Windows Phone 8.0 and 8.1.[lower-alpha 5]
- https://github.com/dotnet/docs/commit/619885c4b35ec37bc8312c6948e26cf74c17f66e?diff=unified
- https://github.com/dotnet/standard/commit/8a5b1ff513c85741c2e9484c8017bfcbfec4ac14?diff=unified
References
- Hanselman, Scott (4 December 2018). "Announcing WPF, WinForms, and WinUI are going Open Source". Scott Hanselman's Blog2.
- Lander, Richard (6 May 2019). "Introducing .NET 5". .NET Blog. Microsoft.
- Hanselman, Scott (2 April 2012). ".NET Versioning and Multi-Targeting - .NET 4.5 is an in-place upgrade to .NET 4.0". Scott Hanselman's Blog.
- "Multi-Targeting Guidelines for Tools for Managed Code [Mircea]". BCL Team Blog. Microsoft. 11 April 2012.
- ".NET Standard". docs.microsoft.com. Microsoft.
- "Versions.md". dotnet/standard repo. .NET Foundation. 3 April 2019.
- "Introduction to ASP.NET 5 — ASP.NET 0.0.1 documentation". asp.net.
- "Guide - Math and Statistics Programming with F#". fsharp.org. Archived from the original on 2016-04-25. Retrieved 2016-04-25.
- Introducing Windows Presentation Foundation
- "What's New in WPF 3.5? Here's Fifteen Cool Features..." Retrieved 2007-10-14.
- Riccitiello, John (October 23, 2014). "John Riccitiello sets out to identify the engine of growth for Unity Technologies (interview)". VentureBeat (Interview). Interviewed by Dean Takahashi. Retrieved January 18, 2015.
- S M Hassan Ahmed, Todd C Alexander, Georgios Anagnostopoulos (May 2015). "Real-time, Static and Dynamic Hand Gesture Recognition for Human-Computer Interaction". University of Miami. Retrieved 2018-11-26.CS1 maint: uses authors parameter (link)
- Suraj Verma, Prashant Pillai, Yim-Fun Hu (2012). "Development of an eye-tracking control system using AForge.NET framework". Int. J. Intelligent Systems Technologies and Applications, Vol. 11. Inderscience Enterprises. Archived from the original on 2018-11-26. Retrieved 2018-11-26.CS1 maint: uses authors parameter (link)
- Souza, César (20 May 2010). "Accord.NET Framework – An extension to AForge.NET". Retrieved 2018-11-26.
- "Framework Modules". Accord.NET Framework documetation. Archived from the original on 2018-11-26. Retrieved 2018-11-26.
- Lex Li. "The Story About .NET Cross Platform UI Frameworks". 3 July 2017. Archived from the original on 2018-11-26. Retrieved 2018-11-26.
- "C# 4.0 Unleashed By Bart De Smet. Sams Publishing, Jan 4, 2011 Chapter 5".
- "GUI Toolkits". Mono site. 21 April 2016. Archived from the original on 2016-04-02. Retrieved 2016-04-21.
- Martin, Jeff (4 December 2018). "Microsoft Open Sources WPF, WinForms, and WinUI". InfoQ. Retrieved 2018-12-06.
- Hanselman, Scott (4 December 2018). "Announcing WPF, WinForms, and WinUI are going Open Source". Retrieved 2018-12-06.
- MSDN.NET Development: WPF: XAML Overview
- "Xamarin.Forms Quickstart". Microsoft Docs. Microsoft. Retrieved 2018-11-26.
- Nathan Williams. "Xamarin.Forms is Much More Capable Than You Think". ArcTouch. Archived from the original on 2018-11-26. Retrieved 2018-11-26.
- "Introducing .NET Multi-platform App UI". .NET Blog. 2020-05-19. Retrieved 2020-05-28.
- "dotnet/maui". GitHub. Retrieved 2020-05-28.
- "Xamarin Updates From Microsoft Build 2020". Xamarin Blog. 2020-05-19. Retrieved 2020-05-28.
- GitHub - dotnet/maui: .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
- Ambler, Scott. "Mapping Objects to Relational Databases: O/R Mapping In Detail". Agile Data. Archived from the original on 2018-11-03. Retrieved 2018-11-03.
- Maksimovic, Zoran (November 2, 2017). "Microsoft.NET O/R mapper: choose your own!". agile-code.com. Archived from the original on 2018-11-03. Retrieved 2018-11-03.
- "List of ORM's available for .NET". Bala.NET Tips. WordPress. February 28, 2014. Retrieved 2018-11-03.
- "Object Relational Tool Comparison Dot Net". WikiWikiWeb. April 10, 2014. Archived from the original on 2018-11-03. Retrieved 2018-11-03.
- Krill, Paul (20 July 2012). "Microsoft open-sources Entity Framework". InfoWorld. Retrieved 24 July 2012.
External links
General:
- .NET Open Source Developer Projects, a list maintained at GitHub
Numerical libraries:
- The Math Forum - Math Libraries, an extensive list of mathematical libraries with short descriptions
- Guide - Math and Statistics Programming with F#
Data: