devblogs.microsoft.com Open in urlscan Pro
2a02:26f0:6c00:29e::2f1e  Public Scan

Submitted URL: https://click.email.microsoftemail.com/?qs=82bfa38a1a565ad897f94370ff2c56a2ce7ef1b4247a9cc843eacfe8fc1c1b1311f4fb44f8fafff46293a542097d...
Effective URL: https://devblogs.microsoft.com/dotnet/introducing-dotnet-maui-one-codebase-many-platforms/?ocid=aid3046724&utm_issue=202206&utm...
Submission: On July 29 via api from US — Scanned from DE

Form analysis 3 forms found in the DOM

Name: searchFormGET /search

<form class="c-search" autocomplete="off" id="searchForm" name="searchForm" role="search" action="/search" method="GET"
  data-seautosuggest="{&quot;queryParams&quot;:{&quot;market&quot;:&quot;en-us&quot;,&quot;clientId&quot;:&quot;7F27B536-CF6B-4C65-8638-A0F8CBDFCA65&quot;,&quot;sources&quot;:&quot;Microsoft-Terms,Iris-Products,DCatAll-Products&quot;,&quot;filter&quot;:&quot;+ClientType:StoreWeb&quot;,&quot;counts&quot;:&quot;5,1,5&quot;},&quot;familyNames&quot;:{&quot;Apps&quot;:&quot;App&quot;,&quot;Books&quot;:&quot;Book&quot;,&quot;Bundles&quot;:&quot;Bundle&quot;,&quot;Devices&quot;:&quot;Device&quot;,&quot;Fees&quot;:&quot;Fee&quot;,&quot;Games&quot;:&quot;Game&quot;,&quot;MusicAlbums&quot;:&quot;Album&quot;,&quot;MusicTracks&quot;:&quot;Song&quot;,&quot;MusicVideos&quot;:&quot;Video&quot;,&quot;MusicArtists&quot;:&quot;Artist&quot;,&quot;OperatingSystem&quot;:&quot;Operating System&quot;,&quot;Software&quot;:&quot;Software&quot;,&quot;Movies&quot;:&quot;Movie&quot;,&quot;TV&quot;:&quot;TV&quot;,&quot;CSV&quot;:&quot;Gift Card&quot;,&quot;VideoActor&quot;:&quot;Actor&quot;}}"
  data-seautosuggestapi="https://www.microsoft.com/services/api/v3/suggest"
  data-m="{&quot;cN&quot;:&quot;GlobalNav_Search_cont&quot;,&quot;cT&quot;:&quot;Container&quot;,&quot;id&quot;:&quot;c1c9c3m1r1a1&quot;,&quot;sN&quot;:1,&quot;aN&quot;:&quot;c9c3m1r1a1&quot;}" aria-expanded="false">
  <input id="cli_shellHeaderSearchInput" aria-label="Search Expanded" aria-controls="universal-header-search-auto-suggest-transparent" aria-owns="universal-header-search-auto-suggest-ul" type="search" name="query" role="text" placeholder="Search"
    data-m="{&quot;cN&quot;:&quot;SearchBox_nav&quot;,&quot;id&quot;:&quot;n1c1c9c3m1r1a1&quot;,&quot;sN&quot;:1,&quot;aN&quot;:&quot;c1c9c3m1r1a1&quot;}" data-toggle="tooltip" data-placement="right" title="" data-original-title="Search">
  <input type="hidden" name="blog" value="/dotnet/" data-m="{&quot;cN&quot;:&quot;HiddenInput_nav&quot;,&quot;id&quot;:&quot;n2c1c9c3m1r1a1&quot;,&quot;sN&quot;:2,&quot;aN&quot;:&quot;c1c9c3m1r1a1&quot;}">
  <button id="search" aria-label="Search" class="c-glyph" data-m="{&quot;cN&quot;:&quot;Search_nav&quot;,&quot;id&quot;:&quot;n3c1c9c3m1r1a1&quot;,&quot;sN&quot;:3,&quot;aN&quot;:&quot;c1c9c3m1r1a1&quot;}" data-bi-mto="true" aria-expanded="false">
    <span role="presentation">Search</span>
    <span role="tooltip" class="c-uhf-tooltip c-uhf-search-tooltip">Search</span>
  </button>
  <div class="m-auto-suggest" id="universal-header-search-auto-suggest-transparent" role="group">
    <ul class="c-menu" id="universal-header-search-auto-suggest-ul" aria-label="Search Suggestions" aria-hidden="true" data-bi-dnt="true" data-bi-mto="true" data-js-auto-suggest-position="default" role="listbox" data-tel="jsll"
      data-m="{&quot;cN&quot;:&quot;search suggestions_cont&quot;,&quot;cT&quot;:&quot;Container&quot;,&quot;id&quot;:&quot;c4c1c9c3m1r1a1&quot;,&quot;sN&quot;:4,&quot;aN&quot;:&quot;c1c9c3m1r1a1&quot;}"></ul>
  </div>
</form>

<form id="wp-link" tabindex="-1">
  <input type="hidden" id="_ajax_linking_nonce" name="_ajax_linking_nonce" value="1ba0897531">
  <h1 id="link-modal-title">Insert/edit link</h1>
  <button type="button" id="wp-link-close"><span class="screen-reader-text">Close</span></button>
  <div id="link-selector">
    <div id="link-options">
      <p class="howto" id="wplink-enter-url">Enter the destination URL</p>
      <div>
        <label><span>URL</span>
          <input id="wp-link-url" type="text" aria-describedby="wplink-enter-url"></label>
      </div>
      <div class="wp-link-text-field">
        <label><span>Link Text</span>
          <input id="wp-link-text" type="text"></label>
      </div>
      <div class="link-target">
        <label><span></span>
          <input type="checkbox" id="wp-link-target"> Open link in a new tab</label>
      </div>
    </div>
    <p class="howto" id="wplink-link-existing-content">Or link to existing content</p>
    <div id="search-panel">
      <div class="link-search-wrapper">
        <label>
          <span class="search-label">Search</span>
          <input type="search" id="wp-link-search" class="link-search-field" autocomplete="off" aria-describedby="wplink-link-existing-content">
          <span class="spinner"></span>
        </label>
      </div>
      <div id="search-results" class="query-results" tabindex="0">
        <ul></ul>
        <div class="river-waiting">
          <span class="spinner"></span>
        </div>
      </div>
      <div id="most-recent-results" class="query-results" tabindex="0">
        <div class="query-notice" id="query-notice-message">
          <em class="query-notice-default">No search term specified. Showing recent items.</em>
          <em class="query-notice-hint screen-reader-text">Search or use up and down arrow keys to select an item.</em>
        </div>
        <ul></ul>
        <div class="river-waiting">
          <span class="spinner"></span>
        </div>
      </div>
    </div>
  </div>
  <div class="submitbox">
    <div id="wp-link-cancel">
      <button type="button" class="button">Cancel</button>
    </div>
    <div id="wp-link-update">
      <input type="submit" value="Add Link" class="button button-primary" id="wp-link-submit" name="wp-link-submit">
    </div>
  </div>
</form>

#

<form id="myForm" action="#">
  <div class="modal-body">
    <div class="form-group">
      <label for="code-text">Paste your code snippet</label>
      <textarea class="form-control" id="code-text" style="height: 150px;"></textarea>
    </div>
  </div>
</form>

Text Content

We use optional cookies to improve your experience on our websites, such as
through social media connections, and to display personalized advertising based
on your online activity. If you reject optional cookies, only cookies necessary
to provide you the services will be used. You may change your selection by
clicking “Manage Cookies” at the bottom of the page. Privacy Statement
Third-Party Cookies

Accept Reject Manage cookies

Skip to main content
Microsoft
.NET Blog
.NET Blog
.NET Blog
 * Home
 * DevBlogs
 * Developer
    * Visual Studio
    * Visual Studio Code
    * Visual Studio for Mac
    * DevOps
    * Developer support
    * CSE Developer
    * Engineering@Microsoft
    * Azure SDK
    * IoT
    * Command Line
    * Perf and Diagnostics
    * Dr. International
    * Notification Hubs
    * Math in Office

 * Technology
    * DirectX
    * PIX
    * SurfaceDuo
    * Startups
    * Sustainable Engineering
    * Windows AI Platform

 * Languages
    * C++
    * C#
    * F#
    * Visual Basic
    * TypeScript
    * PowerShell Community
    * PowerShell Team
    * Python
    * Q#
    * JavaScript
    * Java
    * Java Blog in Chinese

 * .NET
    * .NET
    * .NET MAUI
    * Blazor
    * ASP.NET
    * NuGet
    * Xamarin

 * Platform Development
    * #ifdef Windows
    * Apps for Windows
    * Azure Depth Platform
    * Azure Government
    * Bing Dev Center
    * Microsoft Edge Dev
    * Microsoft Azure
    * Microsoft 365 Developer
    * Old New Thing
    * Windows MIDI and Music dev
    * Windows Search Platform

 * Data Development
    * Azure Cosmos DB
    * Azure Data Studio
    * Azure SQL Database
    * OData
    * Revolutions R
    * SQL Server Data Tools

 * More

Login
Search Search

Cancel


INTRODUCING .NET MAUI – ONE CODEBASE, MANY PLATFORMS

David Ortinau



May 23rd, 2022134



Welcome to .NET Multi-platform App UI. This release marks a new milestone in our
multi-year journey to unify the .NET platform. Now you and over 5 million other
.NET developers have a first-class, cross-platform UI stack targeting Android,
iOS, macOS, and Windows to complement the .NET toolchain (SDK) and base class
library (BCL). You can build anything with .NET.

> Join us at Microsoft Build 2022 where we’ll give you a tour of all the updates
> for building native apps for any device with .NET and Visual Studio. » Learn
> more.

This is just the beginning of our journey to create a desktop and mobile app
experience that delights .NET developers. For the next phase, the foundation is
now established for the broader .NET ecosystem to bring plugins, libraries, and
services from .NET Framework and the old project system to .NET 6 and SDK style
projects. Among those available today are:



AndroidX AlohaKit CommunityToolkit.MVVM CommunityToolkit.Maui CommunityToolkit
MauiCompat CommunityToolkit Markup.MauiCompat DevExpress Facebook FreshMvvm.Maui
Google APIs for iOS Google Play Services Client Libraries GrialKit MauiAnimation
Microsoft.Maui.Graphics MR.Gestures Prism.Maui Plugin.Fingerprint
Plugin.InAppBilling Plugin.StoreReview Plugin.ValidationRules ReactiveUI.Maui
Shiny SkiaSharp Syncfusion Telerik UI for .NET MAUI TemplateUI User Dialogs

> For help moving libraries to .NET 6, check out the recent guest blog posts
> detailing experiences shipping .NET MAUI libraries from Michael Rumpler
> (MR.Gestures) and Luis Matos (Plugin.ValidationRules).

The .NET MAUI workload is fully supported under the Current release schedule of
18 months, and will be serviced at the same monthly cadence as .NET. Our ongoing
focus for .NET MAUI continues to be quality, resolving known issues and
prioritizing issues based on your feedback. This also includes the workloads we
ship for building applications that exclusively target Android, Android Wear,
CarPlay, iOS, macOS, and tvOS directly using the native toolkits from .NET, and
the supporting libraries AndroidX, Facebook, Firebase, Google Play Services, and
SkiaSharp.

With .NET MAUI you can achieve no-compromise user experiences while sharing more
code than ever before. .NET MAUI uses native UI via the premier app toolkits
provided by each platform, modern developer productivity, and our fastest mobile
platform yet.


NATIVE UI, NO COMPROMISE

The primary goal of .NET MAUI is to enable you to deliver the best app
experience as designed specially by each platform (Android, iOS, macOS, Windows,
and Tizen thanks to collaboration with Samsung), while enabling you to craft
consistent brand experiences through rich styling and graphics. Out of the box,
each platform looks and behaves the way it should without any additional widgets
or styling required to mimic. For example, .NET MAUI on Windows is backed by
WinUI 3 the premier native UI component that ships with the Windows App SDK.



Use C# and XAML to build your apps from a rich toolkit of more than 40 controls,
layouts, and pages. Upon the Xamarin shoulders of mobile controls, .NET MAUI
adds support for multi-window desktop applications, menu bars, and new animation
capabilities, borders, corners, shadows, graphics, and more. Oh, and the new
BlazorWebView which I’ll highlight below.



Read more in the .NET MAUI documentation about controls: pages, layouts, and
views.


ACCESSIBILITY FIRST

One major advantage of using native UI is the inherited accessibility support
that we can build upon with semantic services to make it easier than ever to
create highly accessible applications. We have worked closely with customers to
redesign how we develop for accessibility. From these conversations we have
designed .NET MAUI semantic services for controlling:

 * Properties such as description, hint, and heading level
 * Focus
 * Screen reader
 * Automation properties

Read more in the .NET MAUI documentation about semantic services for
accessibility.


BEYOND UI

.NET MAUI provides simple APIs to access services and features of each platform
such as accelerometer, app actions, file system, notifications, and so much
more. In this example, we configure “app actions” that add menu options to the
app icon on each platform:

AppActions.SetAsync(
    new AppAction("current_info", "Check Current Weather", icon: "current_info"),
    new AppAction("add_location", "Add a Location", icon: "add_location")
);



Read more in the .NET MAUI documentation about accessing platform services and
features.


EASILY CUSTOMIZED

Whether you’re extending the capabilities of .NET MAUI controls or establishing
new platform functionality, .NET MAUI is architected for extensibility, so you
never hit a wall. Take, for example, the Entry control – a canonical example of
a control that renders differently on one platform. Android draws an underline
below the text field, and developers often want to remove that underline. With
.NET MAUI, customizing every Entry in your entire project is just a few lines of
code:

#if ANDROID
Microsoft.Maui.Handlers.EntryHandler.Mapper.ModifyMapping("NoUnderline", (h, v) =>
{
    h.PlatformView.BackgroundTintList = ColorStateList.ValueOf(Colors.Transparent.ToPlatform());
});
#endif



Here is a great recent example of creating a new Map platform control by Cayas
Software. The blog post demonstrates creating a handler for the control,
implementation for each platform, and then making the control available by
registering it in .NET MAUI.

.ConfigureMauiHandlers(handlers =>
{
    handlers.AddHandler(typeof(MapHandlerDemo.Maps.Map),typeof(MapHandler));
})



Read more in the .NET MAUI documentation about customizing controls with
handlers


MODERN DEVELOPER PRODUCTIVITY

More than being a technology that can build anything, we want .NET to also
accelerate your productivity using common language features, patterns and
practices, and tooling.

.NET MAUI uses the new C# 10 features introduced in .NET 6, including global
using statements and file scoped namespaces – great for reducing clutter and
cruft in your files. And .NET MAUI takes multi-targeting to a new level with
“single project” focus.



In new .NET MAUI projects, the platforms are nestled away in a subfolder giving
focus to your application where you spend the majority of your effort. Within
your project’s Resources folder you have a single place to manage your app’s
fonts, images, app icon, splash screen, raw assets, and styling. .NET MAUI will
do the work to optimize them for each platform’s unique requirements.



> Multi-project vs Single project Structuring your solution with Individual
> projects for each platform is still supported, so you can choose when the
> single project approach is appropriate for your applications.

.NET MAUI uses the builder pattern made popular with Microsoft.Extensions
libraries in ASP.NET and Blazor applications as a single place to initialize and
configure your app. From here, you can provide .NET MAUI with your fonts, tap
into platform specific lifecycle events, configure dependencies, enable specific
features, enable vendor control toolkits, and more.

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureServices()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("Segoe-Ui-Bold.ttf", "SegoeUiBold");
                fonts.AddFont("Segoe-Ui-Regular.ttf", "SegoeUiRegular");
                fonts.AddFont("Segoe-Ui-Semibold.ttf", "SegoeUiSemibold");
                fonts.AddFont("Segoe-Ui-Semilight.ttf", "SegoeUiSemilight");
            });

        return builder.Build();
    }
}

public static class ServicesExtensions
{
    public static MauiAppBuilder ConfigureServices(this MauiAppBuilder builder)
    {
        builder.Services.AddMauiBlazorWebView();
        builder.Services.AddSingleton<SubscriptionsService>();
        builder.Services.AddSingleton<ShowsService>();
        builder.Services.AddSingleton<ListenLaterService>();
#if WINDOWS
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.Windows.NativeAudioService>();
#elif ANDROID
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.Android.NativeAudioService>();
#elif MACCATALYST
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.MacCatalyst.NativeAudioService>();
        builder.Services.TryAddSingleton< Platforms.MacCatalyst.ConnectivityService>();
#elif IOS
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.iOS.NativeAudioService>();
#endif

        builder.Services.TryAddTransient<WifiOptionsService>();
        builder.Services.TryAddSingleton<PlayerService>();

        builder.Services.AddScoped<ThemeInterop>();
        builder.Services.AddScoped<ClipboardInterop>();
        builder.Services.AddScoped<ListenTogetherHubClient>(_ =>
            new ListenTogetherHubClient(Config.ListenTogetherUrl));


        return builder;
    }
}

Read more in the .NET MAUI documentation about app startup with MauiProgram and
single project.


BRINGING BLAZOR TO DESKTOP AND MOBILE

.NET MAUI is also great for web developers looking to get in on the action with
native client apps. .NET MAUI integrates with Blazor, so you can reuse existing
Blazor web UI components directly in native mobile and desktop apps. With .NET
MAUI and Blazor, you can reuse your web development skills to build
cross-platform native client apps, and build a single UI that spans mobile,
desktop, and web.



.NET MAUI executes your Blazor components natively on the device (no WebAssembly
needed) and renders them to an embedded web view control. Because your Blazor
components compile and execute in the .NET process, they aren’t limited to the
web platform and can leverage any native platform feature, like notifications,
Bluetooth, geo-location and sensors, filesystem, and so much more. You can even
add native UI controls alongside your Blazor web UI. This is an all new kind of
hybrid app: Blazor Hybrid!

Getting started with .NET MAUI and Blazor is easy: just use the included .NET
MAUI Blazor App project template.



This template is all setup so you can start building a .NET MAUI Blazor app
using HTML, CSS, and C#. The Blazor Hybrid tutorial for .NET MAUI will walk you
through building and running your first .NET MAUI Blazor app.

Or add a BlazorWebView control to an existing .NET MAUI app wherever you want to
start using Blazor components:

<BlazorWebView HostPage="wwwroot/index.html">
    <BlazorWebView.RootComponents>
        <RootComponent Selector="#app" ComponentType="{x:Type my:Counter}" />
    </BlazorWebView.RootComponents>
</BlazorWebView>

Blazor Hybrid support is also now available for WPF and Windows Forms so you can
start modernizing your existing desktop apps to run on the web or to run cross
platform with .NET MAUI. The BlazorWebView controls for WPF and Windows Forms
are available on NuGet. Check out the Blazor Hybrid tutorials for WPF and
Windows Forms to learn how to get started.

To learn more about Blazor Hybrid support for .NET MAUI, WPF, and Windows forms,
check out the Blazor Hybrid docs.


OPTIMIZED FOR SPEED

.NET MAUI is designed for performance. You have told us how critical it is for
your applications to start as quickly as possible, especially on Android. The UI
controls in .NET MAUI implement a thin, decoupled handler-mapper pattern over
the native platform controls. This reduces the number of layers in the rendering
of UI and simplifies control customization.

The layouts in .NET MAUI have been architected to use a consistent manager
pattern that optimizes the measure and arrange loops to more quickly render and
update your UI. We have also surfaced layouts pre-optimized for specific
scenarios such as HorizontalStackLayout and VerticalStackLayout in addition to
StackLayout.

From the very beginning of this journey, we set a goal to improve startup
performance and maintain or reduce app size as we transitioned to .NET 6. At the
time of GA, we’ve achieved a 34.9% improvement for .NET MAUI and 39.4%
improvement in .NET for Android. Those gains extend to complex apps as well; the
.NET Podcast sample application began with a startup of 1299ms and at GA
measures 814.2ms, a 37.3% improvement since Preview 13.

The settings are enabled by default to provide a release build with these
optimizations.



Stay tuned for a deep-dive blog post on what we have done to achieve these
results.


GET STARTED TODAY

To get started using .NET MAUI on Windows, install or update Visual Studio 2022
Preview to version 17.3 Preview 1.1. In the installer, choose the workload “.NET
Multi-platform App UI development”.



To use .NET MAUI on Mac, install the new Visual Studio 2022 preview for Mac
(17.3 Preview 1).

Visual Studio 2022 will GA .NET MAUI tooling support later this year. On Windows
today you can accelerate your dev loop with XAML and .NET Hot Reload, and
powerful editors for XAML, C#, Razor, and CSS among others. Using the XAML Live
Preview and Live Visual Tree, you can preview, align, inspect your UI, and edit
it while debugging. .NET MAUI’s new single project experience now includes
project property pages for a visual editing experience to configure your apps
with multi-platform targeting.

On Mac, you can today load single project and multi-project .NET MAUI solutions
to debug with a beautiful, new native Visual Studio 2022 for Mac experience.
Other features for enhancing your productivity developing .NET MAUI applications
will ship in subsequent previews.

We recommend getting started updating your libraries to .NET MAUI and creating
new .NET MAUI projects today. Before diving headlong into converting Xamarin
projects to .NET MAUI, review your dependencies, the state of Visual Studio
support for .NET MAUI, and the published known issues to identify the right time
to transition. Keep in mind that Xamarin will continue to be supported under the
modern lifecycle policy, which states 2 years from the last major release.


RESOURCES

 * .NET MAUI – Workshop
 * Building your first .NET MAUI app
 * Documentation
 * Known Issues
 * Microsoft Learn Path
 * Q&A Forums
 * Release Notes
 * Samples
 * Support Policy – .NET MAUI
 * Support Policy – Xamarin


WE NEED YOUR FEEDBACK

We’d love to hear from you! As you encounter any issues, file a report on GitHub
at dotnet/maui.


SUMMARY

With .NET MAUI, you can build native applications for Android, iOS, macOS,
Tizen, and Windows from a single codebase using the same productivity patterns
practiced all across .NET. The thin and decoupled UI and layout architecture of
.NET MAUI together with single project features enable you to stay focused on
one application instead of juggling the unique needs of multiple platforms. And
with .NET 6, we’re shipping performance improvements not only for Android, but
all across the breadth of platform targets.

Less platform code, more shared code, consistent standards and patterns,
lightweight and performant architecture, mobile and desktop native experiences –
this is just the beginning. We look forward to seeing libraries and the broader
ecosystem come alongside .NET MAUI in the following months to define a new era
of cross-platform application development for .NET developers that empowers you
and your organization to achieve more.

Get Started


DAVID ORTINAU PRINCIPAL PRODUCT MANAGER, .NET MULTI-PLATFORM APP UI

Follow


Posted in .NET .NET MAUITagged .net maui releases

READ NEXT

.NET Framework May 2022 Cumulative Update
We are releasing the May 2022 Cumulative Update Preview Updates for .NET
Framework. Quality and Reliability This release contains the following quality
and reliability ...
Salini Agarwal
May 26, 2022
4 comments
Incremental ASP.NET to ASP.NET Core Migration
Introducing a simple pattern to apply the Strangler Fig pattern to migrating
ASP.NET to ASP.NET Core applications with the help of some new adapters.
Taylor Southwick
May 31, 2022
32 comments


134 COMMENTS


LEAVE A COMMENTCANCEL REPLY

Log in to join the discussion.

 * Page 1of comments
 * Page 2of comments
 * Page 3of comments
 * …
 * Page 7of comments
 * Next comment

 * Siggi Ullrich May 23, 2022 12:46 pm
   collapse this comment
   
   
   Just great
   
   Log in to Reply
   
 * Yahor Sinkevich May 23, 2022 1:02 pm
   collapse this comment
   
   
   web?
   
   Log in to Reply
   * David Ortinau May 23, 2022 1:53 pm
     collapse this comment
     
     
     If you’re targeting web, we recommend Blazor for that, and then bringing
     those components to desktop and mobile with .NET MAUI and BlazorWebView.
     
     Today for taking a mobile or desktop UI to web, we’d recommend considering
     Uno.
     
     I’d be interested in learning more about your interest and need. Shoot me a
     message if you’ve like to discuss. david.ortinau@microsoft.com
     
     Log in to Reply
     * Erick Filzek May 23, 2022 9:51 pm
       collapse this comment
       
       
       Savid we have sent an email today and posted a comment we really need
       your help! Please take a look and let make Maui happen and suceed !!!
       
       Log in to Reply
       
     * Peter N. Moore May 24, 2022 3:52 am
       collapse this comment
       
       
       https://github.com/dotnet/maui/discussions/62
       
       One of the earliest and most upvoted discussions in the repo. You guys
       know exactly what we all want and you know how to make it happen. As
       impressive as your work here has been it’s simply impossible to take any
       app framework seriously that doesn’t directly target web.
       
       Log in to Reply
       * Santiago Estrada Rubio May 25, 2022 11:34 pm
         collapse this comment
         
         
         I agree. Wise words, Peter.
         
         Log in to Reply
         
       
     * Omar Rodriguez May 24, 2022 4:27 am
       collapse this comment
       
       
       “Today for taking a mobile or desktop UI to web, we’d recommend
       considering Uno”
       
       Uno? What is that? Please share more info
       
       Log in to Reply
       * Peter N. Moore May 24, 2022 4:38 am
         collapse this comment
         
         
         Are you seriously asking Microsoft to Google something for you?
         
         Log in to Reply
         * Rand Random May 25, 2022 8:19 am
           collapse this comment
           
           
           Are you seriously asking Microsoft to Bing something for you?
           fixed that for you
           
           
           
         
       
     * Peter N. Moore May 24, 2022 4:38 am
       collapse this comment
       
       
       So Blazor, Uno, and MAUI. Your motto should be Why use one framework when
       you can use three for three times the cost?
       
       Log in to Reply
       * anonymous May 24, 2022 7:04 am
         collapse this comment
         
         
         this comment has been deleted.
         
         Log in to Reply
         
       * Tim Wong May 27, 2022 2:11 am
         collapse this comment
         
         
         Agree, don’t know why Microsoft reinvents the wheel today. The
         community already has some stable solutions for multi-platform
         development (such as “Uno platform”), so there’s no point in
         reinventing the wheel. Acquisition makes more sense, not only for the
         developer but also for resource utilization and integration.
         
         Log in to Reply
         
       
     * Andrew Witte May 24, 2022 1:11 pm
       collapse this comment
       
       
       Unity3D is has a more portable UI than anything MS has come out with. It
       would almost be easier to write a portable app with that game-engine.
       The solution is a Skia like rendering layer and UI built on top.
       Blazor is a ridiculous bloatware suggestion. (how to increase app size &
       decrease performance for no reason)
       
       Log in to Reply
       
     * Lukas June 15, 2022 12:25 am
       collapse this comment
       
       
       I’d love to use Uno Platform for new projects! As opposed to MAUI it has
       the full WinUI XAML Syntax and feature set. And it is truly
       cross-platform, including WebAssembly and Linux as target platforms.
       
       But the performance is so horrible that this is a no-go for any end user
       app. The startup time of an empty app is a multitude of that of an empty
       MAUI or .NET Android app. Also the runtime performance is also bad (page
       switch times). I don’t know what they are doing wrong. They use Xamarin
       technology underneath, so theoretically, they should be able to bring
       similar performance. I filed an issue two years ago, but nothing really
       happened in the performance area.
       
       I’d wish Microsoft would buy Uno, and have their experts do some serious
       work on the performance side of things. Then this would be the definitive
       #1 cross-platform UI framework for me.
       
       Log in to Reply
       
     * Robert O'Brien June 18, 2022 5:02 pm
       collapse this comment
       
       
       Curious about recommendation of generating ones web app story using
       blazor, i.e. web assembly. Why not just go the route of using one of the
       leading transpiler, vs framework, based native html5/ccs3/es6 single page
       web app development offerings like svelte?
       
       It would appear that .net maui’s ability to generate native android, iOS,
       macOS, tizen and windows apps is a preferred approach to x-platform
       native mobile/desktop store application development than the apache
       cordova effort aimed at converting single page web app implementations
       into native mobile/desktop store application solutions using the platform
       specific native app web control container host.
       
       Log in to Reply
       
     
   
 * Nathan Loum May 23, 2022 1:31 pm
   collapse this comment
   
   
   Congratulations, nicely done! Is there a schedule on when the MVU coding
   style will be available? Are you guys still planning on making Comet the
   official MVU option for .NET MAUI?
   
   Log in to Reply
   * David Ortinau May 23, 2022 1:56 pm
     collapse this comment
     
     
     Comet will be shipping a version based on .NET MAUI GA, and we will be
     ramping up our activity there in the coming weeks. It’ll continue as an
     experiment for the time being as we determine what investment we should
     make based on developer usage and need.
     
     Log in to Reply
     * Ashish Khanal May 23, 2022 4:20 pm
       collapse this comment
       
       
       Thank you and Congratulations on MAUI GA release!
       All the developers I know (myself included) would love to have Comet come
       to .NET MAUI.
       
       Log in to Reply
       
     * radioActive DROID May 23, 2022 5:49 pm
       collapse this comment
       
       
       Really looking forward to comet being supported, it a real blocker for me
       i like c# a lot but don’t want to write my UI in XAML
       
       Log in to Reply
       * Revi June 14, 2022 11:09 am
         collapse this comment
         
         
         Feel exactly the same, really don’t know why they continue with
         XAML….Comet is a must in the modern world….
         
         Log in to Reply
         
       
     
   
 * Jin Park May 23, 2022 2:48 pm
   collapse this comment
   
   
   I think I somehow messed up my mac m1 while removing old dotnet versions.
   With everything installed on todays version or even the last RC I can restore
   and build any other template types such as web but when I do: dotnet new maui
   -n “MauiProj” and do a “dotnet restore” in that directory I get a bunch of
   nuget errors like below. Its like nuget is only looking for linux versions.
   Anyone have any ideas?
   
   /Users/user/temp/MauiProj/MauiProj.csproj : error NU1102: Unable to find
   package Microsoft.NETCore.App.Host.linux-arm with version (= 6.0.5)
   [/Users/user/temp/MauiProj/MauiProj.sln]
   /Users/user/temp/MauiProj/MauiProj.csproj : error NU1102: – Found 84
   version(s) in nuget.org [ Nearest version: 7.0.0-preview.1.22076.8 ]
   [/Users/user/temp/MauiProj/MauiProj.sln]
   /Users/user/temp/MauiProj/MauiProj.csproj : error NU1102: – Found 0
   version(s) in /usr/local/share/dotnet/library-packs
   [/Users/user/temp/MauiProj/MauiProj.sln]
   
   Log in to Reply
   * David Ortinau May 23, 2022 4:44 pm
     collapse this comment
     
     
     Try posting in the Q&A forum. I have guesses. Link back here to your forum
     thread if you don’t get a solution.
     
     Log in to Reply
     * anonymous May 24, 2022 1:59 am
       collapse this comment
       
       
       this comment has been deleted.
       
       Log in to Reply
       
     
   
 * M San May 23, 2022 2:58 pm
   collapse this comment
   
   
   Teams desktop and Skype are excellent candidates for Blazor MAUI dogfooding
   IMO.
   
   Log in to Reply
   * Ashish Khanal May 23, 2022 4:22 pm
     collapse this comment
     
     
     Yes, Microsoft needs to use tools that they develop.
     
     Log in to Reply
     * Roberto Mencia Franco May 25, 2022 3:58 am
       collapse this comment
       
       
       They should also create issues using their community portal and go
       through the process to see what it feels like.
       
       Log in to Reply
       * Rolf Kristensen May 26, 2022 12:56 pm
         collapse this comment
         
         
         Priceless
         
         Log in to Reply
         
       
     
   
 * Daniel Smith May 23, 2022 3:57 pm
   collapse this comment
   
   
   Would it be possible to support Blazor WebAssembly PWAs as a target platform
   in the future? You’d automatically have access to .NET with that, and it
   would cover all the remaining gaps (Linux & web) with a single target.
   
   I ask this because I’ve been playing with Blazor PWAs recently. You’ve got
   complete flexibility to choose any web UI framework, however I couldn’t help
   thinking that it would be great if there was a bunch of helper controls and
   layouts like MAUI has.
   
   If you can translate XAML to native controls on iOS and Android etc, then
   surely it’s feasible to translate the visuals to HTML with bit of CSS magic
   
   Log in to Reply
   * Andrew Beeman May 27, 2022 2:47 am
     collapse this comment
     
     
     I like this idea but I can assure you it’s fairly simple to share most of
     the code now. I used interfaces for my services in Blazor that called data
     from IndexedDB in the browser and I moved those to SQLite in Mobile /
     Desktop. It only took a couple weeks to have a 90% shared code base.
     
     Log in to Reply
     
   
 * Ashish Khanal May 23, 2022 4:31 pm
   collapse this comment
   
   
   Thank you and Congratulations on MAUI GA release! This is very exciting!
   Few requests/ suggestions I can think of that will make MAUI even more
   amazing:
   1. Please bring C# markup to MAUI.
   2. Dogfood MAUI in projects at Microsoft like Teams, Office, Visual Studio
   for Mac etc. This will GREATLY build developer confidence.
   3. Create great video tutorials and release them to freecodecamp YouTube
   channel. This will expose MAUI to lot more developers.
   
   Thank you!
   
   Log in to Reply
   * Bret Johnson May 23, 2022 5:22 pm
     collapse this comment
     
     
     On C# markup, I’m curious to know more about what exactly you’d like to see
     there – what syntax. Feel free to create a New Feature request here
     https://github.com/dotnet/maui/issues and say more, to start a discussion
     thread.
     
     Log in to Reply
     
   * Yi Wang May 23, 2022 9:16 pm
     collapse this comment
     
     
     Do you have any idea about how huge those programs are? Rewritting them,
     their supporting libs and all of their tool chain is insane. Why dont you
     ask google to rewrite android studio using Flutter or Apple to rewrite
     XCode with swfit?
     
     This is good for mobile app level application.
     
     Log in to Reply
     
   
 * Jarem Archer May 23, 2022 4:43 pm
   collapse this comment
   
   
   Acrylic support?
   
   Log in to Reply
   * David Ortinau May 24, 2022 9:33 am
     collapse this comment
     
     
     Check out this example where Tim demonstrates using an Acrylic window and
     Mica window.
     
     https://github.com/drasticactions/DrasticMauiSamples/tree/main/MicaAcrylicWindows/Platforms/Windows
     
     Log in to Reply
     
   
 * James Barton May 23, 2022 5:31 pm
   collapse this comment
   
   
   Love it; but I can’t get my MAUI app, when debugging on an android emulator,
   to talk to my local API
   https://stackoverflow.com/questions/72313635/net-maui-android-cant-talk-to-api-localhost
   
   Log in to Reply
   
 * Emmanuel Adebiyi May 23, 2022 6:08 pm
   collapse this comment
   
   
   Congratulations to the community!
   
   Log in to Reply
   

 * Page 1of comments
 * Page 2of comments
 * Page 3of comments
 * …
 * Page 7of comments
 * Next comment

RELEVANT LINKS

.NET Download

.NET Hello World

.NET Meetup Events

.NET Documentation

.NET API Browser

.NET SDKs

.NET APPLICATION ARCHITECTURE GUIDES

Web apps with ASP.NET Core

Mobile apps with Xamarin.Forms

Microservices with Docker Containers

Modernizing existing .NET apps to the cloud

ARCHIVE

July 2022 June 2022 May 2022 April 2022 March 2022 February 2022 January 2022
December 2021 November 2021 October 2021 September 2021 August 2021 July 2021
June 2021 May 2021 April 2021 March 2021 February 2021 January 2021 December
2020 November 2020 October 2020 September 2020 August 2020 July 2020 June 2020
May 2020 April 2020 March 2020 February 2020 January 2020 December 2019 November
2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April
2019 March 2019 February 2019 January 2019 December 2018 November 2018 October
2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March
2018 February 2018 January 2018 December 2017 November 2017 October 2017
September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017
February 2017 January 2017 December 2016 November 2016 October 2016 September
2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February
2016 January 2016 December 2015 November 2015 October 2015 September 2015 August
2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January
2015 December 2014 November 2014 October 2014 September 2014 August 2014 July
2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014
December 2013 November 2013 October 2013 September 2013 August 2013 July 2013
June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December
2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012
May 2012 April 2012 March 2012 February 2012 January 2012 October 2011 September
2011 August 2011 June 2011 April 2011 March 2011 February 2011 January 2011
December 2010 November 2010 October 2010 September 2010 August 2010 July 2010
June 2010 May 2010 April 2010 March 2010 February 2010 December 2009 November
2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April
2009 March 2009 February 2009 January 2009 December 2008 November 2008 October
2008 September 2008 August 2008 July 2008 June 2008 May 2008 April 2008 March
2008 February 2008 January 2008 December 2007 November 2007 October 2007
September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 March 2007
February 2007 January 2007 December 2006 November 2006 October 2006 September
2006 August 2006 July 2006 June 2006 May 2006 April 2006 March 2006 February
2006 January 2006 October 2005 July 2005 May 2005 December 2004 November 2004
September 2004 June 2004

TOPICS

.NET ASP.NET .NET Core ASP.NET Core .NET Framework Blazor Entity Framework C#
Azure Visual Studio WPF ML.NET Performance .NET MAUI Machine Learning F#
WinForms AI Machine Learning .NET Internals Maintenance & Updates SignalR
Security Community Standup Containers Conversations Developer Stories Cloud WCF
Game Development Debugging Show dotnet Lifecycle Networking WebHooks Maoni
Docker Async GitHub Actions TPL GC Concurrency gRPC Featured Static Analysis
Visual Basic Spark for .NET Big Data Apache IoT Orchard Core SQL Server JSON LOH
XAML


STAY INFORMED








INSERT/EDIT LINK

Close

Enter the destination URL

URL
Link Text
Open link in a new tab

Or link to existing content

Search

No search term specified. Showing recent items. Search or use up and down arrow
keys to select an item.

Cancel


CODE BLOCK

×
Paste your code snippet
Cancel Ok
What's new
 * Surface Pro 8
 * Surface Laptop Studio
 * Surface Pro X
 * Surface Go 3
 * Surface Duo 2
 * Surface Pro 7+
 * Windows 11 apps
 * HoloLens 2

Microsoft Store
 * Account profile
 * Download Center
 * Microsoft Store support
 * Returns
 * Order tracking
 * Virtual workshops and training
 * Microsoft Store Promise
 * Flexible Payments

Education
 * Microsoft in education
 * Devices for education
 * Microsoft Teams for Education
 * Microsoft 365 Education
 * Education consultation appointment
 * Educator training and development
 * Deals for students and parents
 * Azure for students

Business
 * Microsoft Cloud
 * Microsoft Security
 * Azure
 * Dynamics 365
 * Microsoft 365
 * Microsoft Advertising
 * Microsoft Industry
 * Microsoft Teams

Developer & IT
 * Developer Center
 * Documentation
 * Microsoft Learn
 * Microsoft Tech Community
 * Azure Marketplace
 * AppSource
 * Microsoft Power Platform
 * Visual Studio

Company
 * Careers
 * About Microsoft
 * Company news
 * Privacy at Microsoft
 * Investors
 * Diversity and inclusion
 * Accessibility
 * Security

English (United States)
 * Sitemap
 * Contact Microsoft
 * Privacy
 * Manage cookies
 * Terms of use
 * Trademarks
 * Safety & eco
 * About our ads
 * © Microsoft 2022

Notifications