一键导入
avalonia-deployment
Use when packaging or deploying Avalonia apps for Windows, macOS, Linux, WebAssembly, Android, or iOS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when packaging or deploying Avalonia apps for Windows, macOS, Linux, WebAssembly, Android, or iOS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when the user wants to see and choose between visual design alternatives for an Avalonia app before implementation — generates 3 design variants as real .axaml files, renders each to PNGs at multiple viewport sizes (compact/wide × light/dark) using Avalonia.Headless, and serves an HTML comparison gallery via a local web server. The user reviews in their browser and tells the agent which variant to build.
Use when designing or polishing the visual quality of an Avalonia app — choosing themes, building a design system, crafting beautiful screens, improving accessibility, motion, layout, or before shipping a UI. Routes to focused sub-skills for tokens, themes, components, motion, accessibility, layout patterns, icons, and pre-delivery review.
Use when working with Avalonia UI framework — building, styling, binding, animating, or deploying Avalonia apps with .NET.
Use when adding or auditing accessibility in an Avalonia app — AutomationProperties, focus order, keyboard navigation, contrast, screen reader (Narrator/NVDA/VoiceOver/Orca) support, dynamic text scaling, reduced motion. Maps WCAG 2.2 AA to Avalonia APIs.
Use when building production-quality Avalonia screens — copy-paste XAML recipes for cards, primary/secondary/icon buttons, dialogs, sidebar nav, command bar, settings page, forms with validation, empty states, toasts, badges, skeletons. All recipes use semantic tokens from the design-system sub-skill.
Use when establishing or refactoring an Avalonia app's design system — semantic color tokens, theme-variant dictionaries (light/dark), typography scale, spacing rhythm, radius and elevation tokens. Produces production-ready Resources/Tokens.axaml.
| name | avalonia-deployment |
| description | Use when packaging or deploying Avalonia apps for Windows, macOS, Linux, WebAssembly, Android, or iOS. |
Avalonia apps are .NET apps — standard dotnet publish with -r <RID> produces executables. Platform-specific packaging tools handle OS-native bundles.
| Platform | RID |
|---|---|
| Windows x64 | win-x64 |
| Windows ARM64 | win-arm64 |
| macOS x64 (Intel) | osx-x64 |
| macOS ARM64 (Apple Silicon) | osx-arm64 |
| Linux x64 | linux-x64 |
| Linux ARM64 | linux-arm64 |
# Self-contained single file (Windows)
dotnet publish -r win-x64 -c Release --self-contained true -p:PublishSingleFile=true
# Framework-dependent (requires .NET installed)
dotnet publish -r win-x64 -c Release --self-contained false
Options:
msix-packaging-toolPublishSingleFile=true + self-contained<!-- .csproj for Windows -->
<PropertyGroup>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
</PropertyGroup>
# Publish
dotnet publish -r osx-arm64 -c Release --self-contained true
# Bundle as .app using dotnet-bundle tool:
dotnet tool install --global Dotnet.Bundle
dotnet msbundle -r osx-arm64 /p:CFBundleVersion=1.0.0
Info.plist properties in .csproj:
<PropertyGroup>
<CFBundleName>MyApp</CFBundleName>
<CFBundleIdentifier>com.mycompany.myapp</CFBundleIdentifier>
<CFBundleVersion>1.0.0</CFBundleVersion>
<NSHighResolutionCapable>true</NSHighResolutionCapable>
</PropertyGroup>
Notarization requires Apple Developer account + xcrun notarytool.
# AppImage
dotnet publish -r linux-x64 -c Release --self-contained true
# Then use appimagetool to wrap the publish output
# Debian package (.deb)
dotnet publish -r linux-x64 -c Release
# Use dpkg-deb or dotnet-deb NuGet tool
dotnet tool install --global dotnet-deb
dotnet deb -r linux-x64 -c Release
Separate project (MyApp.Browser.csproj):
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia.Browser" Version="12.x.x"/>
</ItemGroup>
</Project>
Entry point uses ISingleViewApplicationLifetime.
dotnet publish -r browser-wasm -c Release
# Output is wwwroot/ — host on any static server
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-android</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia.Android" Version="12.x.x"/>
</ItemGroup>
</Project>
dotnet publish -f net9.0-android -c Release
# Produces .apk
<TargetFramework>net9.0-ios</TargetFramework>
<PackageReference Include="Avalonia.iOS" Version="12.x.x"/>
Requires macOS + Xcode. Produces .ipa.
Enable for smaller binaries — may break reflection-heavy code:
<PublishTrimmed>true</PublishTrimmed>
<TrimmerRootDescriptor>TrimmerRoots.xml</TrimmerRootDescriptor>
Avalonia 12 is trim-compatible. Watch for reflection in converters, ViewLocator.
| Tool | NuGet / Repo | Purpose |
|---|---|---|
| PupNet Deploy | GitHub: kuiperzone/PupNet-Deploy | Cross-platform deployment: AppImage, Flatpak, deb, rpm, MSIX, zip |
| dotnet-deb | dotnet-deb tool | Generate Debian .deb packages |
| Dotnet.Bundle | Dotnet.Bundle tool | macOS .app bundle + DMG creation |
| macOS.SparkleUpdater.Avalonia | GitHub: Deadpikle/macOS.SparkleUpdater.Avalonia | Sparkle auto-update integration for macOS |
dotnet tool install --global KuiperZone.PupNet
pupnet --help
# Build AppImage for Linux
pupnet -r linux-x64 -k AppImage
# Build MSIX for Windows
pupnet -r win-x64 -k Msix
# Build Setup.exe (Inno)
pupnet -r win-x64 -k Setup
PupNet reads a pupnet.conf in your project root. Handles icon conversion, desktop entries, version injection automatically.
.app bundle missing NSHighResolutionCapable → blurry on Retina--self-contained to machines without .NET installedISingleViewApplicationLifetime, not IClassicDesktopStyleApplicationLifetimeType.GetType() by string → types trimmed away; add trim roots