Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking thread: .NET 9 GA #2817

Open
mattchenderson opened this issue Oct 30, 2024 · 12 comments
Open

Tracking thread: .NET 9 GA #2817

mattchenderson opened this issue Oct 30, 2024 · 12 comments
Labels

Comments

@mattchenderson
Copy link
Contributor

mattchenderson commented Oct 30, 2024

This issue thread will track updates relating to GA support for .NET 9. Please see the latest comment for current status.

At time of this initial comment, .NET 9 is not yet GA. You can, however, use the preview of .NET 9 on Functions.

This issue will be locked so that updates from the team are not lost among other comments. For any questions, feedback, or other issues as the feature becomes available, please open a new issue.

@Azure Azure locked and limited conversation to collaborators Oct 30, 2024
@mattchenderson mattchenderson pinned this issue Oct 30, 2024
@mattchenderson
Copy link
Contributor Author

We strive to provide same-day support in public Azure for new GA versions of .NET. This comment outlines some of the steps we'll be taking on release day and what you can expect.

If you have any questions about components not covered in this thread, or issues with components as they are enabled, please open an issue using our .NET 9 template.

Considerations for your local project

To use .NET 9 in your projects, you'll need to:

At time of this writing, the 2.0.0 versions are in preview. The team will post an update in this thread when the GA versions are available.

Azure Functions Core Tools

You might initially see a preview label in the Core Tools, and templates might still reference preview versions of the core packages. A new version of the Core Tools will be released on GA day.

The team will post an update in this thread when the new version is available.

Visual Studio

If you use Visual Studio, you should also update to version 17.12. You might initially see Preview labels when creating new projects, and templates might still reference the preview versions of the core packages. New templates will be released on GA day, and you'll be able to update VS to use these. To check for updates, navigate to Tools > Options, choose Azure Functions under Projects and Solutions. Select Check for updates and install updates as prompted.

The team will post an update in this thread when the new templates are available.

Visual Studio Code

You might initially see Preview labels when creating new projects, and templates might still reference the preview versions of the core packages. New templates will be released on GA day, and VS Code will pick them up automatically.

The team will post an update in this thread when the new templates are available.

Considerations for Windows apps

Once .NET 9 is GA, we deploy it to the Windows fleet with a just-in-time installation mode (which we also use during the Preview window). While we're in this mode, apps can experience increased cold start time. This will be addressed by a full installation after the GA day. The full installation will be enabled in the weeks following the .NET 9 GA.

The team will post updates in this thread when each mode of suppport is available.

Considerations for Linux function apps

The .NET team typically publishes official container images on a slight delay after the SDK release. Azure Functions Linux offerings are not updated prior to this. There will be a slight delay between the publishing of the official image and support becoming available in the service. For our Dedicated and Elastic Premium SKUs, this is a fairly short delay. However, Linux Consumption involves a few more processes and tends to take a bit longer.

The Flex Consumption preview SKU is not yet a candidate for same-day support. Support for .NET 9 will be enabled in the weeks following the .NET 9 GA.

The team will post updates in this thread when support is available for each SKU.

Portal support

You might initially see Preview labels when creating new funciton apps. The Azure portal will be updated once the GA support is available in the platform. It might come out before there is support for every SKU, though. In particular, Linux Consumption may not have full support when the portal updates.

The team will post an update in this thread when the portal is updated.

Documentation

Azure Functions documentation will still refer to .NET 9 as preview for the week following the GA release.

The team will post an update in this thread when the documentation is updated.

@mattchenderson
Copy link
Contributor Author

Happy .NET Conf! It's an exciting day for all of us on the Functions .NET crew, and we're looking forward to bringing you updates in this thread as we enable support for .NET 9. Please see the previous comment for a rough outline of what you can expect.

When the .NET 9 SDK first becomes generally available, our service will not yet have been updated. We'll enable support as soon as we can, and this is the right place to get the latest updates. Note that the GA SDK cannot be used with the earlier versions of the runtime. So if you attempt to publish to a function app before we indicate that the platform is ready, and you built the project with the GA SDK, you'll encounter runtime errors.

If you have any questions about components not covered in this thread, or issues with components as they are enabled, please open an issue using our .NET 9 template.

@mattchenderson
Copy link
Contributor Author

We have published the 2.0.0 GA versions of the following packages:

Please note the following behavior changes when compared with the 1.x versions:

  • Microsoft.Azure.Functions.Worker.Sdk adds default configurations for SDK container builds.
  • Microsoft.Azure.Functions.Worker:
    • This version adds support for IHostApplicationBuilder.
    • Service provider scope validation is included by default if run in a development environment. This behavior matches ASP.NET Core.
    • The EnableUserCodeException option is enabled by default. The property is now marked as obsolete.
    • The IncludeEmptyEntriesInMessagePayload option is enabled by default. With this option enabled, trigger payloads that represent collections always include empty entries. For example, if a message is sent without a body, an empty entry would still be present in string[] for the trigger data. The inclusion of empty entries facilitates cross-referencing with metadata arrays which the function may also reference. You can disable this behavior by setting IncludeEmptyEntriesInMessagePayload to false in the WorkerOptions service configuration.
    • The ILoggerExtensions class is renamed to FunctionsLoggerExtensions. The rename prevents an ambiguous call error when using LogMetric() on an ILogger instance.

@mattchenderson
Copy link
Contributor Author

Support for .NET 9 GA is now available for Linux on Dedicated and Elastic Premium App Service Plans. Apps already targeting .NET 9 from the preview period may need to restart to see the GA runtime.

The base image used for custom container image builds is not yet available. We will provide another update when that is ready.

Support is not yet available for Linux Consumption. We will provide another update when that option is enabled.

Support is not yet available for the Flex Consumption Preview. We will provide another update when support is enabled for Flex Consumption in the coming weeks.

@mattchenderson
Copy link
Contributor Author

Visual Studio and Visual Studio Code have been updated to include the latest templates to support .NET 9.

In Visual Studio Code, the templates should update automatically.

In Visual Studio, the templates should update when VS is first launched and when opening a Functions project or creating a new one, after VS has first started. you can also force it to check for updates, by navigating to Tools > Options, choose Azure Functions under Projects and Solutions. Select Check for updates and install updates as prompted.

@mattchenderson
Copy link
Contributor Author

Support for .NET 9 is now available for Windows apps.

This support uses the just-in-time installation mode, and a full installation deployment will follow. While we're in the just-in-time installation mode, apps can experience increased cold start time when using .NET 9.

We will provide another update when the full installation is completed in the coming weeks.

@mattchenderson
Copy link
Contributor Author

We have published an updated version of our base image that can be used for building custom container images: mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated9.0

If you are building container images, consider also trying out the new support for SDK container builds, which is included in version 2.0.0 of Microsoft.Azure.Functions.Worker.Sdk.

@mattchenderson
Copy link
Contributor Author

A new version of the Azure Functions Core Tools is now available with the latest templates to support .NET 9. Please update your installation to version 4.0.6610.

The new version is available through the GitHub release and on NPM. It is also in the process of being made available in other acquisition channels. We will not track availability updates for those as part of this thread.

@mattchenderson
Copy link
Contributor Author

The Azure Portal in all regions should now show .NET 9 as a GA option for Functions, without the "Preview" tag.

@mattchenderson
Copy link
Contributor Author

Documentation has now been updated to remove the "Preview" label when discussing the 2.x packages and .NET 9.

@mattchenderson
Copy link
Contributor Author

Support for .NET 9 GA is now available on Linux Consumption.

Support is not yet available for Flex Consumption. As outlined in the Flex Consumption GA announcement post earlier this week, .NET 9 support is anticapted to be available on December 1 in some regions. Please see that post for details. We will provide another update here when support is enabled for Flex Consumption.

@mattchenderson
Copy link
Contributor Author

The full installation update has completed for Windows, meaning there is no longer additional cold start impact from the initial just-in-time installation.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant