davidortinau/sentencestudio/aspire-maui-bundle-shim

Claude Code and agent skill by davidortinau/sentencestudio

Trust tier 3
  • community
  • ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Source check pending

Checking that the SKILL.md file is still in the repository.

Install

npx vskill@latest install davidortinau/sentencestudio/aspire-maui-bundle-shim

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

Skill: Aspire.Hosting.Maui bundle-name shim (MSBuild post-build)

When to use

A .NET MAUI project orchestrated by Aspire silently fails to launch (resource state goes to Exited / Failed, no console logs, exit code 1) and the project's <ApplicationTitle> differs from $(MSBuildProjectName).

Cause: Aspire.Hosting.Maui (≤ 13.3.0-preview) computes the bundle path as bin/$(Configuration)/$(TargetFramework)/<rid>/$(MSBuildProjectName).app and calls open -a on it. The MAUI build actually produces $(ApplicationTitle).app, so the file isn't found.

Fix (Mac Catalyst)

Add this target to the MAUI project's csproj:

xml
<Target Name="_CreateAspireBundleNameSymlink"
AfterTargets="Build"
Condition="'$(TargetFramework)' == 'net10.0-maccatalyst' And '$(_AppBundleName)' != '' And '$(_AppBundleName)' != '$(MSBuildProjectName)'">
<PropertyGroup>
<!-- $(OutputPath) already includes the RID for Mac Catalyst. Do NOT append $(RuntimeIdentifier). -->
<_AspireBundleDir>$(OutputPath)</_AspireBundleDir>
<_AspireBundleSourceApp>$(_AspireBundleDir)$(_AppBundleName).app</_AspireBundleSourceApp>
<_AspireBundleAliasApp>$(_AspireBundleDir)$(MSBuildProjectName).app</_AspireBundleAliasApp>
</PropertyGroup>
<Exec Condition="Exists('$(_AspireBundleSourceApp)')"
Command="ln -sfn '$(_AppBundleName).app' '$(_AspireBundleAliasApp)'"
WorkingDirectory="$(MSBuildProjectDirectory)" />
</Target>

Key facts

  • $(_AppBundleName) is set by the Xamarin/MAUI Shared SDK target

_GenerateBundleName and reflects the actual produced bundle name.

  • For Mac Catalyst, $(OutputPath) is already

bin/$(Config)/net10.0-maccatalyst/$(RuntimeIdentifier)/. Appending $(RuntimeIdentifier) again produces a doubled-RID path and the Exists() guard silently skips the Exec. Always check with dotnet build -v:diag and grep for the target name.

  • ln -sfn is idempotent — safe on rebuild.
  • Survives dotnet clean because the target is part of the normal Build chain.

iOS / other Apple platforms

Same pattern applies; gate the target on the appropriate TFM. iOS device builds may need the symlink in the Payload/ IPA directory instead of the plain .app directory — verify per-platform path before extending blindly.

Remove when

Aspire.Hosting.Maui exposes a bundle-name override API. Track upstream; delete the target and its XML comment when available.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Extension points

  • hookPre/post lifecycle hooks

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/davidortinau/sentencestudio/aspire-maui-bundle-shim/badge)](https://verified-skill.com/skills/davidortinau/sentencestudio/aspire-maui-bundle-shim)

Something wrong with this skill or its page? Tell us.