In early November 2019, the Microsoft Ignite conference took place in Orlando, Florida. Although Microsoft Ignite is not as developer oriented as Microsoft Build is, there still was a lot of developer related information published there.
This article provides a recap of the important announcements made during Ignite which were aimed primarily at developers, and how you can use these announcements to steer ahead in 2020!
Editorial Note: This article assumes familiarity with the Microsoft Developer Ecosystem.
Development Tools RoadMap
Microsoft IDEs and text editors share a common Visual Studio brand. Since the latest versions of Visual Studio 2019 and Visual Studio for Mac were released less than two months before Microsoft Ignite at the .NET Conf virtual conference in late September, Microsoft only previewed what future versions will bring. Some of these preview features are since then already generally available.
Visual Studio 2019
Visual Studio 2019 version 16.4 was released in December 2019 and primarily aimed at improving developer productivity:
- grouping of Find All References results by type and member,
- the option to use vertical document tabs instead of horizontal ones,
Figure 1: Vertical document tabs in Visual Studio 2019
- the ability to pin selected properties in the debugger windows (Autos, Locals and Watch).
XAML tooling in the latest version of Visual Studio 2019 (for WPF/UWP applications) also has many improvements, among others:
- The Create Data Binding dialog now works with UWP and .NET Core based WPF applications.
- The XAML Editor and XAML Designer can now be split into separate windows.
- The Live Visual Tree can be filtered to only show XAML written in the app and hide everything else.
Some of the features previewed at Microsoft Ignite are still available only in the latest preview version, Visual Studio 2019 version 16.5 Preview 1:
- improved Find in Files window for faster code navigation,
- including results in IntelliSense pop-ups even for symbols which don’t yet have a corresponding using directive in the current file.
An important contribution to developer productivity is also the enhanced IntelliCode feature which provides AI-powered assistance to programming. In the current version, it’s limited to improving IntelliSense suggestions, but it’s being extended with support for whole-line and argument completion, as well as refactoring. See Figure 2.
Figure 2: IntelliCode based IntelliSense suggestions
The default IntelliCode model is trained on open source code from GitHub. The ability to train the model from your own codebase is being simplified with the introduction of an Azure DevOps build task for training the model and support for associating the model with a repository, so that it can be automatically activated when working with the code from that repository.
Visual Studio for Mac
The key features of Visual Studio for Mac 8.4 (released in early January 2020) are support for ASP.NET Core Blazor Server mode and .NET Core 3.1. There’s also a big focus on accessibility with improved support for VoiceOver assistive technology and keyboard navigation. The code editing and debugging experience have been improved as well.
Visual Studio Live Share
Visual Studio Live Share allows you to share your development environment with another developer remotely. Without having to download and build the code locally, she/he will be able to edit and debug your code. She/He will also have access to your terminal as well as the running web application.
All of this is already available as a built-in feature in Visual Studio 2019 and as an extension for Visual Studio Code. Visual Studio 2019 version 16.4 includes additional Insiders set of features which can be enabled in the Options dialog:
- In addition to having access to a running web application, now a running desktop application (UWP, WPF, WinForms, Win32 C++ or console application) can be casted to the other developer as well. The developer will be able to see its window and interact with it.
- To avoid the need for sharing a link with the other developer to start a Live Share session, a list of contacts has been added which includes developers who you have recently had a Live Share session with, and those who recently worked on the same project. Your contacts will get a notification for a new Live Share session request directly inside their editor.
- Audio calls can now be started directly from inside Visual Studio.
Visual Studio Online
Visual Studio Online was originally the name for Microsoft’s cloud version of Team Foundation Server. It was later renamed to Visual Studio Team Services and finally rebranded to Azure DevOps Services.
At the Microsoft Build conference in May, Microsoft announced it will be releasing an online development environment based on Visual Studio Code, named Visual Studio Online.
At Microsoft Ignite, it was announced that Visual Studio Online is now available in public preview. The service allows on-demand creation of managed development environments in the cloud which can be used for quick tasks like code reviews or for long-term development in the cloud from a computer, which is not configured for development or doesn’t have enough processing power.
Figure 3: Visual Studio Online web-based editor
Environments are created automatically with minimal initial configuration, but can be fully customized and personalized. Development environments run on a Linux machine in the cloud. The pricing depends on the selected hardware configuration and is different when the environment is actively used and when it is suspended.
Although there is a web-based editor for the environment available online, you can also connect to it with your local copy of Visual Studio Code using the Visual Studio Online extension. The ability to use Visual Studio 2019 instead is currently in private preview along with support for Windows-based environments.
Azure DevOps Services
A couple of new Azure DevOps features were announced. All of them are part of or are closely related to Azure Pipelines, the CI/CD part of Azure DevOps:
- The introduction of pipeline artifacts and pipeline caching is useful when multiple pipelines contribute to the final build. A pipeline can now act as a trigger for another pipeline, providing its artifacts as input for the next pipeline. Thanks to caching, these intermediary results can be reused in later builds if their dependencies haven’t changed in the meantime.
- Azure Artifacts are repositories for packages (NuGet, npm, Maven or Python) to be used in builds or by the development team. In addition to previously available organization-scoped package feeds, there’s now also support for public feeds and project-scoped feeds.
- A Review Apps feature for Azure Pipelines has been made available in public preview. For applications deployed to Kubernetes, it can create a new environment for each pull request to which the application gets deployed so that it can be validated live. Support for deployment to other Azure services will be added in the future.
.NET Libraries and Frameworks Roadmap
The development of .NET Core continues after the final release of .NET Core 3.0 at the .NET Conf virtual conference in September 2019. New versions of some other SDKs have already been released at Ignite, but since then .NET Core 3.1 has also moved from preview, to a final version.
.NET Core 3.1
.NET Core 3.1 was released in the beginning of December 2019 as the next LTS (Long-Term Support) version of .NET Core after .NET Core 2.1. In comparison to .NET Core 3.0 most of its improvements are related to Windows desktop application development and Blazor Server mode.
Windows UI Library
Windows UI Library (WinUI) is the name used for the native UI platform for Windows 10. In its current version (WinUI 2), it brings additional controls and styles on top of UWP (Universal Windows Platform) and provides support for earlier versions of Windows 10 without having to add version checks to the application.
At Microsoft Ignite, WinUI 3 Alpha was released. It’s the first pre-release of a major update for Windows UI library planned for release in 2020. The main change is the decoupling from the UWP SDK. New features won’t depend on new versions of Windows 10 and will be released more frequently. The framework will be backward compatible and will still work with .NET, but won’t depend on it. This will make it useable from other environments as well, e.g.:
- unmanaged Windows applications written in standard C++,
- applications written in the next version of React Native for Windows.
Machine Learning for .NET
Machine Learning for .NET (ML.NET) is an open-source cross-platform machine learning framework for .NET developers. At Microsoft Ignite, version 1.4 was released, featuring the following:
- A new deep-neural-network-based image classification with GPU support implemented on top of TensorFlow and its .NET bindings. It can be used to train a custom image classification model in just a couple of lines of code. In future versions, additional deep neural network training scenarios such as object detection are planned.
- A database loader for loading training data directly from relational databases by simply providing the connection string, the SQL query and the model class without writing any custom data access code.
- Support for .NET Core 3.0 taking advantage of hardware intrinsics by using processor specific instructions to improve performance on modern processors and to improve compatibility with ARM processors.
Another ML.NET related announcement at Microsoft Ignite was support for .NET Core in Jupyter Notebooks. Although .NET Core support is in no way specific to ML.NET, the Jupyter Notebook ability to create documents consisting of text, live code and visualizations lends itself very well to machine learning tasks, such as data exploration and model training.
Figure 4: C# code in a Jupyter notebook
Version 4.6 of Microsoft Bot Framework SDK was released at Microsoft Ignite. In this version, the framework for building conversational bots for many different popular services was extended with general availability of support for Microsoft Teams. Additionally, several other features became available in preview:
- Bot Framework Skills were introduced as re-usable conversations which can be integrated into a larger bot solution providing a working implementation for common scenarios, such as managing your calendar or using maps for navigation.
- Adaptive dialogs allow temporary interruptions of a current conversation flow to handle user’s requests which can’t be handled by the current dialog. Once the interruption is handled by another dialog, the current conversation is resumed.
- Language Generation introduces special response templates which can be used to generate variable bot responses independently of the conversational logic.
In December 2019, version 4.7 of Microsoft Bot Framework SDK was released featuring a long list bug fixes and improvements, but no major new functionalities.
As an alternative to code-based development of conversational bots using the Microsoft Bot Framework SDK, a preview version of Power Virtual Agents was introduced as part of Microsoft’s Power Platform. It reached general availability in December 2019. This SaaS (software-as-a-service) offering allows creation of conversational bots with a code-free graphical user interface which can be used even by subject matter experts without any coding skills.
Figure 5: Power Virtual Agents graphical user interface
Azure Services Roadmap
Most Azure-related announcements at Microsoft Ignite were not of immediate interest to developers. However, some of them were about Azure services which primarily target developer audience.
Azure Machine Learning
The Azure Machine Learning service was expanded with:
- a new machine learning designer,
- enhancements to automated machine learning, and
- built-in notebooks.
ONNX Runtime 1.0 was released as well (and updated to 1.1 in December 2019). It can run all models based on ONNX (Open Neural Network Exchange) format 1.2.1 and higher with a big focus on performance. It’s not only available in the cloud but can also be deployed to IoT and edge devices, as well as to a local computer.
General availability of the following features was announced for Azure Functions, i.e. Microsoft’s serverless (also called Function-as-a-Service a.k.a. FaaS) offering:
- The Azure Functions Premium plan provides dedicated hosting to avoid cold starts by pre-warming the instances.
- Durable Functions are an extension to Azure Functions adding support for stateful functions and workflow orchestration. In the newly released version 2.0, an actor-like programming model was introduced.
- Support for developing functions in PowerShell and Python 3.7 was added.
Additionally, support for .NET Core 3.1 and Node.js 12 was added in December 2019.
Azure Blockchain Service
Azure Blockchain Service is a platform for implementing blockchain technologies in the enterprise. At Microsoft Ignite, the following new features were announced:
Azure Quantum was announced to become available in private preview in upcoming months. It’s going to be a cloud based service allowing you to run quantum programs written with Q# and the Quantum Developer Kit (QDK) on a variety of hardware: from classical compute service in Azure to quantum simulators and quantum hardware provided by technology partners.
Looking at the announcements at Microsoft Ignite, we can recognize Microsoft’s continuous focus on providing the best tools for developers, not only on Windows and for .NET, but also on other operating systems and for other development frameworks.
No matter where and what you’re developing, it’s worth keeping a tab on Microsoft’s tools and evaluating whether they can improve your productivity and development process.
Microsoft is also heavily investing in new technological trends for developers, such as serverless computing, machine learning, blockchain, and quantum computing. Even in these fields, the effort in making the technologies more accessible to developers can easily be recognized. This makes their offering interesting even if you don’t see how these technologies could be used at your current work.
The low barriers to entry make it easier to familiarize yourself with the benefits they can offer you, so that you can consider them in your future projects!
This article was technically reviewed by Daniel Jimenez Garcia
This article has been editorially reviewed by Suprotim Agarwal.
C# and .NET have been around for a very long time, but their constant growth means there’s always more to learn.
We at DotNetCurry are very excited to announce The Absolutely Awesome Book on C# and .NET. This is a 500 pages concise technical eBook available in PDF, ePub (iPad), and Mobi (Kindle).
Organized around concepts, this Book aims to provide a concise, yet solid foundation in C# and .NET, covering C# 6.0, C# 7.0 and .NET Core, with chapters on the latest .NET Core 3.0, .NET Standard and C# 8.0 (final release) too. Use these concepts to deepen your existing knowledge of C# and .NET, to have a solid grasp of the latest in C# and .NET OR to crack your next .NET Interview.
Click here to Explore the Table of Contents or Download Sample Chapters!
Was this article worth reading? Share it with fellow developers too. Thanks!
Damir Arh has many years of experience with software development and maintenance; from complex enterprise software projects to modern consumer-oriented mobile applications. Although he has worked with a wide spectrum of different languages, his favorite language remains C#. In his drive towards better development processes, he is a proponent of Test-driven development, Continuous Integration, and Continuous Deployment. He shares his knowledge by speaking at local user groups and conferences, blogging, and writing articles. He is an awarded Microsoft MVP for .NET since 2012.