You are on page 1of 16

Table of Contents

Getting Started
Overview
The .NET Framework and Out-of-Band Releases
.NET Core and Open-Source
System Requirements
Get started with the .NET Framework
4/3/2018 • 6 min to read • Edit Online

The .NET Framework is a runtime execution environment that manages apps that target the .NET Framework. It
consists of the common language runtime, which provides memory management and other system services, and
an extensive class library, which enables programmers to take advantage of robust, reliable code for all major
areas of app development.

NOTE
The .NET Framework is available on Windows systems only. You can use .NET Core to run apps on Windows, MacOS, and
Linux.

What is the .NET Framework?


The .NET Framework is a managed execution environment for Windows that provides a variety of services to its
running apps. It consists of two major components: the common language runtime (CLR), which is the execution
engine that handles running apps, and the .NET Framework Class Library, which provides a library of tested,
reusable code that developers can call from their own apps. The services that the .NET Framework provides to
running apps include the following:
Memory management. In many programming languages, programmers are responsible for allocating and
releasing memory and for handling object lifetimes. In .NET Framework apps, the CLR provides these
services on behalf of the app.
A common type system. In traditional programming languages, basic types are defined by the compiler,
which complicates cross-language interoperability. In the .NET Framework, basic types are defined by the
.NET Framework type system and are common to all languages that target the .NET Framework.
An extensive class library. Instead of having to write vast amounts of code to handle common low-level
programming operations, programmers use a readily accessible library of types and their members from
the .NET Framework Class Library.
Development frameworks and technologies. The .NET Framework includes libraries for specific areas of app
development, such as ASP.NET for web apps, ADO.NET for data access, Windows Communication
Foundation for service-oriented apps, and Windows Presentation Foundation for Windows desktop apps.
Language interoperability. Language compilers that target the .NET Framework emit an intermediate code
named Common Intermediate Language (CIL), which, in turn, is compiled at runtime by the common
language runtime. With this feature, routines written in one language are accessible to other languages, and
programmers focus on creating apps in their preferred languages.
Version compatibility. With rare exceptions, apps that are developed by using a particular version of the
.NET Framework run without modification on a later version.
Side-by-side execution. The .NET Framework helps resolve version conflicts by allowing multiple versions of
the common language runtime to exist on the same computer. This means that multiple versions of apps
can coexist and that an app can run on the version of the .NET Framework with which it was built. Side-by-
side execution applies to the .NET Framework version groups 1.0/1.1, 2.0/3.0/3.5, and 4/4.5.x/4.6.x/4.7.x.
Multitargeting. By targeting .NET Standard, developers create class libraries that work on multiple .NET
Framework platforms supported by that version of the standard. For example, libraries that target the .NET
Standard 2.0 can be used by apps that target the .NET Framework 4.6.1, .NET Core 2.0, and UWP 10.0.16299.

The .NET Framework for users


If you don't develop .NET Framework apps, but you use them, you aren't required to have specific knowledge
about the .NET Framework or its operation. For the most part, the .NET Framework is completely transparent to
users.
If you're using the Windows operating system, the .NET Framework may already be installed on your computer. In
addition, if you install an app that requires the .NET Framework, the app's setup program might install a specific
version of the .NET Framework on your computer. In some cases, you may see a dialog box that asks you to install
the .NET Framework. If you've just tried to run an app when this dialog box appears and if your computer has
Internet access, you can go to a webpage that lets you install the missing version of the .NET Framework. For more
information, see the Installation guide.
In general, you shouldn't uninstall versions of the .NET Framework that are installed on your computer. There are
two reasons for this:
If an app that you use depends on a specific version of the .NET Framework, that app may break if that
version is removed.
Some versions of the .NET Framework are in-place updates to earlier versions. For example, the .NET
Framework 3.5 is an in-place update to version 2.0, and the .NET Framework 4.7.1 is an in-place update to
versions 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, and 4.7. For more information, see .NET Framework Versions and
Dependencies.
On Windows versions before Windows 8, if you do choose to remove the .NET Framework, always use Programs
and Features from Control Panel to uninstall it. Never remove a version of the .NET Framework manually. On
Windows 8 and above, the .NET Framework is an operating system component and cannot be independently
uninstalled.
Note that multiple versions of the .NET Framework can coexist on a single computer at the same time. This means
that you don't have to uninstall previous versions in order to install a later version.

The .NET Framework for developers


If you're a developer, choose any programming language that supports the .NET Framework to create your apps.
Because the .NET Framework provides language independence and interoperability, you interact with other .NET
Framework apps and components regardless of the language with which they were developed.
To develop .NET Framework apps or components, do the following:
1. If it's not preinstalled on your operating system, install the version of the .NET Framework that your app will
target. The most recent production version is the .NET Framework 4.7.1, which is preinstalled on Windows
10 Fall Creators Update and is available for download on earlier versions of the Windows operating system.
For .NET Framework system requirements, see System Requirements. For information on installing other
versions of the .NET Framework, see Installation Guide. Additional .NET Framework packages are released
out of band, which means that they're released on a rolling basis outside of any regular or scheduled release
cycle. For information about these packages, see The .NET Framework and Out-of-Band Releases.
2. Select the language or languages supported by the .NET Framework that you intend to use to develop your
apps. A number of languages are available, including Visual Basic, C#, F#, and C++/CLI from Microsoft. (A
programming language that allows you to develop apps for the .NET Framework adheres to the Common
Language Infrastructure (CLI) specification.)
3. Select and install the development environment to use to create your apps and that supports your selected
programming language or languages. The Microsoft integrated development environment (IDE) for .NET
Framework apps is Visual Studio. It's available in a number of editions.
For more information on developing apps that target the .NET Framework, see the Development Guide.

Related topics
TITLE DESCRIPTION

Overview Provides detailed information for developers who build apps


that target the .NET Framework.

Installation guide Provides information about installing the .NET Framework.

The .NET Framework and Out-of-Band Releases Describes the .NET Framework out of band releases and how
to use them in your app.

System Requirements Lists the hardware and software requirements for running the
.NET Framework.

.NET Core and Open-Source Describes .NET Core in relation to the .NET Framework and
how to access the open-source .NET Core projects.

.NET Core documentation Provides the conceptual and API reference documentation for
.NET Core.

.NET Standard Discusses .NET Standard, a versioned specification that


individual .NET implementations support to guarantee that a
consistent set of APIs are available on multiple platforms.

See also
.NET Framework Guide
What's New
.NET API Browser
Development Guide
Overview of the .NET Framework
4/3/2018 • 6 min to read • Edit Online

The .NET Framework is a technology that supports building and running the next generation of apps and XML Web
services. The .NET Framework is designed to fulfill the following objectives:
To provide a consistent object-oriented programming environment whether object code is stored and
executed locally, executed locally but Internet-distributed, or executed remotely.
To provide a code-execution environment that minimizes software deployment and versioning conflicts.
To provide a code-execution environment that promotes safe execution of code, including code created by
an unknown or semi-trusted third party.
To provide a code-execution environment that eliminates the performance problems of scripted or
interpreted environments.
To make the developer experience consistent across widely varying types of apps, such as Windows-based
apps and Web-based apps.
To build all communication on industry standards to ensure that code based on the .NET Framework
integrates with any other code.

NOTE
For a general introduction to the .NET Framework for both users and developers, see Getting Started.

The .NET Framework consists of the common language runtime (CLR) and the .NET Framework class library. The
common language runtime is the foundation of the .NET Framework. Think of the runtime as an agent that
manages code at execution time, providing core services such as memory management, thread management, and
remoting, while also enforcing strict type safety and other forms of code accuracy that promote security and
robustness. In fact, the concept of code management is a fundamental principle of the runtime. Code that targets
the runtime is known as managed code, while code that doesn't target the runtime is known as unmanaged code.
The class library is a comprehensive, object-oriented collection of reusable types that you use to develop apps
ranging from traditional command-line or graphical user interface (GUI) apps to apps based on the latest
innovations provided by ASP.NET, such as Web Forms and XML Web services.
The .NET Framework can be hosted by unmanaged components that load the common language runtime into their
processes and initiate the execution of managed code, thereby creating a software environment that exploits both
managed and unmanaged features. The .NET Framework not only provides several runtime hosts but also supports
the development of third-party runtime hosts.
For example, ASP.NET hosts the runtime to provide a scalable, server-side environment for managed code. ASP.NET
works directly with the runtime to enable ASP.NET apps and XML Web services, both of which are discussed later in
this topic.
Internet Explorer is an example of an unmanaged app that hosts the runtime (in the form of a MIME type
extension). Using Internet Explorer to host the runtime enables you to embed managed components or Windows
Forms controls in HTML documents. Hosting the runtime in this way makes managed mobile code possible, but
with significant improvements that only managed code offers, such as semi-trusted execution and isolated file
storage.
The following illustration shows the relationship of the common language runtime and the class library to your
apps and to the overall system. The illustration also shows how managed code operates within a larger
architecture.

.NET Framework in context


The following sections describe the main features of the .NET Framework in greater detail.

Features of the common language runtime


The common language runtime manages memory, thread execution, code execution, code safety verification,
compilation, and other system services. These features are intrinsic to the managed code that runs on the common
language runtime.
Regarding security, managed components are awarded varying degrees of trust, depending on a number of factors
that include their origin (such as the Internet, enterprise network, or local computer). This means that a managed
component might or might not be able to perform file-access operations, registry-access operations, or other
sensitive functions, even if it's used in the same active app.
The runtime also enforces code robustness by implementing a strict type-and-code-verification infrastructure
called the common type system (CTS). The CTS ensures that all managed code is self-describing. The various
Microsoft and third-party language compilers generate managed code that conforms to the CTS. This means that
managed code can consume other managed types and instances, while strictly enforcing type fidelity and type
safety.
In addition, the managed environment of the runtime eliminates many common software issues. For example, the
runtime automatically handles object layout and manages references to objects, releasing them when they are no
longer being used. This automatic memory management resolves the two most common app errors, memory leaks
and invalid memory references.
The runtime also accelerates developer productivity. For example, programmers write apps in their development
language of choice yet take full advantage of the runtime, the class library, and components written in other
languages by other developers. Any compiler vendor who chooses to target the runtime can do so. Language
compilers that target the .NET Framework make the features of the .NET Framework available to existing code
written in that language, greatly easing the migration process for existing apps.
While the runtime is designed for the software of the future, it also supports software of today and yesterday.
Interoperability between managed and unmanaged code enables developers to continue to use necessary COM
components and DLLs.
The runtime is designed to enhance performance. Although the common language runtime provides many
standard runtime services, managed code is never interpreted. A feature called just-in-time (JIT) compiling enables
all managed code to run in the native machine language of the system on which it's executing. Meanwhile, the
memory manager removes the possibilities of fragmented memory and increases memory locality-of-reference to
further increase performance.
Finally, the runtime can be hosted by high-performance, server-side apps, such as Microsoft SQL Server and
Internet Information Services (IIS). This infrastructure enables you to use managed code to write your business
logic, while still enjoying the superior performance of the industry's best enterprise servers that support runtime
hosting.

.NET Framework class library


The .NET Framework class library is a collection of reusable types that tightly integrate with the common language
runtime. The class library is object oriented, providing types from which your own managed code derives
functionality. This not only makes the .NET Framework types easy to use but also reduces the time associated with
learning new features of the .NET Framework. In addition, third-party components integrate seamlessly with classes
in the .NET Framework.
For example, the .NET Framework collection classes implement a set of interfaces for developing your own
collection classes. Your collection classes blend seamlessly with the classes in the .NET Framework.
As you would expect from an object-oriented class library, the .NET Framework types enable you to accomplish a
range of common programming tasks, including tasks such as string management, data collection, database
connectivity, and file access. In addition to these common tasks, the class library includes types that support a
variety of specialized development scenarios. Use the .NET Framework to develop the following types of apps and
services:
Console apps. See Building Console Applications.
Windows GUI apps (Windows Forms). See Windows Forms.
Windows Presentation Foundation (WPF) apps. See Windows Presentation Foundation.
ASP.NET apps. See Web Applications with ASP.NET.
Windows services. See Introduction to Windows Service Applications.
Service-oriented apps using Windows Communication Foundation (WCF). See Service-Oriented Applications
with WCF.
Workflow-enabled apps using Windows Workflow Foundation (WF). See Building Workflows in the .NET
Framework.
The Windows Forms classes are a comprehensive set of reusable types that vastly simplify Windows GUI
development. If you write an ASP.NET Web Form app, you can use the Web Forms classes.

See also
System Requirements
Installation guide
Development Guide
Tools
.NET Framework Samples
.NET Framework Class Library
The .NET Framework and Out-of-Band Releases
4/3/2018 • 2 min to read • Edit Online

The .NET Framework is evolving to accommodate different platforms such as Windows Phone and Windows Store
apps as well as traditional desktop and web apps, and to maximize code reuse. In addition to our regular .NET
Framework releases, we release new features out of band (OOB) to improve cross-platform development or to
introduce new functionality. This topic discusses the future direction of the .NET Framework and its OOB releases.

Advantages of OOB releases


Shipping new components or updates to components out of band enables Microsoft to provide more frequent
updates to the .NET Framework. In addition, we can gather and respond to customer feedback more quickly.
When you use an OOB feature in your app, your users do not have to install the latest version of the .NET
Framework to run your app, because the OOB assemblies deploy with your app package.

How OOB packages are distributed


OOB releases for core common language runtime (CLR) components are delivered through the NuGet, which is a
package manager for .NET. NuGet enables you to browse and add libraries to your .NET Framework projects easily
from the Solution Explorer in Visual Studio. NuGet is included with all editions of Visual Studio starting with Visual
Studio 2012. To see if NuGet is installed, look for Library Package Manager on the Visual Studio Tools menu. If
it’s not installed:
1. On the Visual Studio menu bar, choose Tools, Extensions and Updates (in Visual Studio 2010, choose
Extension Manager).
The Extensions and Updates dialog box opens.
2. Choose Online, NuGet Package Manager, and then choose Download.
3. After the download completes, restart Visual Studio.
For detailed installation instructions, see Installing NuGet on the NuGet Docs website. For more information about
NuGet, see the NuGet documentation.

Using a NuGet OOB package


After you install NuGet, you can browse and add references to NuGet packages by using Solution Explorer in Visual
Studio:
1. Open the shortcut menu for your project in Visual Studio, and then choose Manage NuGet Packages. (This
option is also available from the Project menu.)
2. In the left pane, choose Online.
3. If you want to use prerelease packages, in the drop-down list box in the middle pane, choose Include
Prerelease instead of Stable Only.
4. In the right pane, use the Search box to locate the package you would like to use. Some Microsoft packages
are identified by the Microsoft .NET Framework logo, and all identify Microsoft as the publisher.
As mentioned previously, when you deploy an app that uses an OOB package, the OOB assemblies will ship with
your app package.

Types of OOB releases


Typically, an OOB package has one or more prerelease versions and a stable version. The license that accompanies
a prerelease doesn't typically allow redistribution, but enables you to try out a package and provide feedback.
Feedback is incorporated in any updates made to the package. A final release is distributed as a stable package with
NuGet and includes a license that lets you redistribute the NuGet package with your app. Stable packages are
supported by Microsoft. Microsoft provides IntelliSense support as well as other types of documentation such as
blog posts and forum answers for all packages. In addition, source code may be available with some, but not all,
packages. For announcements regarding new and updated packages, you can subscribe to the .NET Framework
Blog.
To find both prerelease and stable packages, choose Include Prerelease in the NuGet Package Manager.
If you want to be notified of stable package releases, subscribe to the .NET Framework feed.

See Also
Getting Started
.NET Core and Open-Source
4/3/2018 • 2 min to read • Edit Online

This topic provides a brief overview of what .NET Core is and shows how you can find more information. To find the
complete list of topics for .NET Core, visit the .NET Core Guide.

What is .NET Core?


.NET Core is a general purpose, modular, cross-platform and open source implementation of the .NET Standard. It
contains many of the same APIs as the .NET Framework (but .NET Core is a smaller set) and includes runtime,
framework, compiler and tools components that support a variety of operating systems and chip targets. The .NET
Core implementation was primarily driven by the ASP.NET Core workloads but also by the need and desire to have
a more modern implementation. It can be used in device, cloud and embedded/IoT scenarios.
To get started with .NET Core, please visit the .NET Core homepage.
Here are the main characteristics of .NET Core:
Cross-platform: .NET Core provides key functionality to implement the app features you need and reuse
this code regardless of your platform target. It currently supports three main operating systems (OS):
Windows, Linux and macOS. You can write apps and libraries that run unmodified across supported
operating systems. To see the list of supported operating systems, visit .NET Core roadmap.
Open source: .NET Core is one of the many projects under the stewardship of the .NET Foundation and is
available on GitHub. Having .NET Core as an open source project promotes a more transparent development
process and promotes an active and engaged community.
Flexible deployment: there are two main ways to deploy your app: framework-dependent deployment or
self-contained deployment. With framework-dependent deployment, only your app and third-party
dependencies are installed and your app depends on a system-wide version of .NET Core to be present. With
self-contained deployment, the .NET Core version used to build your application is also deployed along with
your app and third-party dependencies and can run side-by-side with other versions. For more information,
see .NET Core Application Deployment.
Modular: .NET Core is modular because it's released through NuGet in smaller assembly packages. Rather
than one large assembly that contains most of the core functionality, .NET Core is made available as smaller
feature-centric packages. This enables a more agile development model for us and allows you to optimize
your app to include just the NuGet packages you need. The benefits of a smaller app surface area include
tighter security, reduced servicing, improved performance, and decreased costs in a pay-for-what-you-use
model.

The .NET Core Platform


The .NET Core platform is made of several components, which includes the managed compilers, the runtime, the
base class libraries, and numerous application models, such as ASP.NET Core. You can learn more about the
different components and get engaged, by visiting the following GitHub repos:
.NET Core
CoreFX - .NET Core foundational libraries
CoreCLR - .NET Core runtime
CLI - .NET Core command-line tools
Roslyn - .NET Compiler Platform
ASP.NET Core

See Also
.NET Core homepage
.NET Core Guide
ASP.NET Core Documentation
.NET Framework system requirements
4/3/2018 • 4 min to read • Edit Online

The tables in this topic provide the hardware, operating system, and software requirements for the following .NET
Framework versions:
.NET Framework 4.5 and its point releases (4.5.1 and 4.5.2).
.NET Framework 4.6 and its point releases (4.6.1 and 4.6.2).
.NET Framework 4.7 and its point release (4.7.1).
Development environments that enable you to develop apps for the .NET Framework have a separate set of
requirements.

IMPORTANT
All .NET Framework versions since .NET Framework 4 are in-place updates, so only a single 4.x version can be present on a
system. In addition, particular versions of the .NET Framework are pre-installed on some versions of the Windows operating
system. This means that:
If there's a later 4.x version installed on the machine already, you can't install a previous 4.x version.
If the OS comes pre-installed with a particular .NET Framework version, you can't install a previous 4.x version on the
same machine.
If you install a later version, you don't have to first uninstall the previous version.

For download information and links, see Install the .NET Framework for developers.
For information on the support lifecycle of .NET Framework versions, see Microsoft Support Lifecycle.

Hardware requirements

Processor 1 GHz

RAM 512 MB

Disk space (minimum)

32-bit 4.5 GB

64-bit 4.5 GB

Installation requirements
The .NET Framework requires administrator privileges for installation. If you don't have administrator rights to the
computer where you'd like to install the .NET Framework, contact your network administrator.

Supported client operating systems


OPERATING SYSTEM SUPPORTED EDITIONS PREINSTALLED WITH THE OS INSTALLABLE SEPARATELY

Windows 10 Fall Creators 32-bit and 64-bit .NET Framework 4.7.1


Update

Windows 10 Creators 32-bit and 64-bit .NET Framework 4.7 .NET Framework 4.7.1
Update

Windows 10 Anniversary 32-bit and 64-bit .NET Framework 4.6.2 .NET Framework 4.7
Update
.NET Framework 4.7.1

Windows 10 November 32-bit and 64-bit .NET Framework 4.6.1 .NET Framework 4.6.2
Update

Windows 10 32-bit and 64-bit .NET Framework 4.6 .NET Framework 4.6.1

.NET Framework 4.6.2

Windows 8.1 32-bit, 64-bit, and ARM .NET Framework 4.5.1 .NET Framework 4.5.2

.NET Framework 4.6

.NET Framework 4.6.1

.NET Framework 4.6.2

.NET Framework 4.7

.NET Framework 4.7.1

Windows 8 32-bit, 64-bit, and ARM .NET Framework 4.5 .NET Framework 4.5.1

.NET Framework 4.5.2

.NET Framework 4.6

.NET Framework 4.6.1

Windows 7 SP1 32-bit and 64-bit -- .NET Framework 4

.NET Framework 4.5

.NET Framework 4.5.1

.NET Framework 4.5.2

.NET Framework 4.6

.NET Framework 4.6.1

.NET Framework 4.6.2

.NET Framework 4.7

.NET Framework 4.7.1


OPERATING SYSTEM SUPPORTED EDITIONS PREINSTALLED WITH THE OS INSTALLABLE SEPARATELY

Windows Vista SP2 32-bit and 64-bit -- .NET Framework 4

.NET Framework 4.5

.NET Framework 4.5.1

.NET Framework 4.5.2

.NET Framework 4.6

Windows XP 32-bit and 64-bit -- .NET Framework 4

Notes:
On Windows 7 systems, the .NET Framework requires Windows 7 SP1. If you're on Windows 7 and haven't
yet installed Service Pack 1, you need to do so before installing the .NET Framework.
The .NET Framework 4.5 is supported on the Windows Preinstallation Environment (Windows PE). Not all
features are supported on Windows PE.
The .NET Framework 4 also supports the IA64 platform.
For all platforms, we recommend that you upgrade to the latest Windows Service Pack and install critical
updates available from the Windows Update website to ensure the best compatibility and security.
On 64-bit operating systems, the .NET Framework supports both WOW64 (32-bit processing on a 64-bit
machine) and native 64-bit processing.

Supported server operating systems


OPERATING SYSTEM SUPPORTED EDITIONS PREINSTALLED WITH THE OS INSTALLABLE SEPARATELY

Windows Server, version 64-bit .NET Framework 4.7.1 --


1709

Windows Server 2016 64-bit .NET Framework 4.6.2 .NET Framework 4.7

.NET Framework 4.7.1

Windows Server 2012 R2 64-bit .NET Framework 4.5.1 .NET Framework 4.5.2

.NET Framework 4.6

.NET Framework 4.6.1

.NET Framework 4.6.2

.NET Framework 4.7

.NET Framework 4.7.1


OPERATING SYSTEM SUPPORTED EDITIONS PREINSTALLED WITH THE OS INSTALLABLE SEPARATELY

Windows Server 2012 (64- 64-bit .NET Framework 4.5 .NET Framework 4.5.1
bit edition)
.NET Framework 4.5.2

.NET Framework 4.6

.NET Framework 4.6.1

.NET Framework 4.6.2

.NET Framework 4.7

.NET Framework 4.7.1

Windows Server 2008 R2 64-bit -- .NET Framework 4


SP1
.NET Framework 4.5

.NET Framework 4.5.1

.NET Framework 4.5.2

.NET Framework 4.6

.NET Framework 4.6.1

.NET Framework 4.6.2

.NET Framework 4.7

.NET Framework 4.7.1

Windows Server 2008 SP2 32-bit and 64-bit -- .NET Framework 4

.NET Framework 4.5

.NET Framework 4.5.1

.NET Framework 4.5.2

.NET Framework 4.6

Notes:
Windows Server 2012 includes the .NET Framework 4.5, so you don't have to install it separately. Similarly,
Windows Server 2012 R2 includes the .NET Framework 4.5.1.
The .NET Framework has limited support for the Server Core Role with Windows Server 2008 R2 SP1 or
later. See Server Core .NET Functionality for a list of unsupported APIs.
The .NET Framework isn't supported on Windows Server 2008 R2 for Itanium-Based Systems.
On Windows Server 2008 SP2, the .NET Framework is not supported in the Server Core Role.
For all platforms, we recommend that you upgrade to the latest Windows Service Pack and critical updates
available from the Windows Update website to ensure the best compatibility and security. Installation of the
latest Windows Service Pack may be required on some operating systems.
On 64-bit operating systems, the .NET Framework supports both WOW64 (32-bit processing on a 64-bit
machine) and native 64-bit processing.
See also
Installation Guide
Getting Started
Troubleshoot blocked .NET Framework installations and uninstallations

You might also like