.NET Framework

from Wikipedia, the free encyclopedia

.NET Framework

Microsoft .NET logo.png
Basic data

developer Microsoft
Publishing year February 13, 2002
Current  version 4.8
(April 18, 2019)
operating system Windows
category platform
License EULA ( proprietary ) and partially Apache license 2.0 ( free or open source )
official website

The .NET Framework (also abbreviated to dotNetFx or just NetFx ) is part of Microsoft 's .NET software platform .

The components include development tools and interfaces as well as various class libraries (i.e. standard implementations of frequently required data structures and algorithms that can be used by the application developer, e.g. for file access, network communication, access to databases or the display of graphical user interfaces, etc.).

On the other hand, is part of the .NET Framework also as a common language runtime called runtime environment , which is essential for running applications that have been developed with the Framework: .NET applications are not an independently executable programs, because they are not directly in machine language translated that can be executed natively by a processor .

Programs that use the .NET Framework are usually delivered in such a way that required components of the framework are automatically installed . Users therefore only have to take care of the existence of the runtime environment themselves in exceptional cases. In addition, the framework has been set up for several years as part of the installation of the Microsoft Windows operating system , but the current version is not necessarily installed.

The purpose of the framework (or in the broader sense of the entire .NET ecosystem) is to increase application compatibility between different systems and platforms by merging previously incompatible Microsoft technologies and improving outdated standards. The framework serves as an abstraction layer. For developers, this has the advantage that applications developed for the .NET Framework can in principle be executed on all systems on which a corresponding runtime environment is available - without the need for system or platform-specific adjustments in the source code.

History of origin

The development of the .NET platform was seen as necessary to replace the aging Windows concepts with new ones, but it was also the result of Microsoft's legal dispute with Sun over Java . Microsoft had adapted the Java system developed by Sun and expanded it according to its own needs, which impaired the platform independence of Java applications. When Sun prevented that, among other things, by court order, Microsoft changed its strategy. In addition, until the development of .NET, Microsoft had not been able to gain a foothold in the lucrative market for small mobile devices.

In addition, various incompatible software systems for Windows had developed over time. The three programming languages ​​most commonly used for Windows, C ++ , Visual Basic, and Microsoft's implementation of a Java syntax, J ++, were not compatible with one another, and working together across different bridges turned out to be very complicated.

Strings and ANSI / Unicode

The data types for character strings were not binary compatible with each other. If you wanted to write these across two software systems, you had to accept runtime losses due to conversion functions. The coexistence of ANSI and Unicode made things even worse. Many programs do not support Unicode or have not yet been equipped for it. .NET uniformly uses Unicode for character strings.

Memory management

Each development platform had its own system for managing the memory. J ++ and Visual Basic had automatic memory management ; that is, the programmer left (largely) the management of the memory to the system. Visual C ++, on the other hand, had no memory management; the programmer had to take care of it himself.

Source Code Disclosure

On January 17th, 2008 Microsoft published the source code of the framework under the restrictive Microsoft Reference License . Microsoft decided to take this step back in October 2007 when Sun Microsystems made its Java product available under the GNU GPL with its own additional clauses.

At the end of 2013, Microsoft, Xamarin (Mono) and others founded the .NET Foundation as the new rights holder and licensor of the .NET Framework. Since then, almost all rights to the .NET class library have been transferred from Microsoft to the .NET Foundation . As of 2014, 30 projects are managed under the umbrella of the .NET Foundation .

Relationship to mono

Parts of the open source community saw the disclosure under the restrictive license at the time as a threat to the Mono project , which makes .NET applications partially available under Linux. Microsoft still claimed in 2007 that the project contained source code from the .NET framework. Since the framework and Mono implement .NET equally , there is a fear that there will be strong similarities in the source code.

The controversial patent agreement between Microsoft and Novell (the former promoter of Mono ) currently protects both the Novell community and Microsoft from mutual patent claims.

With the establishment of the .NET Foundation and the transfer of rights and source codes to the Foundation, Microsoft is actively working with Xamarin (Mono) to provide .NET on different platforms. As the source code is disclosed under the MIT license or Apache 2.0 license, the source code of the .NET framework can be used in almost any way - i.e. also in closed source projects. Licensing and patent law disputes are hardly possible anymore and therefore no longer to be feared.

Chronicle of the .NET Framework development

year Events
  • June - Bill Gates introduces the .NET vision for the first time.
  • July - At the PDC developer conference , CDs are available for the first time with executable preliminary versions of the framework and Visual Studio .NET
  • October - C # and the CLI (see below) are submitted (by MS, HP and Intel) to the European standards organization European Computer Manufacturers Association (ECMA) , which is an unusual step in opening up for Microsoft.
  • January - .NET (V1.0) is officially presented with the associated development environment SDK (and Visual Studio .NET 2002).
  • Confusion: In the course of marketing, Microsoft's habit is to try to summarize all upcoming new developments under one, the .NET term, which means that even experts, including Microsoft employees, no longer understand what it is actually about. The programming technology and development environment are initially connected to specific web services offered by Microsoft (code name Hailstorm becomes .Net My Services) and later decoupled from .NET again by marketing. The next generation of Windows operating systems is also announced as part of .NET.
  • Presentation of .NET 1.1 and Visual Studio 2003 with essentially minor improvements and enhancements.
  • Beta versions of .NET 2.0 and Visual Studio 2005 available
  • November 7th: Visual Studio 2005 and .NET Framework 2.0. are released in the USA.
  • December 19: German version of the .NET Framework 2.0 available
  • February 6th: Visual Studio 2005 is published in German.
  • November 6th: .NET Framework 3.0 available
  • First reports about .NET 3.5 and the new Visual Studio 2008 with the code name "Orcas"
  • November 19: .NET 3.5 and Visual Studio 2008 are released in the US.
  • January 17th: The .NET Framework is published in the source code for "easier debugging ".
  • February: Visual Studio 2008, Microsoft SQL Server 2008, and Windows Server 2008 are released.
  • May 18: .NET 4.0 Beta 1 released
  • October 19: .NET 4.0 Beta 2 released
  • February 10: .NET 4.0 RC released.
  • April 12th: .NET 4.0 and Visual Studio 2010 released in final version
  • May 31: .NET 4.5 RC released
  • August 15th: .NET 4.5 (Final) released
  • October 12th: .NET 4.5.1 (Final) released
  • May 5th: .NET 4.5.2 (Final) released
  • July 20th: .NET 4.6 (Final) released
  • November 17th: .NET 4.6.1 (Final) released
  • July 20th: .NET 4.6.2 (Final) released
  • April 5: .NET 4.7 released as part of the Windows 10 Creators Update
  • May 2nd: .NET 4.7 released as a standalone installation
  • October 17th .NET 4.7.1 released
  • April 30th: .NET 4.7.2 released
  • April 18th: .NET 4.8 released

Concept and components

The .NET platform is the implementation of the Common Language Infrastructure Standard (CLI) and with this represents a basis for the development and execution of programs that have been created with different programming languages ​​on different platforms. The main components are the (object-oriented) runtime environment Common Language Runtime (CLR) , the Base Class Library (BCL) and various auxiliary programs, for example for rights management.

With .NET, Microsoft replaced previously used software development concepts such as the Component Object Model until it reactivated COM in an extended form under the name Windows Runtime . Since then, Microsoft has been planning the parallel use of both frameworks for the Windows 8 operating system generation .

Common language runtime

The Common Language Runtime (CLR) is the runtime environment of the .NET Framework and contains the JIT compiler for the standardized intermediate code , the Common Intermediate Language (CIL). The CIL was formerly called Microsoft Intermediate Language (MSIL) , but was renamed as part of the standardization by Ecma International . A cross-language system of object-based data types was defined for them, so that valid CIL bytecode can be created for all high-level languages ​​that adhere to the Common Language Infrastructure Standard (CLI) .

.NET was developed right from the start so that programmers could work in different programming languages. Each of these high-level languages ​​is then translated into the CIL by .NET.

The special thing about the CLR is less the technical innovation than the strategic decision by Microsoft for a runtime-based system . Among other things, it should help to reduce system crashes, since the runtime can catch application errors. This was the first time Microsoft decided against the previously used direct compilation into the machine code of the target system. Together with the market power of Java and the success of scripting languages , a trend can be identified. This represents a break with the direct compiling programming languages ​​(especially C ++ and C ).

Using reflection , it is possible to generate program code via an object model at runtime and to convert it directly into executable code in the memory.

The .NET terminology distinguishes between bytecode , which is managed by the CLR and converted into machine language ( managed code ), and parts that are not executed within the CLR ( not managed ). There is also the option of writing so-called unsafe code (or code in an unsafe context ) in .NET in order to continue to e.g. B. classical pointer - operations to perform directly on a storage area.

Interop technology

Interop technology

With the help of interop technology , all classic, binary compiled Windows libraries can be provided with .NET capsules (or with so-called wrappers ) and then their program functions can be called up like normal .NET program functions . From a technical point of view, however, the CLR relinquishes a large part of the control over the program flow when a function of an unmonitored DLL is called.

Conversely, .NET functions such as COM functions can also be called. This should enable a smooth migration of software projects to .NET and facilitate the integration of .NET modules into an existing environment.


One of the most important concepts of .NET is security. The security concept begins with mechanisms that are supposed to guarantee the identity of the program manufacturer ( authenticity ), goes on to those to protect the programs against change ( integrity ) and extends to techniques that determine the place of origin or program execution (e.g. the Internet ) include. There is both a code-based (code-based security) and a user -based (role-based security) security model.


An innovation of .NET that is interesting in terms of programming is the introduction of attributes : marked metadata as part of the programming language. For example, component properties can be expressed in the context of component-based programming. Descriptive properties can be added to the code for distribution, installation and configuration, security, transactions, and other programs.

Within a program, reflection can be used to access the attributes of a .NET program and the elements it contains.

This concept was later adopted in Java, among others, where it is implemented in the form of so-called annotations .

Distributed programming and web services

.NET from version 3.0 contains the Windows Communication Foundation for communication in distributed systems. These give developers the opportunity to solve problems that could previously be solved with the following technologies of the .NET Framework using a uniform programming model.

  • ASP.NET Web Services (ASMX) with Web Service Enhancements (WSE) extensions
  • Microsoft Message Queue (MSMQ)
  • Enterprise Services / COM + runtime environment
  • .NET remoting

Language neutrality and mixed language programming

The Common Language Specification (CLS) defines the bytecode of the CIL as a common subset , which can be translated and executed by the virtual runtime environment ( VM ) into the machine code of the target machine. It is thus possible to program .NET with different languages ​​adapted to the CLR. For example, these are already supplied by Microsoft in Visual Studio , in addition to the C # language introduced by Microsoft for .NET , the C ++ / CLI languages , the proprietary Visual Basic .NET and J # (a port of Microsoft's modified Java implementation) and finally - not to be confused with J # - JScript .NET . In addition, the functional programming language F # was introduced with Visual Studio 2010 .

In particular, the unified type system (Common Type System) , which describes a common intersection of data types , ensures smooth interaction when calling components written in another language. This represents an important step forward, since under Visual Basic 6 you may have been forced to program functions in Visual C ++ that could not be implemented in Visual Basic. In this case, there were always difficulties in mapping the data types from Visual Basic to the corresponding data types under C ++. When programming COM components in C ++, the programmer also had to make do with a limited set of data types that could be used for automation. In addition, character strings were stored differently internally under C ++ and Visual Basic 6, which made programming difficult.

The benefits of .NET multilingual programming support are not undisputed. For example, the maintainability of a project that has been implemented in several languages ​​is worse than when developing with just one language.

In addition to the languages C # , Visual Basic .NET , F # and C ++ / CLI (Managed C ++) adapted by Microsoft for the .NET platform , other .NET languages ​​are made available by third parties ( e.g. Delphi Prism from Embarcadero , but also less known languages ​​like APL from Dyalog).

The IDE provided by Microsoft for .NET , Visual Studio .NET , offers the option of integrating additional languages ​​from third-party providers into a project and thus using their functionality. The fact that development takes place in a consistent development environment and that there is not a separate IDE for each language is an additional advantage.

Platform independence

The desired platform independence would in principle be possible under .NET, Microsoft itself had made a restricted (and no longer current) .NET variant available for the first version of .NET called Shared Source CLI ( SSCLI ) for macOS and FreeBSD in 2002 . Version 2.0 of SSCLI for .NET 2.0 followed in 2006, but can only run on Windows XP SP2.

Several open source projects, quasi independent of Microsoft, have adopted a correspondingly flexible implementation of the framework components based on the ECMA standard. The most developed project is Mono , which was initiated by the manufacturer Ximian. The dotGNU project, which was working on a runtime environment called Portable.NET , was discontinued.

However, both implementations are not yet at the development level of today's .NET. Mono has reached an important milestone with version 2.0, namely compatibility with the non-Windows-specific libraries of .NET 2.0. On the other hand, there are many programs that use P-Invoke or COM Interop; H. access libraries that are not available in IL code but in normal, processor-specific machine code. Mono can also access libraries written in C or C ++, but most of these libraries are platform-dependent. Furthermore, Microsoft has published serious further developments of the framework with .NET 3.0 and .NET 3.5, which Mono and dotGNU have not yet implemented or only partially implemented, but are in progress. The Windows Presentation Foundation , which will not be reimplemented for the foreseeable future, was explicitly excluded . However, there will still be support for XAML .

Runtime environment

As mentioned above, managed or managed code is managed by the common language runtime environment (CLR). This virtual machine accepts the request and release of memory and other resources ( garbage collection , Eng. Garbage collection ) and ensures that protected memory areas can not be addressed directly or overwritten. As described above under Security , access to services, file system functions or devices can also be monitored and, if they violate security guidelines, can be rejected by the CLR.

Execution speed

For the success of .NET it was and is important to win the developer community of C ++ for .NET. As a result, speed was a key design goal with .NET from the start.

Various techniques are used to try to keep the negative influence of the CLR on the execution speed as small as possible. For example, so-called JIT compilers were introduced analogous to Java , which strike a middle ground between interpretation and compilation. In addition, with .NET you can also install programs in already compiled code as a so-called native image . This has a particular effect on the initial loading times for programs with larger number of classes. Furthermore, the memory requirement can be reduced if several programs use the same assembly or if the program is started several times ( terminal server ), since the native images, in contrast to JIT code , are shared between the programs via shared memory . The gain in execution speed through native images must be analyzed through careful measurements (“profiling”). The use of native images requires further planning steps in the development of the software, for example a careful selection of the DLL base address of the assemblies in order to prevent relocation of the DLLs. Finally, the assemblies must also be installed in the GAC in order to be able to guarantee the integrity of the images based on the identity. If this is not observed, the relocation or the identity check of the assembly leads to further execution times, which again destroy the advantage of the native images.

However, the automatic resource management and the improved security come at a price - the execution of managed code requires more resources and takes more time. In addition, the response times to program events are much more difficult to calculate and, in some cases, significantly longer, which severely limits the applicability in real-time systems .

One reason for this is automatic garbage collection, automatic reclamation of unneeded memory and other resources. As a rule, the garbage collector decides when the memory should be cleaned up. However, the developer can also determine the time of the garbage collection himself. While on the one hand this can reduce the execution time of program runs by combining the release operations, on the other hand the response times to events can be affected. This is particularly disadvantageous for smaller machines and represents a problem, especially with regard to the market orientation towards small mobile devices.

.NET is now also used in performance-critical programs, for example computer games (for example with the XNA Framework ), animation programs, construction programs and similar, highly complex programs, since many programmers are of the opinion that current systems, due to their higher speed, are due to .NET Compensate for loss of performance.

On the other hand, there is the opinion that the quality and efficiency of traditional software development leave a lot to be desired and that the related advantages of the above methods usually outweigh their disadvantages. In general, it is assumed that the distribution is asymmetrical, that for example 90 percent of an average application can be "managed" without any problems, that is, can also be executed with automatic garbage collection, and only 10 percent (for example individual functions or classes) need to be optimized.

Last but not least, programs can also be optimized in terms of execution speed in conjunction with automatic garbage collection.

Class library

The Framework Class Library (FCL) includes e.g. B. in version 3.5 there are around 11,400 classes and other data types, which are divided into more than 300 so-called namespaces . Compared to the first version 1.0 with 3,581 data types in 124 namespaces, this is a significant increase. The classes perform tasks such as formatting text, sending e-mails, but also generating code. The subdivision into namespaces is used to make the large amount of information clearer. For example, there are classes for generating code in the namespace System.Reflection.Emit.

The manufacturer supplies the documentation for the classes in its Software Development Kit (SDK) (see below).

Program execution

The compiler for .NET languages ​​does not generate machine code that can be executed directly by the processor. Instead, a processor- unspecific intermediate code , the so-called Intermediate Language Code ( Intermediate Language Code , IL code) is generated. This consists of commands that are executed on the stack-based virtual machine (VM). The resulting programs (“.exe files”) have the PE header like native Windows programs . A small routine at the beginning of the program enables the virtual machine to be started, which in turn executes the intermediate code.

When the program is executed, a JIT compiler contained in the common language runtime (CLR) environment translates the intermediate code into machine code that can then be executed directly by the processor.

Since code from all .NET languages ​​is translated into the same intermediate language, functions and class libraries written in different .NET languages ​​can be used together in one program without any problems.


Translated program classes are summarized and made available as executable programs in so-called assemblies (comparable to JAR files in Java ). These typically have the extensions .exe or .dll and are valid portable executables , but are structured differently. In particular, all necessary metadata are listed in the so-called manifest , so that registration is generally not required for pure .NET programs (exception, for example, COM + / Enterprise Services ).

Assemblies can either privately , in common (shared) or globally to be. Private assemblies are in the same directory as the program to be run. It is therefore assumed that the version of the assembly is compatible with the program and is therefore not checked by the CLR.

A shared assembly can be located in a directory that is accessed by several programs. Therefore, a so-called strong name is required for a common assembly , consisting of the file name of the assembly, its version, the culture - which defines the localization - and a cryptographic key. The storage location of the common assemblies can be communicated to the application by means of a configuration file, which is located in the directory of the program. A strong name can be created using the sn tool .

A global assembly is stored in the global assembly cache (GAC). Assemblies can be added to the GAC using the gacutil tool . Assemblies with different versions and cultures can be saved within the GAC. Configuration files can be used to determine which versions of an assembly should be used by the application. If no entry is made, only the version used when the application was created is used. If this is not available, an error message is issued when the program is started.

Current Windows versions have an Explorer extension, which enables a meaningful display of the contents of the GAC in Windows Explorer .

Availability, standardization, alternative products

.NET is fully available only for Windows . On January 17, 2008, Microsoft released parts of the source code for Windows developers . Large parts of .NET, especially the runtime and class libraries were, under the name Common Language Infrastructure (CLI) as ECMA - Standard normalized. Due to the standardization of the runtime environment, there are alternative products that can execute software that was created with .NET or create software for .NET. Many programs that were created with .NET, for example, also run on Unix-based operating systems such as , thanks to the software made available by the Mono open source project . As Linux or Mac OS X .

The manufacturer Microsoft offers .NET in different forms. As a pure runtime environment including the required class libraries (framework), as a free SDK for developers, as a paid integrated development environment ( IDE ) in the form of Microsoft Visual Studio .NET . Especially for beginners and students there are the free Microsoft Visual Studio Express Editions with restrictions compared to the fee-based standard or professional versions. Another free IDE for .NET (and Mono) under Windows can be found in the open source project SharpDevelop . Microsoft continues to offer students the opportunity to purchase the Professional version of Visual Studio free of charge through the DreamSpark program.

Since Windows Server 2003 , Microsoft has also been offering server operating systems that have already integrated a .NET runtime environment. In the case of previous versions, this must be installed manually if the Windows variant in question is supported. .NET can only be used from Windows NT 4.0 or Windows 98, the programming of web applications ( ASP.NET ), for example, only runs from Windows 2000. From Windows Vista .NET is a core component of the system. On non-Windows systems, .NET is not officially supported by Microsoft - so platform independence remains in the list of possibilities of .NET. However, there are the aforementioned open source projects that make .NET available for other platforms (e.g. Linux) even if they cannot offer the full range of functions of the .NET framework under Windows.



Microsoft began developing the .NET Framework in the late 1990s, originally called Next Generation Windows Services (NGWS) . Towards the end of 2000, the first beta versions of .NET 1.0 were released.

The .NET Framework hierarchy
version Version number date contained in
1.0 1.0.3705.0 January 5, 2002 -
1.1 1.1.4322.573 April 1, 2003 Windows Server 2003
2.0 2.0.50727.42 November 7, 2005 Windows Server 2003 R2
3.0 3.0.4506.30 November 6, 2006 Windows Vista , Windows Server 2008
3.5 3.5.21022.8 November 9, 2007 Windows Server 2008 R2
3.5 SP 1 3.5.30729.1 August 11, 2008 Windows 7 with SP1
4.0 4.0.30319 April 12, 2010 -
4.5 4.5.50501 August 15, 2012 Windows 8 , Windows Server 2012
4.5.1 4.5.50938 October 12, 2013 Windows 8.1 , Windows Server 2012 R2
4.5.2 4.5.51090 May 5, 2014 Windows 8.1 , Windows Server 2012 R2
4.6 4.6.00081 July 10, 2015 Windows 10 , Windows Server 2016
4.6.1 17th November 2015
4.6.2 20th July 2016
4.7 April 11, 2017
4.7.1 October 13, 2017
4.7.2 4.7.3081.0 July 10, 2018 Windows Server 2019
4.8 4.8.3761.0 April 18, 2019

.NET Framework 1.0

Version 1.0 is the first release of the .NET Framework. It was released on February 13, 2002 for Windows 98 , NT 4.0 , 2000 and XP . Microsoft's support for this version ended on July 10, 2007, and extended support continued until July 14, 2009.

.NET Framework 1.1

The first .NET extension was released as an installer on April 3, 2003. It was also sold as an integral part of the Visual Studio .NET 2003 development environment. Version 1.1 was the first version of .NET that was shipped together with an operating system, namely Windows Server 2003 . This was even called Windows .NET Server up to the release candidate . Official support for this version ended on October 14, 2008, and extended support ended on October 8, 2013. Because .NET 1.1 is a component of Windows Server 2003 , extended support ended with support for this operating system on July 14th 2015 from.

Changes in 1.1 compared to 1.0
  • Built-in support for ASP.NET mobile buttons. Previously available as an add-on for the .NET framework, now part of the framework
  • Changes in the security architecture - Windows Forms assemblies from the Internet are executed in a sandbox, and Code Access Security has also been activated for ASP.NET applications .
  • Built-in support for ODBC and Oracle databases, previously available as an add-on for .NET 1.0, now part of the framework
  • Introduction of Internet Protocol Version 6 ( IPv6 )
  • Various changes in the API

.NET Framework 2.0

.NET 2.0 was released together with Visual Studio 2005 , Microsoft SQL Server 2005, and Microsoft BizTalk 2006.

Changes in 2.0 compared to 1.1
  • Numerous changes in the API
  • A new API for native applications that want to host an instance of the .NET runtime. The new API ensures finely structured control over the behavior of the runtime with regard to multithreading, memory allocation , loading of assemblies and more. It was originally developed to run the runtime efficiently in Microsoft SQL Server , which implements its own scheduler and memory management.
  • Full 64-bit support for the x64 and all IA64 platforms
  • Language support for generic types built into the .NET CLR
  • Many additions and improvements to ASP.NET web buttons
  • New data control with declarative data binding
  • New personalizing features for ASP.NET, for example support for themes, skins and web parts

.NET Framework 3.0

.NET Framework 3.0 , formerly called WinFX , extends the Managed API, which is an integral part of the Windows Vista and Windows Server 2008 operating systems. The .NET Framework 3.0 for Windows XP from Service Pack 2 and for Windows Server 2003 has been available since November 6, 2006 to enable developers to develop and port programs to Vista in good time. In the third major version of .NET, profound changes were made to the architecture. In addition, there are functions that are to be used primarily under Windows Vista . The .NET Framework 3.0 uses the CLR from .NET 2.0.

The .NET Framework 3.0 includes four new main components:

  • Windows Presentation Foundation (developed under the code name Avalon ): A new technique fordisplayingobjectson the screenusing the description language XAML, which was specially developed for this purpose. As with Quartz Extreme under Mac OS X , transparency effects, for example, are notcalculatedwith the CPU , but rather via the 3D graphics card to increase performance. This relieves the CPU and also makes the system look more "fluid".
  • Windows Communication Foundation (developed under the code name Indigo ): A new service-oriented communication platform for distributed applications. Microsoft wants to combine many network functions here and make them available to the programmers of such applications in a standardized way. In this further development of DCOM , Microsoft attaches particular importance to Internet-based applications.
  • Windows Workflow Foundation : Infrastructure for the easier development of workflow applications, both in business and technical terms, but also for document and web-based workflows. Also offers graphic designers for Visual Studio (modeling using flow and state diagrams). Functions of this are to be used in future versions of Office ( SharePoint ) and BizTalk , among others.
  • Windows CardSpace (developed under the code name InfoCard ): Identity management infrastructure for distributed applications. With Windows CardSpace , Microsoft wants to establish a new standard for identity management, including on the Internet. Already integrated inits own browser Internet Explorer (version 7), Microsoft also wants todevelop plug-ins for alternative browsersfor this service, but at least for Mozilla Firefox .

For the preliminary demonstration of the new .NET Framework, Microsoft presented the Microsoft Max photo service . When the final version was released, the service was discontinued.

.NET Framework 3.5

Version 3.5 of the .NET Framework was released on November 19, 2007. It uses the CLR from version 2.0. With version 3.5, the .NET Framework 2.0 SP1 and .NET Framework 3.0 SP1 are installed at the same time .

Version 3.5 SP1 (August 11, 2008) added the ADO.NET Entity Framework 1.0 and ADO.NET Data Services to the library. With version 3.5 SP1, the .NET Framework 2.0 SP2 and .NET Framework 3.0 SP2 are installed at the same time . On December 18, 2008, a general distribution release was published that only contains bug fixes.

The source code of the class library (BCL) was partially released under the Microsoft Reference Source License .

Changes since version 3.0

.NET Framework 4.0

Microsoft first announced information on the .NET Framework 4 on September 29, 2008 and at the Professional Developers Conference (PDC 2008) . The first beta version of .NET 4 was released on May 18, 2009. A second beta version followed on October 19, 2009. The release of the .NET framework together with the Microsoft Visual Studio 2010 development environment was originally planned for March 22, 2010. However, in order to have more time for further optimizations required by users of Beta 2 of Microsoft Visual Studio 2010, Microsoft announced in December 2009 that the release of .NET 4 and Visual Studio 2010 would be postponed by a few weeks. On February 10, 2010 the "Release Candidate" appeared. The final version of .NET 4 and Visual Studio 2010 in the English language version was finally released by Microsoft on April 12, 2010.

The most important innovations in .NET Framework 4 included:

  • Dynamic Language Runtime
  • Code contracts
  • Support for covariance and contravariance through generic interfaces and delegates
  • Managed Extensibility Framework
  • Support for memory dump files
  • Automatic garbage collection in the background
  • New programming model for writing multithreaded and asynchronous code
  • Improved performance, scalability and workflow modeling as well as new designers for the Windows Workflow Foundation
  • Version 4.0 is the last version that will support Windows XP and Windows Server 2003 .

.NET Framework 4.5

Microsoft announced the first information about .NET Framework 4.5 at the BUILD Windows conference on September 14, 2011. The final version was released on August 15, 2012.

With version 4.5, Microsoft has stopped providing two separate installation packages, a full package and a client profile with reduced functionality . The reason for this is that the Client Profile installation package only saves an insignificant 7 MB of downloads, but often caused uncertainty among the user about the right choice. In addition to some small improvements (including the performance of the JIT compiler), support for asynchronous method calls has been added through new keywords in C # (async, await) and Visual Basic (async, await).

.NET Framework 4.5.1

With version 4.5.1, some minor improvements were made again, and a new 2013 version of Visual Studio was released.

.NET Framework 4.5.2

With version 4.5.2, minor improvements were made to the high-DPI display.

.NET Framework 4.6

With version 4.6. a. the performance of the 64-bit JIT compiler improved and extensive changes made to base class libraries.

Version 4.6 will be the last version that will support Windows Vista and Windows Server 2008 .

.NET Framework 4.6.1

Version 4.6.1 brings fixes and new features.

.NET Framework 4.6.2

Version 4.6.2 brings fixes and new features.

.NET Framework 4.7

Version 4.7 brings fixes and new features:

  • Improved security support with Transport Layer Security (TLS), especially version 1.2
  • Improved support for encryption with Elliptic Curve Cryptography
  • Support for high-DPI size detection in Windows Forms
  • Finer detection of "touch and stylus" in the Windows Presentation Foundation (WPF)
  • New printer interface for WPF

A preview version was delivered in the Windows Insider Program of Windows 10 from January 2017.

The final version was delivered together with the Creators Update for Windows 10, which was released on April 11th.

On May 2, 2017, .NET 4.7 for Windows 7 with Service Pack 1 , Windows 8.1 , Windows 10 with the Anniversary Update (1607), Windows Server 2008 R2 with Service Pack 1, Windows Server 2012 , Windows Server 2012 R2 and Windows Server Released in 2016 .

.NET Framework 4.7.1

On October 13, 2017, .NET 4.7.1 for Windows 7 with Service Pack 1, Windows 8.1, Windows 10 with the Fall Creators Update (version 1709), Windows Server 2008 R2 with Service Pack 1, Windows Server 2012, Windows Server 2012 R2 and Windows Server 2016 released.

.NET Framework 4.7.1 supports .NET Standard 2.0 if additional .NET Standard support files (dotnet-standard-support-vs2015-2.0.0-win-x86.msi) are installed.

.NET Framework 4.7.2

On April 30, 2018, .NET 4.7.2 for Windows 7 with Service Pack 1, Windows 8.1, Windows 10 with the Spring Creators Update (version 1803), Windows Server 2008 R2 with Service Pack 1, Windows Server 2012, Windows Server 2012 R2 and Windows Server 2016 announced.

.NET Framework 4.7.2 builds on earlier versions of .NET Framework 4.x. Visual Studio applications from 2012 onwards are supported.

.NET Framework 4.8.0

.Net 4.8 was officially released on April 18, 2019. The following Windows versions are supported: Windows 7, Windows 8.1, Windows 10, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016 and Windows Server 2019

Version 4.8.0 is automatically delivered with Windows 10 Update v1903.

The Just in Time Compiler of .NET 4.8 is based on .NET Core 2.1. All bug fixes and many code generation based performance optimizations of .NET Core 2.1 are now also available in the .NET Framework.

Version 4.8 brings fixes and new features:

  • Runtime - JIT improvement
  • BCL - use of the current ZLib
  • Adjustments for monitors with different high DPI resolutions


.NET Compact Framework

For handhelds and mobile phones that run under Windows CE or Windows Mobile , there is a functionally reduced version of the .NET runtime environment in the form of the .NET Compact Framework. However, it can only be developed for this platform using the fee-based Visual Studio .NET 2003 or newer. The .NET Compact Framework 3.5 was published at the same time as version 3.5 of .NET .

.NET Micro Framework

In September 2006 Microsoft also presented the .NET Micro Framework. It represents an even more restricted version of the .NET framework especially for embedded devices. Depending on the platform, the framework should take up between 512 KByte and 1 MByte on the device and can be started directly from the flash memory or the ROM. In this case, the Micro Framework works as an operating system , but it can also be based on an existing Windows operating system.


Silverlight (formerly WPF / E ) contains a greatly reduced subset of the .NET Framework and is essentially intended to enable web browsers to run extensive Internet applications based on WPF . Normal programs based on WPF are also "web-enabled", but require the complete .NET 3.0, which is currently only available for Windows. However, Silverlight should also be made available for Mac OS, older PCs with Windows and Linux.

.NET Core

On November 12, 2014, a subset of the reference source code was hosted on GitHub and published under the MIT license . This was also done to support the Mono project so that gaps between Mono and .NET can be bridged by using the same code. This repository relates to the .NET Framework 4.6 and therefore only has read access. At the same time, Microsoft published the revised components of the framework under the name .NET Core on GitHub, also under MIT license. .NET Core allows participation by the community and has been transferred by Microsoft to the .NET Foundation , which was founded in 2014 . By using the MIT license, there are in fact no restrictions on how the .NET Core source code can be used. The published components also include tools for software development at the command line level and ASP.NET (further development in a modified form as ASP.NET Core). .NET Core can also run on Linux and MacOS X. In November 2020 .NET Core, .NET Framework and Mono are to be merged as a uniform platform under the name .NET 5.0.

See also


  • Wolfgang Beer et al .: The .NET technology: Fundamentals and application programming. dpunkt Verlag 2006, ISBN 978-3-89864-421-1 .
  • Dino Esposito, Andrea Saltarello: Architecting Applications for the Enterprise: Microsoft .NET. Microsoft Press, Second Edition 2014, ISBN 978-0-7356-8535-2 .
  • Jürgen Kotz et al: .NET 3.0. WPF, WCF and WF - an overview ; Addison-Wesley, Munich February 2007, ISBN 3-8273-2493-9 .
  • Daniel Liebhart among others: Architecture Blueprints ; Hanser Verlag, 2007, ISBN 978-3-446-41201-9 .
  • Jeffrey Richter: Microsoft .NET Framework Programming in C #. Expert knowledge of the CLR and the .NET Framework 2.0. Microsoft Press, 2nd edition 2006, ISBN 978-3-86063-984-9 .
  • Holger Schwichtenberg: Microsoft .NET 2.0 crash course. Microsoft Press, Unterschleißheim 2006, ISBN 3-86063-987-0 .
  • Holger Schwichtenberg: Microsoft .NET 3.0 crash course. Microsoft Press, Unterschleißheim 2007, ISBN 3-86645-501-1 .
  • Holger Schwichtenberg among others: Microsoft .NET 4.5 Update. Microsoft Press 2012, ISBN 978-3-86645-468-2 .

Web links

Individual evidence

  1. Announcing the .NET Framework 4.8. Microsoft , April 18, 2019, accessed April 20, 2019 .
  2. ^ Project Roslyn: Microsoft releases .Net compiler platform code - Golem , April 3, 2014; u. a. with "Interested parties can now take a closer look at the compilers for C # and Visual Basic."
  3. Language compilers for C # and Visual Basic are now open source - Heise , April 4th, 2014
  4. Microsoft® .NET Framework Version 1.1 Redistributable Package - Microsoft , on August 17, 2012; u. a. with "dotnetfx.exe" (if the so-called details are opened via the "+" sign, which may require execution permission for JavaScript )
  5. Immo Landwerth: Introducing .NET Standard. In: .NET Blog. Microsoft, September 26, 2016, accessed September 24, 2019 .
  6. .NET Foundation Projects. .NET Foundation, accessed November 13, 2014 .
  7. Microsoft's Open Source Trap (Engl.)
  8. What customers want: Microsoft and Novell cooperate - article at Heise open , November 3, 2006
  9. .NET Framework Blog - Announcing .NET 2015 Preview: A New Era for .NET. Microsoft, accessed November 13, 2014 .
  10. What is “managed code”? - Microsoft Docs , first published June 20, 2016; u. a. also with "unmanaged code" and "insecure context"
  11. Introduction to Building Windows Communication Foundation Services. (No longer available online.) Microsoft, archived from the original on September 23, 2012 ; accessed on September 23, 2012 (English).
  12. ^ Brad Abrams: Number of Types in the .NET Framework
  13. ScottGu's Blog (Corporate Vice President in the Microsoft Developer Division )
  14. Microsoft Support Lifecycle - .NET Framework 1.0. Retrieved November 21, 2013 .
  15. Windows .NET Server - The big preview of the RC 1 - Report at Windows-Tweaks Info ; Status: September 13, 2011, accessed on May 16, 2012
  16. Microsoft Support Lifecycle - .NET Framework 1.1. Retrieved November 21, 2013 .
  17. Microsoft Support Lifecycle - Windows Server 2003. Retrieved March 6, 2014 .
  18. itmagazine.ch : Microsoft brings Identity Management for Firefox
  19. GDR (General Distribution Release)
  20. Extended Beta for Visual Studio 2010 - "Release Candidate" in February 2010 - Visual Studio News Blog , December 18, 2009
  21. Visual Studio 2010 and .NET 4 published - article online at Heise. April 12, 2010
  22. ↑ What's New in .NET Framework 4
  23. Parallel programming in .NET Framework
  24. ↑ What's New in Windows Workflow Foundation
  25. ^ Microsoft (MSDN): Announcing the release of .NET Framework 4.5 RTM
  26. Microsoft: .NET Framework Client Profile
  27. Blogspot: .Net 4.5-The End of Microsoft .Net Framework Client Profile
  28. msdn.microsoft.com
  29. ↑ What's new in .NET 2015 RC , microsoft.com library 2015.
  30. Microsoft .NET Framework 4.6.1 (offline installer). Retrieved June 14, 2018 .
  31. Introducing the .NET Framework 4.6.1 , MSDN Library
  32. Introducing the .NET Framework 4.6.2 , MSDN Library
  33. Announcing the .NET Framework 4.7. Microsoft , April 5, 2017, accessed May 2, 2017 .
  34. Yusuf Mehdi: Windows 10 Creators Update coming April 11, Surface expands to more markets. Microsoft , March 29, 2017, accessed May 2, 2017 .
  35. Microsoft .NET Framework 4.7 (offline installer) for Windows 7 SP1, Windows 8.1, Windows 10 Anniversary Update, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2 and Windows Server 2016. Microsoft , May 2, 2017, accessed on 2nd May 2017 .
  36. Microsoft .NET Framework 4.7.1 (offline installer) for Windows 7 SP1, Windows 8.1, Windows 10 Anniversary Update, Windows 10 Creators Update, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2 and Windows Server 2016 - Microsoft Download Center on October 13, 2017; u. a. with "date of publication" (if the so-called details are opened using the "+" sign, which may require execution permission for JavaScript )
  37. Announcing the .NET Framework 4.7.1 (English) - Announcement on Microsoft's NET Blog , by Preeti Krishna , on October 17, 2017
  38. Announcing the .NET Framework 4.7.2. April 30, 2018, accessed August 25, 2018 .
  39. Announcing the .NET Framework 4.8. April 18, 2019, Retrieved July 12, 2019 (American English).
  40. Microsoft Reference Source on GitHub. Microsoft, accessed November 13, 2014 .
  41. The .NET blog (AKA: dotnet blog) discusses new features in the .NET Framework and important issues for .NET developers.
  42. .NET Core on GitHub. Microsoft, accessed November 13, 2014 .
  43. Alexander Neumann: .NET Core 1.0 and ASP.NET Core 1.0: Version change implies a new beginning , in: heise online from January 20, 2016, accessed on January 21, 2016.
  44. ASP.NET 5 Is Dead- Introducing ASP.NET Core 1.0 and .NET Core 1.0, accessed January 19, 2017
  45. heise online: Build 2019: Microsoft brings Mono and .NET Core together to .NET 5.0. Retrieved May 6, 2019 .