Skip to main content

maui-project-structure

Configure MAUI single-project structure. USE FOR: app icons/splash screens, resource folders, images/fonts/raw assets, app display/build versioning, Central Package Management, platform metadata files, `AndroidManifest.xml`, `Info.plist`, package IDs/app identifiers. DO NOT USE FOR: UI debugging, workload discovery, MVVM/Shell architecture.

Source facts

Repository
dotnet/maui-labs
Last source activity
September 2, 2026 at 10:09
Detected SKILL.md language
English
Stars
225
Forks
36

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
maui-project-structure
description
Configure MAUI single-project structure. USE FOR: app icons/splash screens, resource folders, images/fonts/raw assets, app display/build versioning, Central Package Management, platform metadata files, `AndroidManifest.xml`, `Info.plist`, package IDs/app identifiers. DO NOT USE FOR: UI debugging, workload discovery, MVVM/Shell architecture.
# 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 1. Identify which file is the MAUI app project (has `<UseMaui>true</UseMaui>`). 2. Check for Central Package Management: if `Directory.Packages.props` exists, add new NuGet package versions there with `<PackageVersion Include="..." Version="..." />`, and keep `PackageReference` items in the `.csproj` versionless. 3. 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) 4. For app display/build version edits, use `ApplicationDisplayVersion` and `ApplicationVersion` as MSBuild properties in the `.csproj`. 5. If environment issues arise, run `maui doctor`. 6. Build the edited project to verify. ## Project File Patterns ### Central Package Management ```xml <!-- Directory.Packages.props --> <PackageVersion Include="CommunityToolkit.Maui" Version="x.y.z" /> ``` ```xml <!-- App.csproj --> <PackageReference Include="CommunityToolkit.Maui" /> ``` ### App Version ```xml <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 ```xml <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 `.csproj` files when Central Package Management is active. - Do not add raw platform assets outside the MAUI `Resources` or `Platforms` layout 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 set` or similar CLI syntax can set the app display/build version; use `ApplicationDisplayVersion` and `ApplicationVersion`. ## 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 `ApplicationDisplayVersion` and `ApplicationVersion`. - Prompts that mention `maui project version` explicitly say it is not for app display/build versioning.
View on GitHub