Net Runtime 2.0 Download

-->

Download Microsoft.NET Framework Version 2.0 Redistributable Package (x64) for Windows to install required.NET Framework runtime and associated files to run 64-bit applications. 64-bit ODAC 11.2.0.3.20(230,297,429 bytes) Use Oracle Universal Installer (OUI) to deploy via a graphical universal interface. OUI is easy to use and can be configured to install ODAC software silently. 32-bit ODAC OUI can be downloaded from this ODAC developer download page.

Azure Functions currently supports three versions of the runtime host: 1.x, 2.x, and 3.x. All three versions are supported for production scenarios.

Important

Version 1.x is in maintenance mode and only supports development in the Azure portal, Azure Stack Hub portal, or locally on Windows computers. Enhancements are provided only in later versions.

This article details some of the differences between the various versions, how you can create each version, and how to change versions.

Languages

Starting with version 2.x, the runtime uses a language extensibility model, and all functions in a function app must share the same language. The language of functions in a function app is chosen when creating the app and is maintained in the FUNCTIONS_WORKER_RUNTIME setting.

The following table indicates which programming languages are currently supported in each runtime version.

Language1.x2.x3.x
C#GA (.NET Framework 4.7)GA (.NET Core 2.2)GA (.NET Core 3.1)
JavaScriptGA (Node 6)GA (Node 10 & 8)GA (Node 12 & 10)
Preview (Node 14)
F#GA (.NET Framework 4.7)GA (.NET Core 2.2)GA (.NET Core 3.1)
JavaN/AGA (Java 8)GA (Java 11 & 8)
PowerShellN/AGA (PowerShell Core 6)GA (PowerShell 7 & Core 6)
PythonN/AGA (Python 3.7 & 3.6)GA (Python 3.8, 3.7, & 3.6)
TypeScriptN/AGA*GA*

* Supported through transpiling to JavaScript.

See the language-specific developer guide article for more details about supported language versions.
For information about planned changes to language support, see Azure roadmap.

Run on a specific version

By default, function apps created in the Azure portal and by the Azure CLI are set to version 3.x. You can modify this version as needed. You can only change the runtime version to 1.x after you create your function app but before you add any functions. Moving between 2.x and 3.x is allowed even with apps that have functions, but it is still recommended to test in a new app first.

Migrating from 1.x to later versions

You may choose to migrate an existing app written to use the version 1.x runtime to instead use a newer version. Most of the changes you need to make are related to changes in the language runtime, such as C# API changes between .NET Framework 4.7 and .NET Core. You'll also need to make sure your code and libraries are compatible with the language runtime you choose. Finally, be sure to note any changes in trigger, bindings, and features highlighted below. For the best migration results, you should create a new function app in a new version and port your existing version 1.x function code to the new app.

While it's possible to do an 'in-place' upgrade by manually updating the app configuration, going from 1.x to a higher version includes some breaking changes. For example, in C#, the debugging object is changed from TraceWriter to ILogger. By creating a new version 3.x project, you start off with updated functions based on the latest version 3.x templates.

Changes in triggers and bindings after version 1.x

Starting with version 2.x, you must install the extensions for specific triggers and bindings used by the functions in your app. The only exception for this HTTP and timer triggers, which don't require an extension. For more information, see Register and install binding extensions.

There are also a few changes in the function.json or attributes of the function between versions. For example, the Event Hub path property is now eventHubName. See the existing binding table for links to documentation for each binding.

Changes in features and functionality after version 1.x

A few features were removed, updated, or replaced after version 1.x. This section details the changes you see in later versions after having used version 1.x.

In version 2.x, the following changes were made:

  • Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. In version 1.x, keys were stored in Azure File storage by default. When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • The version 2.x runtime doesn't include built-in support for webhook providers. This change was made to improve performance. You can still use HTTP triggers as endpoints for webhooks.

  • The host configuration file (host.json) should be empty or have the string 'version': '2.0'.

  • To improve monitoring, the WebJobs dashboard in the portal, which used the AzureWebJobsDashboard setting is replaced with Azure Application Insights, which uses the APPINSIGHTS_INSTRUMENTATIONKEY setting. For more information, see Monitor Azure Functions.

  • All functions in a function app must share the same language. When you create a function app, you must choose a runtime stack for the app. The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. This requirement was added to improve footprint and startup time. When developing locally, you must also include this setting in the local.settings.json file.

  • The default timeout for functions in an App Service plan is changed to 30 minutes. You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • HTTP concurrency throttles are implemented by default for Consumption plan functions, with a default of 100 concurrent requests per instance. You can change this in the maxConcurrentRequests setting in the host.json file.

  • Because of .NET Core limitations, support for F# script (.fsx) functions has been removed. Compiled F# functions (.fs) are still supported.

  • The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

Migrating from 2.x to 3.x

2.0

Azure Functions version 3.x is highly backwards compatible to version 2.x. Many apps should be able to safely upgrade to 3.x without any code changes. While moving to 3.x is encouraged, be sure to run extensive tests before changing the major version in production apps.

Breaking changes between 2.x and 3.x

The following are the changes to be aware of before upgrading a 2.x app to 3.x.

JavaScript

  • Output bindings assigned through context.done or return values now behave the same as setting in context.bindings.

  • Timer trigger object is camelCase instead of PascalCase

  • Event Hub triggered functions with dataType binary will receive an array of binary instead of string.

  • The HTTP request payload can no longer be accessed via context.bindingData.req. It can still be accessed as an input parameter, context.req, and in context.bindings.

  • Node.js 8 is no longer supported and will not execute in 3.x functions.

.NET

  • Synchronous server operations are disabled by default.

Changing version of apps in Azure

The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. The following major runtime version values are supported:

ValueRuntime target
~33.x
~22.x
~11.x

Important

Don't arbitrarily change this setting, because other app setting changes and changes to your function code may be required.

Locally developed application versions

You can make the following updates to function apps to locally change the targeted versions.

Visual Studio runtime versions

In Visual Studio, you select the runtime version when you create a project. Azure Functions tools for Visual Studio supports the three major runtime versions. The correct version is used when debugging and publishing based on project settings. The version settings are defined in the .csproj file in the following properties:

Version 1.x
Version 2.x

Download Net Framework Runtime 2.0

Version 3.x

Note

Azure Functions 3.x and .NET requires the Microsoft.NET.Sdk.Functions extension be at least 3.0.0.

Updating 2.x apps to 3.x in Visual Studio

You can open an existing function targeting 2.x and move to 3.x by editing the .csproj file and updating the values above. Visual Studio manages runtime versions automatically for you based on project metadata. However, it's possible if you have never created a 3.x app before that Visual Studio doesn't yet have the templates and runtime for 3.x on your machine. This may present itself with an error like 'no Functions runtime available that matches the version specified in the project.' To fetch the latest templates and runtime, go through the experience to create a new function project. When you get to the version and template select screen, wait for Visual Studio to complete fetching the latest templates. Once the latest .NET Core 3 templates are available and displayed you should be able to run and debug any project configured for version 3.x.

Important

Version 3.x functions can only be developed in Visual Studio if using Visual Studio version 16.4 or newer.

VS Code and Azure Functions Core Tools

Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. To develop against version 3.x, install version 3.x of the Core Tools. Version 2.x development requires version 2.x of the Core Tools, and so on. For more information, see Install the Azure Functions Core Tools.

For Visual Studio Code development, you may also need to update the user setting for the azureFunctions.projectRuntime to match the version of the tools installed. This setting also updates the templates and languages used during function app creation. To create apps in ~3 you would update the azureFunctions.projectRuntime user setting to ~3.

Maven and Java apps

You can migrate Java apps from version 2.x to 3.x by installing the 3.x version of the core tools required to run locally. After verifying that your app works correctly running locally on version 3.x, update the app's POM.xml file to modify the FUNCTIONS_EXTENSION_VERSION setting to ~3, as in the following example:

Bindings

Starting with version 2.x, the runtime uses a new binding extensibility model that offers these advantages:

  • Support for third-party binding extensions.

  • Decoupling of runtime and bindings. This change allows binding extensions to be versioned and released independently. You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. For more information, see Register binding extensions.

The following table shows which bindings are supported in each runtime version.

This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

Type1.x2.x and higher1TriggerInputOutput
Blob storage
Azure Cosmos DB
Dapr3
Event Grid
Event Hubs
HTTP & webhooks
IoT Hub
Kafka2
Mobile Apps
Notification Hubs
Queue storage
RabbitMQ2
SendGrid
Service Bus
SignalR
Table storage
Timer
Twilio

1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. See Register binding extensions.

2 Triggers aren't supported in the Consumption plan. Requires runtime-driven triggers.

3 Supported only in Kubernetes, IoT Edge, and other self-hosted modes only.

Function app timeout duration

The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. The following table shows the default and maximum values in minutes for both plans and the different runtime versions:

PlanRuntime VersionDefaultMaximum
Consumption1.x510
Consumption2.x510
Consumption3.x510
Premium1.x30Unlimited
Premium2.x30Unlimited
Premium3.x30Unlimited
App Service1.xUnlimitedUnlimited
App Service2.x30Unlimited
App Service3.x30Unlimited

Note

Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. This is because of the default idle timeout of Azure Load Balancer. For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

Next steps

For more information, see the following resources:

Net Framework Runtime 3.5 Download

.NET Core 2.0.9 is available for download and usage in your environment.

Blog Round up

The .NET Core SDK 2.1 includes .NET Core 2.1 Runtime so downloading the runtime packages separately is not needed when installing the SDK. After installing the .NET Core SDK 2.1, running dotnet --version will show that you're running version 2.1.202 of the .NET Core tools.

dotnet --info has been greatly enhanced in .NET Core 2.1 and now provides detailed information on installed .NET Core components.

Your feedback is important and appreciated. We've created an issue at dotnet/core #/1766 for your questions and comments.

Docker Images

The .NET Core Docker images have been updated for this release. Look for the updated images for .NET Core 2.0.9 and .NET Core SDK 2.1.202 and read 'Staying up-to-date with .NET Container Images' for details and insights into using the .NET Core images.

Azure AppServices

  • Deployment of .NET Core 2.0.9 to Azure App Services has begun. It will be available in limited regions today and expected worldwide by the end of the week.

.NET Core Lifecycle News

See .NET Core Supported OS Lifecycle Policy to learn about Windows, macOS and Linux versions that are supported for each .NET Core release.

.NET Core 2.1 is expected to be declared LTS in the next few months. It is recommended that 2.1 be the default target for projects. .NET Core 2.0 will go out of support October 2018.

Supported Linux version changes

Fedora 26 and Ubuntu 17.10 will reach end of life in July. This is the last update of .NET Core which will support these versions.

Notable Changes in 2.0.9

Microsoft Security Advisory CVE-2018-8356: .NET Core Security Feature Bypass Vulnerability

Executive summary

Microsoft is releasing this security advisory to provide information about a vulnerability in .NET Core. This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.

Microsoft is aware of a security feature bypass vulnerability that exists when .NET Core does not correctly validate certificates. An attacker who successfully exploited this vulnerability could present an expired certificate when challenged.

The update addresses the vulnerability by correcting how .NET Core applications handle certificate validation.

Package and Binary updates

Windows 7 C++ Runtime Download

Package nameVulnerable versionsSecure versions
System.Private.ServiceModel4.0.0, 4.1.0, 4.1.1
4.3.0, 4.3.1
4.4.0, 4.4.1, 4.4.2
4.5.0, 4.5.1
4.1.2 or later
4.3.2 or later
4.4.3 or later
4.5.2 or later
System.ServiceModel.Duplex4.0.0, 4.1.0, 4.1.1
4.3.0, 4.3.1
4.4.0, 4.4.1, 4.4.2
4.5.0, 4.5.1
4.1.2 or later
4.3.2 or later
4.4.3 or later
4.5.2 or later
System.ServiceModel.Http4.0.0, 4.1.0, 4.1.1
4.3.0, 4.3.1
4.4.0, 4.4.1, 4.4.2
4.5.0, 4.5.1
4.1.2 or later
4.3.2 or later
4.4.3 or later
4.5.2 or later
System.ServiceModel.NetTcp4.0.0, 4.1.0, 4.1.1
4.3.0, 4.3.1
4.4.0, 4.4.1, 4.4.2
4.5.0, 4.5.1
4.1.2 or later
4.3.2 or later
4.4.3 or later
4.5.2 or later
System.ServiceModel.Primitives4.0.0, 4.1.0, 4.1.1
4.3.0, 4.3.1
4.4.0, 4.4.1, 4.4.2
4.5.0, 4.5.1
4.1.2 or later
4.3.2 or later
4.4.3 or later
4.5.2 or later
System.ServiceModel.Security4.0.0, 4.1.0, 4.1.1
4.3.0, 4.3.1
4.4.0, 4.4.1, 4.4.2
4.5.0, 4.5.1
4.1.2 or later
4.3.2 or later
4.4.3 or later
4.5.2 or later