
Skill
maui-project-structure
configure .NET MAUI project structure
Description
Configure .NET MAUI single-project structure: app icons and splash screens, resource folders, shared images/fonts/raw assets, app display/build versioning, Central Package Management, and platform metadata files. USE FOR: MauiIcon, MauiSplashScreen, MauiImage, MauiAsset, Resources/Images/Fonts/Raw, EmbeddedResource/Content migration, PackageVersion, versionless PackageReference, Directory.Packages.props, AndroidManifest.xml, Info.plist, Package.appxmanifest, ApplicationDisplayVersion/ApplicationVersion, package IDs/app identifiers guardrails, and rejecting `maui project version` for store versions. DO NOT USE FOR: UI debugging, workload discovery, or MVVM/Shell architecture.
SKILL.md
MAUI Project Structure
Use this skill when editing the shape of a MAUI app project rather than a single
feature implementation. Inspect existing conventions first and preserve them.
Critical app-version guardrail: never answer "yes" to using maui project version for platform app display/build versions. Use
ApplicationDisplayVersion and ApplicationVersion directly.
Workflow
- Identify which file is the MAUI app project (has
<UseMaui>true</UseMaui>). - Check for Central Package Management: if
Directory.Packages.propsexists, add new NuGet package versions there with<PackageVersion Include="..." Version="..." />, and keepPackageReferenceitems in the.csprojversionless. - Use the MAUI resource folder layout for app assets:
Resources/Images/→MauiImage(images/icons)Resources/Fonts/→MauiFont(custom fonts)Resources/Raw/→MauiAsset(bundled JSON, data, HTML files)
- For app display/build version edits, use
ApplicationDisplayVersionandApplicationVersionas MSBuild properties in the.csproj. - If environment issues arise, run
maui doctor. - Build the edited project to verify.
Project File Patterns
Central Package Management
<!-- Directory.Packages.props -->
<PackageVersion Include="CommunityToolkit.Maui" Version="x.y.z" />
<!-- App.csproj -->
<PackageReference Include="CommunityToolkit.Maui" />
App Version
<ApplicationDisplayVersion>1.2.3</ApplicationDisplayVersion>
<ApplicationVersion>123</ApplicationVersion>
maui project version is for the MAUI package/workload version used by the
project, not the platform app display/build version.
If the prompt asks whether to use maui project version for app display/build
versioning, the final response must explicitly answer: do not use it for
ApplicationDisplayVersion or ApplicationVersion; set those MSBuild
properties directly.
Resources
<MauiImage Include="Resources/Images/*" />
<MauiFont Include="Resources/Fonts/*" />
<MauiAsset Include="Resources/Raw/**" />
Platform Configuration Map
| Platform | Common files |
|---|---|
| Android | Platforms/Android/AndroidManifest.xml, MainActivity.cs, MainApplication.cs |
| iOS | Platforms/iOS/Info.plist, AppDelegate.cs, entitlements if needed |
| Mac Catalyst | Platforms/MacCatalyst/Info.plist, entitlements if needed |
| Windows | Platforms/Windows/Package.appxmanifest, App.xaml.cs |
Anti-Patterns
- Do not put package versions in
.csprojfiles when Central Package Management is active. - Do not add raw platform assets outside the MAUI
ResourcesorPlatformslayout unless the project already has a custom build convention. - Do not assume every app targets Android, iOS, Mac Catalyst, and Windows.
- Do not change signing, provisioning, package IDs, or app identifiers without explicit user intent.
- Do not claim
maui project version setor similar CLI syntax can set the app display/build version; useApplicationDisplayVersionandApplicationVersion.
Validation Checklist
- The project with
<UseMaui>true</UseMaui>was identified. - Package versions follow the repo's package management model.
- Resource files are in the correct MAUI resource folders.
- Platform-specific settings are in the matching
Platforms/*folder. - Version changes use
ApplicationDisplayVersionandApplicationVersion. - Prompts that mention
maui project versionexplicitly say it is not for app display/build versioning.
More skills from the maui-labs repository
View all 32 skillsandroid-slim-bindings
create Android slim bindings for .NET
Jul 12.NETAndroidJavaKotlin +1devflow-automation
automate .NET MAUI app state
Jul 12.NETAutomationMAUIMobiledevflow-connect
diagnose DevFlow agent connectivity issues
Jul 12DebuggingMAUINetworkingdotnet-workload-info
discover MAUI workload metadata
Jul 12C#CLIEngineeringMAUIios-slim-bindings
create iOS slim bindings for MAUI
Jul 12.NETiOSMAUISwift +1maui-accessibility
implement accessibility in .NET MAUI apps
Jul 12.NETAccessibilityMAUIMobile +1
More from .NET (Microsoft)
View publishermultithreaded-task-migration
migrate MSBuild tasks to multithreaded mode
msbuild
Jul 12.NETEngineeringPerformanceanalyzing-dotnet-performance
analyze .NET code for performance anti-patterns
skills
Jul 12.NETCode AnalysisDebuggingPerformanceandroid-tombstone-symbolication
symbolicate .NET runtime frames in Android tombstones
skills
Jul 12.NETAndroidDebuggingMicrosoftapple-crash-symbolication
symbolicate .NET runtime frames in crash logs
skills
Jul 12.NETDebuggingiOSmacOS +1assertion-quality
evaluate assertion quality in test suites
skills
Jul 12Code AnalysisQATestingauthor-component
create and review Blazor components
skills
Jul 15.NETBlazorC#UI Components +1