ワンクリックで
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