Skip to main content

Posts

Showing posts from June, 2022

Getting Started with DevOps and .NET MAUI

.NET Multi-platform App UI (.NET MAUI) unifies Android, iOS, macOS, and Windows UI frameworks into a single framework so you can write one app that runs natively on many platforms. In this post, we will look at how easy it is to implement basic DevOps pipelines for .NET MAUI apps using GitHub Actions and Azure DevOps. Getting Started Before setting up the pipelines, we need to make sure we have a few files ready. For iOS , you need a signing certificate and a provisioning profile. This guide walks you through how to obtain these files. (Optional for this post) For Android , you need keystore file and value of keystore password and keystore alias. This guide walks you through how to obtain the files. For Windows , you need to create and export a certificate for package signing. You can follow this guide for the steps. We are now ready to start creating the pipelines for the .NET MAUI app. We will be looking at the sample pipelines added to the dotnet/maui-samples repo as p...

Improving .NET host error messages and supportability

Have you ever tried to launch a .NET app and seen an error message telling you that you are missing a runtime, like the following? Have you ever been frustrated by an error message that you are missing an SDK but are not sure why? As part of .NET 7 Preview 6, we’ve updated several error messages and commands like dotnet --info to provide more helpful information. As the .NET Team, we get asked for help a lot. Supportability is important to us since it helps save everyone time and quickly gets developers, operations folks, and end users to a resolution for a problem. We intend errors to be informative enough that many users can self-diagnose their own issues, even non-technical users. We also want to make it straightforward for Independent Software Vendors (ISVs) to support their users. A big part of that is making error messages more informative without being complicated. Let’s take a look at what we’ve done to improve .NET 7. This post was written collectively by the .NET Host tea...

New Resources to Get Started with .NET MAUI

On May 23, 2022 the .NET Multi-platform App UI, or .NET MAUI, was released to general availability . .NET MAUI gives you a first-class, cross-platform UI stack targeting Android, iOS, macOS, and Windows. And we’re excited to announce several different ways to learn .NET MAUI. Whether you already have vast experience building cross-platform apps from the Xamarin days or are a brand-new cross-platform developer, there’s something here for you. Let’s Learn .NET MAUI We have several different resources to teach you .NET MAUI. We have workshops, Learn modules, videos and podcasts. Each vary on how in-depth they go and which aspects of .NET MAUI development they cover. Pick and choose what you need or use them all – you’ll learn a lot either way. Build mobile and desktop apps with .NET MAUI this Microsoft Learn path consists of 7 modules ranging from an introduction to .NET MAUI , to creating a UI with XAML , all the way to storing local data with SQLite , and more. Everything you need...

.NET Framework June 2022 Security and Quality Rollup Updates

We are releasing the June 2022 Security and Quality Rollup Updates for .NET Framework. Security The June Security and Quality Rollup Update does not contain any new security fixes. See May 2022 Security and Quality Rollup for the latest security updates. Quality and Reliability This release contains the following quality and reliability improvements. NET Runtime Addresses several issues that would cause too many garbage collections under high memory load. The part of the change that reduces the number of blocking generation 2 collections under high memory load is considered a tuning change and is only active if the GCConserveMemory setting is set to a non-zero value. The part of the change that reduces needless generation 0 collections is considered an improvement and is always active. Adjusted GC Heap Hard Limit configuration, as well as processor interpretation for .NET Framework container scenarios. WPF 1 Addresses an issue where DWM failures can cause WPF’s render thre...

Introducing the ML.NET Text Classification API (preview)

ML.NET is an open-source, cross-platform machine learning framework for .NET developers that enables integration of custom machine learning models into .NET apps. A few weeks ago we shared a blog post with updates of what we’ve been working on in ML.NET across the framework and tooling. Some of those updates included components of our deep-learning plan . An important part of that plan includes the introduction of scenario focused APIs in ML.NET. After months of work and collaborations with TorchSharp and Microsoft Research, today we’re excited to announce the Text Classification API. The Text Classification API is an API that makes it easier for you to train custom text classification models in ML.NET using the latest state-of-the-art deep learning techniques. What is text classification? Text classification as the name implies is the process of applying labels or categories to text. Common use cases include: Categorizing e-mail as spam or not spam Analyzing sentiment as po...

Exchange Online Journey to .NET Core

Microsoft 365 (M365) is a broad set of productivity services that enable teamwork, communication, and related experiences. Much of the codebase is written in C#. I’d like to tell you about the journey to .NET Core for the “M365 Substrate” services. Substrate is a set of services, which you can think of as being descended from Microsoft Exchange. In fact, Exchange was the first service at Microsoft to adopt .NET and to deploy as 64-bit. Substrate is a well-established and very sizable product. We were motivated to move to .NET Core for three reasons. The first was that we were very much in need of performance and cost-efficiency improvements. Any cloud-based vendor knows that every inefficiency costs real money. The second was that, knowing that the .NET Framework was no longer actively developed, we wanted to move to a modern framework that was blazing a trail to the future. The third, and likely more important is that it is cool and shiny and new. While we have many git repositories...