Skip to content

Drop nuget.config alongside single-file apphost.cs in aspire init - #16636

Merged
Mitch Denny (mitchdenny) merged 6 commits into
mainfrom
deploy-test/repro-e2e-failures
May 1, 2026
Merged

Drop nuget.config alongside single-file apphost.cs in aspire init#16636
Mitch Denny (mitchdenny) merged 6 commits into
mainfrom
deploy-test/repro-e2e-failures

Conversation

@mitchdenny

@mitchdenny Mitch Denny (mitchdenny) commented May 1, 2026

Copy link
Copy Markdown
Member

Problem

After #15918 redesigned aspire init to drop a single-file apphost.cs (with a #:sdk Aspire.AppHost.Sdk@<version> directive) and an aspire.config.json instead of a full .csproj project, the generated workspace contains no nuget.config.

When a CLI built from a local hive (e.g. ~/.aspire/hives/<name>/packages) is used, the local hive is invisible to MSBuild — so the SDK directive cannot be resolved and any operation that triggers MSBuild restore fails. The deployment E2E tests run against exactly this configuration and were failing 12 of 13 with:

❌ Unhandled exception: The SDK 'Aspire.AppHost.Sdk/<version>' specified
   could not be found. /tmp/.../apphost.csproj
❌ The package installation failed with exit code 5.

The same failure mode also breaks real users with a local hive who run any of:

  • aspire add <pkg> (which runs dotnet package add --file apphost.cs — the path the deployment E2E tests hit)
  • dotnet run --file apphost.cs
  • aspire start

Root cause

InitCommand.DropCSharpSingleFileSkeletonAsync writes apphost.cs and aspire.config.json but nothing that would let NuGet/MSBuild discover the local hive. Previously, the full-project template path inherited package source resolution from the dev environment; the single-file path has no such inheritance and needs an explicit nuget.config next to apphost.cs.

Fix

When aspire init drops the single-file C# skeleton, also drop a workspace-local nuget.config listing every local hive under ~/.aspire/hives/<name>/packages as a NuGet package source.

  • Behavior for users without any local hive is unchanged — no nuget.config is written.
  • An existing nuget.config in the workspace is preserved (no clobbering).
  • Package source mapping is intentionally not added, so transitive dependencies still resolve from inherited sources (typically nuget.org) via the normal NuGet source hierarchy. This mirrors the existing AddCommand PR-hive logic.

Validation

  • Built Aspire.Cli locally — clean build.
  • Triggered /deployment-test on this PR. Previous run (without the fix) had 13 failures / 24 passes; new run with the fix has 37 passes, 0 failures, 1 skipped — all 12 aspire add ... → SDK 'Aspire.AppHost.Sdk/...' could not be found failures are gone.
  • The 1 remaining skipped test is unrelated (the AksVnetInfra WaitUntil timeout — Pattern B — being tracked separately).

Note on this PR

This branch was originally created purely to reproduce the deployment-test failures with a whitespace commit; the whitespace commit on eng/Versions.props is preserved here for traceability of the repro. Reviewers can squash on merge.

Copilot AI review requested due to automatic review settings May 1, 2026 05:05
@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 16636

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 16636"

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mitchdenny
Mitch Denny (mitchdenny) force-pushed the deploy-test/repro-e2e-failures branch from 2a6cdc0 to 0d7107f Compare May 1, 2026 05:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR creates a whitespace-only change intended to open a PR and trigger deployment E2E test runs (e.g., /deployment-test) to reproduce consistent failures on main.

Changes:

  • Adds a trailing newline at the end of eng/Versions.props (no functional change)

Comment thread eng/Versions.props
Comment on lines 166 to +169
<SystemTextJsonLTSVersion>8.0.6</SystemTextJsonLTSVersion>
</PropertyGroup>
</Project>

Copilot AI May 1, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description says the whitespace-only change is in README.md, but the actual change is a trailing newline in eng/Versions.props. Please update the PR description (or adjust the changed file) so reviewers/test triage can accurately understand what was modified to trigger the deployment E2E runs.

Copilot uses AI. Check for mistakes.
@mitchdenny

Copy link
Copy Markdown
Member Author

/deployment-test

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployment tests starting on PR #16636...

This will deploy to real Azure infrastructure. Results will be posted here when complete.

View workflow run

@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 05:15 Inactive
@github-actions
github-actions Bot had a problem deploying to deployment-testing May 1, 2026 05:15 Failure
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 06:48 Inactive
@github-actions
github-actions Bot temporarily deployed to deployment-testing May 1, 2026 06:48 Inactive
Comment thread src/Aspire.Cli/Commands/InitCommand.cs Outdated
// directive — neither the implicit restore done by `aspire add` (`dotnet package
// add --file apphost.cs`) nor `dotnet run --file apphost.cs` will succeed against
// a CLI built from a local hive.
DropNuGetConfigForLocalHives(workingDirectory);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens when more hives get added? Is that handled elsewhere?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactored in b30f94a — �spire init now calls the shared TemplateNuGetConfigService (the same path aspire new uses for template output). Under the hood that delegates to NuGetConfigMerger.CreateOrUpdateAsync, which merges missing sources into an existing nuget.config rather than overwriting it. So when more hives get added (e.g. a subsequent aspire add/aspire update/aspire new against a different channel writes to the workspace, or the user reconfigures their channel and re-runs an aspire command), the merger picks up the new sources from the resolved channel and adds them. Same handling as for templates today.

Comment thread src/Aspire.Cli/Commands/InitCommand.cs Outdated
return Task.FromResult(configResult);
}

private void DropNuGetConfigForLocalHives(DirectoryInfo workingDirectory)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems too special. Dont we have shared logic for nuget.config creation?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — see b30f94a. InitCommand now injects TemplateNuGetConfigService and calls PromptToCreateOrUpdateNuGetConfigAsync(channelName: null, ...), which is exactly the path aspire new uses. Channel resolution comes from aspire config get channel so it works for any non-stable channel (local-*, dev-*, pr-*, run-*, staging) — not just channels literally named local — and the underlying NuGetConfigMerger handles create-or-merge of the workspace nuget.config consistently with templates.

Mitch Denny (mitchdenny) and others added 2 commits May 1, 2026 17:35
Address PR review feedback (davidfowl, radical) by replacing the inline
ad-hoc nuget.config creation in InitCommand with a call to the shared
TemplateNuGetConfigService — the same path used by 'aspire new' for
template output.

This delegates to NuGetConfigMerger, which:

* Resolves the user's configured channel (from 'aspire config get channel'),
  so it works for any non-stable hive — local-*, dev-*, pr-*, run-*,
  staging — not just channels named 'local'.
* Creates a new nuget.config or merges missing sources into an existing
  one, so additional hives added later (e.g. via subsequent aspire
  commands) are handled the same way they are for templates.
* No-ops for stable/implicit channels, matching prior behavior of doing
  nothing for the default user case.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The previous refactor used PromptToCreateOrUpdateNuGetConfigAsync, which
in the in-place case (workingDir == outputPath, the case for aspire init)
prompts the user with 'Create NuGet.config for selected channels?'. The
existing E2E and unit tests for aspire init don't expect any prompt, so
they hung waiting for the next expected text.

Add a new public method CreateOrUpdateNuGetConfigWithoutPromptAsync that
always uses the silent merge path, and switch InitCommand to call it.
This keeps the same shared NuGetConfigMerger create-or-merge semantics
without changing the interactive UX of aspire init.

Also register TemplateNuGetConfigService in the test DI container so
InitCommand can resolve it from CliTestHelper.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mitchdenny

Copy link
Copy Markdown
Member Author

/deployment-test

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployment tests starting on PR #16636...

This will deploy to real Azure infrastructure. Results will be posted here when complete.

View workflow run

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Re-running the failed jobs in the CI workflow for this pull request because 1 job was identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

The AspireInitAsync E2E test helper detects the NuGet.config Y/n prompt
by looking for the literal substring 'NuGet.config' on screen. The shared
NuGetConfigPrompter (used in the silent path) emits a confirmation message
that also contains 'NuGet.config', causing the helper to false-match the
message as a prompt and get out of sync with subsequent prompts (most
notably the agent-init Y/n).

Fix: in TemplateNuGetConfigService.CreateOrUpdateNuGetConfigWithoutPromptAsync,
bypass NuGetConfigPrompter and call NuGetConfigMerger directly so no
built-in confirmation message is emitted. Return a bool indicating whether
a config was written, and let InitCommand emit a neutral message
('Created package sources file') that does not contain the trigger
substring.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Re-running the failed jobs in the CI workflow for this pull request because 2 jobs were identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

Matched test failure patterns (4 tests)
  • Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopNonInteractiveSingleAppHost — MCR registry rate limiting (HTTP 403)
  • Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopAllAppHostsFromAppHostDirectory — MCR registry rate limiting (HTTP 403)
  • Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopNonInteractiveMultipleAppHostsShowsError — MCR registry rate limiting (HTTP 403)
  • Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopAllAppHostsFromUnrelatedDirectory — MCR registry rate limiting (HTTP 403)

@mitchdenny

Copy link
Copy Markdown
Member Author

/deployment-test

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployment tests starting on PR #16636...

This will deploy to real Azure infrastructure. Results will be posted here when complete.

View workflow run

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Deployment E2E Tests passed — 33 passed, 0 failed, 0 cancelled

View test results and recordings

View workflow run

Test Result Recording
Deployment.EndToEnd-AcaCompactNamingDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetSqlServerInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-TypeScriptVnetSqlServerInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-FrontDoorDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetSqlServerConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetKeyVaultConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-KubernetesGatewayTlsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetKeyVaultInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-NspStorageKeyVaultDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-TypeScriptExpressDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureStorageDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetStorageBlobConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureContainerRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksBlazorRedisDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureLogAnalyticsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksWithAzureResourcesDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaCustomRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AppServiceReactDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AuthenticationTests ✅ Passed
Deployment.EndToEnd-AzureEventHubsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaStarterDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksMultipleNodePoolsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureAppConfigDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaExistingRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureServiceBusDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksVnetInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksVnetWithAzureResourcesDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaManagedRedisDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetStorageBlobInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksStarterWithRedisHelmDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksStarterDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaDeploymentErrorOutputTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureKeyVaultDeploymentTests ✅ Passed ▶️ View Recording

@mitchdenny

Copy link
Copy Markdown
Member Author

/quarantine-test Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopNonInteractiveMultipleAppHostsShowsError Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopAllAppHostsFromUnrelatedDirectory #15241 --target-pr #16636

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

⏳ Started quarantine operation for Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopNonInteractiveMultipleAppHostsShowsError, Aspire.Cli.EndToEnd.Tests.StopNonInteractiveTests.StopAllAppHostsFromUnrelatedDirectory (will push to PR #16636)... (workflow run)

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Mitch Denny (@mitchdenny) ❌ Quarantine failed.

See the workflow run for full details.

Three consecutive PR CI reruns failed with different transient timeouts in:
  - StopNonInteractiveMultipleAppHostsShowsError (3m timeout on 'AppHost started successfully')
  - StopAllAppHostsFromUnrelatedDirectory (8m20s timeout on success prompt)

Both go through 'aspire new' + 'aspire start' (unrelated to the init/nuget.config changes in this PR). Tracking issue: #16643.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🎬 CLI E2E Test Recordings — 76 recordings uploaded (commit d731241)

View all recordings
Status Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View Recording
AddPackageWhileAppHostRunningDetached ▶️ View Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_DefaultSelection_InstallsSkillOnly ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
AspireAddPackageVersionToDirectoryPackagesProps ▶️ View Recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
Banner_NotDisplayedWithNoLogoFlag ▶️ View Recording
CertificatesClean_RemovesCertificates ▶️ View Recording
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate ▶️ View Recording
CertificatesTrust_WithUntrustedCert_TrustsCertificate ▶️ View Recording
ConfigSetGet_CreatesNestedJsonFormat ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunEmptyAppHostProject ▶️ View Recording
CreateAndRunJavaEmptyAppHostProject ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateAndRunTypeScriptEmptyAppHostProject ▶️ View Recording
CreateAndRunTypeScriptStarterProject ▶️ View Recording
CreateJavaAppHostWithViteApp ▶️ View Recording
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain ▶️ View Recording
DashboardRunWithOtelTracesReturnsNoTraces ▶️ View Recording
DeployK8sBasicApiService ▶️ View Recording
DeployK8sWithGarnet ▶️ View Recording
DeployK8sWithMongoDB ▶️ View Recording
DeployK8sWithMySql ▶️ View Recording
DeployK8sWithPostgres ▶️ View Recording
DeployK8sWithRabbitMQ ▶️ View Recording
DeployK8sWithRedis ▶️ View Recording
DeployK8sWithSqlServer ▶️ View Recording
DeployK8sWithValkey ▶️ View Recording
DeployTypeScriptAppToKubernetes ▶️ View Recording
DescribeCommandResolvesReplicaNames ▶️ View Recording
DescribeCommandShowsRunningResources ▶️ View Recording
DetachFormatJsonProducesValidJson ▶️ View Recording
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance ▶️ View Recording
DoListStepsShowsPipelineSteps ▶️ View Recording
DocsCommand_RendersInteractiveMarkdownFromLocalSource ▶️ View Recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View Recording
GlobalMigration_HandlesCommentsAndTrailingCommas ▶️ View Recording
GlobalMigration_HandlesMalformedLegacyJson ▶️ View Recording
GlobalMigration_PreservesAllValueTypes ▶️ View Recording
GlobalMigration_SkipsWhenNewConfigExists ▶️ View Recording
GlobalSettings_MigratedFromLegacyFormat ▶️ View Recording
InitTypeScriptAppHost_AugmentsExistingViteRepoAtRoot ▶️ View Recording
InteractiveCSharpInitCreatesExpectedFiles ▶️ View Recording
InvalidAppHostPathWithComments_IsHealedOnRun ▶️ View Recording
LatestCliCanStartStableChannelAppHost ▶️ View Recording
LatestCliCanStartStableChannelTypeScriptAppHost ▶️ View Recording
LegacySettingsMigration_AdjustsRelativeAppHostPath ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
OtelLogsReturnsStructuredLogsFromStarterAppCore ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View Recording
PublishWithConfigureEnvFileUpdatesEnvOutput ▶️ View Recording
PublishWithDockerComposeServiceCallbackSucceeds ▶️ View Recording
PublishWithoutOutputPathUsesAppHostDirectoryDefault ▶️ View Recording
RestoreGeneratesSdkFiles ▶️ View Recording
RestoreGeneratesSdkFiles_WithConfiguredToolchain ▶️ View Recording
RestoreRefreshesGeneratedSdkAfterAddingIntegration ▶️ View Recording
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes ▶️ View Recording
RunFromParentDirectory_UsesExistingConfigNearAppHost ▶️ View Recording
SecretCrudOnDotNetAppHost ▶️ View Recording
SecretCrudOnTypeScriptAppHost ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets ▶️ View Recording
StopAllAppHostsFromAppHostDirectory ▶️ View Recording
StopNonInteractiveSingleAppHost ▶️ View Recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View Recording
UnAwaitedChainsCompileWithAutoResolvePromises ▶️ View Recording

📹 Recordings uploaded automatically from CI run #25213730076

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

No documentation PR is required for this change.

This is a bug fix that restores correct behavior for users with local hive configurations — aspire init now drops a nuget.config alongside apphost.cs when local package hives are present. The existing [aspire init command documentation]((aspire.dev/redacted) describes the command's behavior at a high level without enumerating specific output files, so there is no documentation gap to address.

Automated check by the docs-check workflow.

Generated by PR Documentation Check for issue #16636 · ● 434.7K ·

@mitchdenny

Copy link
Copy Markdown
Member Author

/backport to release/13.3

@github-actions

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown
Contributor

Started backporting to release/13.3 (link to workflow run)

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Mitch Denny (@mitchdenny) backporting to release/13.3 failed, the patch most likely resulted in conflicts. Please backport manually!

git am output
$ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch

Applying: chore: whitespace change to trigger deployment test repro
Applying: Drop nuget.config alongside single-file apphost.cs in `aspire init`
Applying: Use shared TemplateNuGetConfigService for init nuget.config
Using index info to reconstruct a base tree...
M	src/Aspire.Cli/Commands/InitCommand.cs
Falling back to patching base and 3-way merge...
Auto-merging src/Aspire.Cli/Commands/InitCommand.cs
Applying: Add silent CreateOrUpdateNuGetConfigWithoutPromptAsync overload
Using index info to reconstruct a base tree...
M	src/Aspire.Cli/Commands/InitCommand.cs
M	src/Aspire.Cli/Templating/TemplateNuGetConfigService.cs
M	tests/Aspire.Cli.Tests/Utils/CliTestHelper.cs
Falling back to patching base and 3-way merge...
Auto-merging src/Aspire.Cli/Commands/InitCommand.cs
Auto-merging src/Aspire.Cli/Templating/TemplateNuGetConfigService.cs
CONFLICT (content): Merge conflict in src/Aspire.Cli/Templating/TemplateNuGetConfigService.cs
Auto-merging tests/Aspire.Cli.Tests/Utils/CliTestHelper.cs
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0004 Add silent CreateOrUpdateNuGetConfigWithoutPromptAsync overload
Error: The process '/usr/bin/git' failed with exit code 128

Link to workflow output

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants