3f78ce00ab
TDLR: Microsoft.Maui.* NuGet packages are removed in favor of .NET
Workloads.
See `src/Workloads/README.md` for full details.
The idea, is a project to be able to set `$(UseMaui)`:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-android</TargetFramework>
<OutputType>Exe</OutputType>
<UseMaui>true</UseMaui>
</PropertyGroup>
</Project>
`$(UseMaui)` automatically brings in the following workload packs:
* `Microsoft.NET.Sdk.Maui`
* `Microsoft.Maui.Controls.Sdk`
* `Microsoft.Maui.Resizetizer.Sdk`
* `Microsoft.Maui.Core.Ref.[platform]`
* `Microsoft.Maui.Core.Runtime.[platform]`
* `Microsoft.Maui.Controls.Ref.[platform]`
* `Microsoft.Maui.Controls.Runtime.[platform]`
* `Microsoft.Maui.Dependencies`
* `Microsoft.Maui.Essentials.Ref.[platform]`
* `Microsoft.Maui.Essentials.Runtime.[platform]`
* `Microsoft.Maui.Extensions`
* `Microsoft.Maui.Templates`
BlazorWebView is an addition to MAUI, project can currently opt into
it by adding `.Razor` to the `Sdk` attribute.
`<Project Sdk="Microsoft.NET.Sdk.Razor">` sets
`$(UsingMicrosoftNETSdkRazor)`, which triggers the MAUI workload to
include:
* `Microsoft.AspNetCore.Components.WebView.Maui`
This will automatically add these dependencies:
<PackageReference Include="Microsoft.AspNetCore.Authorization" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebView" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Maui" />
<PackageReference Include="Microsoft.JSInterop" />
If you are a .NET 6 project, but don't want to use
Microsoft.Maui.Controls you could bring in partial parts of MAUI.
`$(UseMauiAssets)` brings in `Microsoft.Maui.Resizetizer.Sdk`.
`$(UseMauiCore)` brings in:
* `Microsoft.Maui.Core.Ref.[platform]`
* `Microsoft.Maui.Core.Runtime.[platform]`
`$(UseMauiEssentials)` brings in:
* `Microsoft.Maui.Essentials.Ref.[platform]`
* `Microsoft.Maui.Essentials.Runtime.[platform]`
Special files:
* `AutoImport.props` - defines the default includes (or wildcards) for
Maui projects will go. Note that this is imported by *all* .NET 6
project types -- *even non-mobile ones*.
* `WorkloadManifest.json` - general .NET workload configuration
* `WorkloadManifest.targets` - imports `Microsoft.Maui.Controls.Sdk` when
`$(UseMaui)` is `true`. Note that this is imported by *all* .NET 6
project types -- *even non-mobile ones*.
For further details about .NET Workloads, see these .NET design docs:
* [.NET Optional SDK Workloads](https://github.com/dotnet/designs/blob/main/accepted/2020/workloads/workloads.md)
* [Workload Resolvers](https://github.com/dotnet/designs/blob/main/accepted/2020/workloads/workload-resolvers.md)
* [Workload Manifests](
|
||
---|---|---|
.config | ||
.github | ||
.nuspec | ||
.vscode | ||
Assets | ||
eng | ||
src | ||
.editorconfig | ||
.gitattributes | ||
.gitconfig | ||
.gitignore | ||
BlazorNonWindows-net6.sln | ||
BlazorWindows-net6.sln | ||
BlazorWindowsDesktop-net6.sln | ||
Compatibility.ControlGallery.sln | ||
Directory.Build.props | ||
Directory.Build.targets | ||
GitInfo.txt | ||
LICENSE | ||
Microsoft.Maui-net6.sln | ||
Microsoft.Maui.BuildTasks-net6.sln | ||
Microsoft.Maui.BuildTasks.sln | ||
Microsoft.Maui.Droid.sln | ||
Microsoft.Maui.Samples-net6.slnf | ||
Microsoft.Maui.WinUI.sln | ||
Microsoft.Maui.iOS.sln | ||
Microsoft.Maui.sln | ||
Microsoft.Maui.sln.DotSettings | ||
NuGet.config | ||
README.md | ||
SECURITY.md | ||
build.cake | ||
build.cmd | ||
build.ps1 | ||
build.sh | ||
global.json |
README.md
Introducing .NET Multi-platform App UI (MAUI)
.NET MAUI is:
- Multi-platform native UI
- Deploy to multiple devices across mobile & desktop
- Using a single project, single codebase
- Evolution of Xamarin.Forms
- .NET 6
Build Status
Private | Public |
---|---|
Maui.sln
SDKS required
- Install the SDKs listed here https://github.com/dotnet/maui-samples
Running
IDE
- If you have Visual Studio 16.9 P4 or newer installed you can open
Maui.sln
and run it from there.
.NET 6
You can run a Cake
target to bootstrap .NET 6 in bin\dotnet
and launch Visual Studio:
dotnet tool restore
dotnet cake --target=VS-NET6
NOTES:
- VS Mac is not yet supported.
- If the IDE doesn't show any android devices try unloading and reloading the
Sample.Droid-net6
project.
You can also run commands individually:
# install local tools required to build (cake, pwsh, etc..)
dotnet tool restore
# Provision .NET 6 in bin\dotnet
dotnet build src\DotNet\DotNet.csproj
# Builds Maui MSBuild tasks
.\bin\dotnet\dotnet build Microsoft.Maui.BuildTasks-net6.sln
# Builds the rest of Maui
.\bin\dotnet\dotnet build Microsoft.Maui-net6.sln
# (Windows-only) to launch Visual Studio
dotnet cake --target=VS-DOGFOOD
To build & run .NET 6 sample apps, you will also need to use .\bin\dotnet\dotnet
:
.\bin\dotnet\dotnet build src\Controls\samples\Controls.Sample.Droid\Maui.Controls.Sample.Droid-net6.csproj -t:Run
.\bin\dotnet\dotnet build src\Controls\samples\Controls.Sample.iOS\Maui.Controls.Sample.iOS-net6.csproj -t:Run
Try out a "single project", you will need the -f
switch to choose the platform:
.\bin\dotnet\dotnet build src\Controls\samples\Controls.Sample.SingleProject\Maui.Controls.Sample.SingleProject.csproj -t:Run -f net6.0-android
.\bin\dotnet\dotnet build src\Controls\samples\Controls.Sample.SingleProject\Maui.Controls.Sample.SingleProject.csproj -t:Run -f net6.0-ios
To build and run Blazor Desktop samples, check out the Blazor Desktop wiki topic.
Current News
May 25, 2021 - Announcing .NET MAUI Preview 4
May 24, 2021 - Azure DevOps Podcast - Interview with David Ortinau
April 21, 2021 - WinUI Community Live Stream
April 21, 2021 - InfoQ Interview with David Ortinau
April 9, 2021 - Announcing .NET Multi-platform App UI Preview 3
April 9, 2021 - Xamarin Podcast - .NET MAUI Q&A
April 6, 2021 - On .NET with guest Maddy Leger - A Journey to .NET MAUI
Additional live streams and presentations:
- March 11, 2021 - Announcing .NET 6 Preview 2
- March 2021 - .NET Community Standup report
- February 25, 2021 - David Ortinau and Maddy Leger at .NET Conf: Focus on Windows: The Future of Client App Development in .NET 6
- January 28, 2021 - David Ortinau at .NET Frontend Day: A .NET MAUI Progress Report
- September 19, 2020 - Shane Neuville at ReactiveUI Virtual Conference: Dual Screen, .NET MAUI, and RxUI
- October 3, 2020 - James Clancey at Xamarin Expert Day: .NET MAUI MVU
- October 3, 2020 - David Ortinau at Xamarin Expert Day: Introducing .NET MAUI
- December 2, 2020 - Javier Suarez Ruiz at MonkeyConf: .NET MAUI Handlers (Spanish)
FAQs
Do you have questions? Do not worry, we have prepared a complete FAQ answering the most common questions.
How to Engage, Contribute, and Give Feedback
Some of the best ways to contribute are to try things out, file issues, join in design conversations, and make pull-requests. Proposals for changes specific to MAUI can be found here for discussion.
See CONTRIBUTING
Code of conduct
See CODE-OF-CONDUCT