Azurite Support, Timer Trigger Code Completion, and More Azure Toolkit for Rider 2020.2 Updates

Maarten Balliauw

We’ve just released the Azure Toolkit for Rider 2020.2, and want to share what’s new. On the feature side, you can now work with the Azurite storage emulator from within Rider. If you’re developing Azure Functions, we’ve added code completion for timer triggers, and now auto-detect the core tools if you already have them installed. Log streaming for web- and function apps has been added, so you can see what is going on in your application from within Rider. We have also been working on our plugin infrastructure, and fixed a number of bugs. Let’s have a look!

Azurite storage emulator

If you are developing applications that use Azure Storage, you can make use of the Azure Storage Emulator (Windows-only) and the Azurite storage emulator. The latter option, Azurite, is quickly becoming more popular. While it does not support table storage yet (vote here), it is cross-platform and it supports the latest versions of the storage API.

After you install Azurite using npm (npm install -g azurite), you can find an Azurite node in the Services tool window. From here, you can start, stop, and clear the storage emulator:

Azurite Storage Emulator in Rider Services Tool Window

By default, Rider will manage the workspace path where Azurite stores its data. This path can be set to a custom folder, and to a solution-specific folder. This is useful when you are working on different projects and solutions: you can have different blobs and queues stored for different projects.

Azurite Settings

Most of the Azurite command-line options can be configured in the settings, under Tools | Azure | Azurite.

Code completion for Azure Functions timer triggers

When you’re using timer triggers in Azure Functions, you have to enter a valid NCrontab expression that defines when the function will be executed. But what does such expression look like? The Azure Toolkit for Rider now helps you by providing code completion with several example expressions from which you can start working:

TimerTrigger NCrontab expression completion

Rider also validates whether an expression is valid or not and gives you extra information about what may be wrong:

Timer Trigger validation

Internally, we are using the NCrontab library to make code completion and validation work – just like the Azure Functions runtime does.

Azure Active Directory application registration

Before, when creating an ASP.NET Core web aplication that uses Azure Active Directory organizational authentication, you would have to launch your browser, navigate to the Azure portal, register your application manually, and then copy/paste a bunch of entries. No more!

The latest Azure Toolkit for Rider now shows a warning when it recognizes the default values for your "AzureAd" configuration, and offers to register the application for you. After you enter your application’s display name and other details, and click Register, the next launch of your application will have organizational authentication up and running.

Azure Active Directory Application registration in Rider

The Tools | Azure | Register Azure AD application menu lets you update your existing application registration.

Service Authentication and Managed Identity

The Azure Toolkit for Rider now supports authenticating using the Azure CLI. When you are logged in with Azure CLI, your apps can use your developer credentials to authenticate and access Azure resources when debugging.

In the settings, under Tools | Azure | Service Authentication, you can see whether this is active or not.

Managed Identity support in Rider

Note that service authentication with managed identity is not supported for connecting to Azure resources in the IDE (e.g. from the Database tool window). It only enables service authentication for the applications you are building and debugging.

Log streaming for web apps and functions

On Azure, there are various options to handle logging and diagnostics, such as Azure Monitor and Application Insights. These services, however, have a slight delay in presenting data. For good reason, as they collect much more than just log output.

Another diagnostics option is log streaming, which streams log output from your web apps and function apps in real-time. The Azure Toolkit for Rider now lets you attach to the log stream, so you can inspect your application’s diagnostics in real-time.

Azure Log Stream for eb Apps and Function Apps

Bugfixes and plugin infrastructure updates

We’ve improved the existing functionality of the Azure Toolkit for Rider. Several updates were made to publishing Web Apps and Function Apps, and we’ve been hard at work to fix some Azure Functions functionality.

For example, we now auto-detect the Azure Functions core tools if they are already installed on your system. If you’re using Chocolatey or Brew to install them, Rider will now pick them up. Rider can still download and update the core tools as well. We’ve also made the run markers that can run, debug, and trigger individual functions more reliably.

Less visible, but still important, is that we’ve introduced a R# backend to the toolkit (see Rider architecture). This makes analyzing C# and F# code in the toolkit more reliable and opens up new possibilities for the future. The IntelliJ Platform, on which Rider is built, is being localized. As part of that effort, we’ve extracted all UI text into resource files.

Download Rider 2020.2 now and give it a try! We’d love to hear your feedback on these improvements!

Subscribe

Subscribe to .NET Tools updates