Skip to content

Conversation

@jonathanpeppers
Copy link
Member

Context: https://github.com/dotnet/sdk/blob/c164a9bc1246c48191fb780992530f0fe975141b/documentation/specs/dotnet-run-for-maui.md

Implements the DeployToDevice MSBuild target per the dotnet run spec for .NET MAUI scenarios. This target allows deploying an already-built app to a device without rebuilding, supporting the dotnet run workflow.

The target reuses existing deployment logic but skips the full build, enabling faster iteration when only deployment is needed e.g. --no-build.

Also consolidates $(SignAndroidPackageDependsOn), $(InstallDependsOnTargets), and $(UninstallDependsOnTargets) properties into BuildOrder.targets to keep all target dependency ordering in one place.

Adds test coverage to verify the target deploys successfully and the app can be launched via adb commands.

Context: https://github.com/dotnet/sdk/blob/c164a9bc1246c48191fb780992530f0fe975141b/documentation/specs/dotnet-run-for-maui.md

Implements the `DeployToDevice` MSBuild target per the `dotnet run` spec
for .NET MAUI scenarios. This target allows deploying an already-built
app to a device without rebuilding, supporting the `dotnet run`
workflow.

The target reuses existing deployment logic but skips the full build,
enabling faster iteration when only deployment is needed e.g.
`--no-build`.

Also consolidates `$(SignAndroidPackageDependsOn)`,
`$(InstallDependsOnTargets)`, and `$(UninstallDependsOnTargets)`
properties into `BuildOrder.targets` to keep all target dependency
ordering in one place.

Adds test coverage to verify the target deploys successfully and the
app can be launched via adb commands.
@jonathanpeppers
Copy link
Member Author

New test is working:

image

@jonathanpeppers jonathanpeppers marked this pull request as ready for review December 5, 2025 16:59
jonathanpeppers added a commit to dotnet/sdk that referenced this pull request Dec 5, 2025
Context: dotnet/android#10631

Add support for calling the `DeployToDevice` MSBuild target during
`dotnet run`. The target is invoked after the build step (or with
--no-build) to enable deployment to physical devices or emulators.

- Create `RunCommandSelector` once per run for framework/device
  selection and deployment

- Call `DeployToDevice` target if it exists in the project

- Reuse cached `ProjectInstance` for performance

- Add localized message for deployment failures

- Added tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants