From 544293b440bf8dfc4894236f91d373fd53d5ba58 Mon Sep 17 00:00:00 2001 From: "aspire-repo-bot[bot]" <268009190+aspire-repo-bot[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 19:59:15 -0700 Subject: [PATCH 1/4] Fix Azure provisioning disabled input values (#17291) Accept server-provided values for disabled interaction inputs so dynamic Azure provisioning fields such as Location can be populated after selecting an existing resource group. Preserve local edits for enabled inputs. Co-authored-by: Damian Edwards Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Model/Interaction/InputViewModel.cs | 28 ++++------- .../Model/InputViewModelTests.cs | 50 +++++++++++++++++++ 2 files changed, 60 insertions(+), 18 deletions(-) diff --git a/src/Aspire.Dashboard/Model/Interaction/InputViewModel.cs b/src/Aspire.Dashboard/Model/Interaction/InputViewModel.cs index 0dda8bfd8e9..acb7a2b9d81 100644 --- a/src/Aspire.Dashboard/Model/Interaction/InputViewModel.cs +++ b/src/Aspire.Dashboard/Model/Interaction/InputViewModel.cs @@ -17,24 +17,9 @@ public InputViewModel(InteractionInput input) public void SetInput(InteractionInput input) { - string value; - if (Input == null) - { - value = input.Value; - } - else - { - // Only overwrite the local value if the input was loading and is no longer loading (update could have come from server) - // This avoids changes in local values being overwritten by a dynamic server update. - if (Input.Loading && !input.Loading) - { - value = input.Value; - } - else - { - value = Input.Value; - } - } + var value = Input is null || ShouldUseIncomingValue(Input, input) + ? input.Value + : Input.Value; input.Value = value; Input = input; @@ -137,4 +122,11 @@ private static bool OptionsEqual(List> existing, List Date: Wed, 20 May 2026 11:02:00 -0700 Subject: [PATCH 2/4] [release/13.3] Stop forcing MSBuild server for Aspire CLI builds (#17314) * Stop forcing MSBuild server for CLI dotnet commands Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com> * Remove outdated override comment in DotNetCliRunner test Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com> --- src/Aspire.Cli/DotNet/DotNetCliRunner.cs | 19 +---------------- .../DotNet/DotNetCliRunnerTests.cs | 21 +++++++------------ 2 files changed, 9 insertions(+), 31 deletions(-) diff --git a/src/Aspire.Cli/DotNet/DotNetCliRunner.cs b/src/Aspire.Cli/DotNet/DotNetCliRunner.cs index 50520d8b070..608ae882950 100644 --- a/src/Aspire.Cli/DotNet/DotNetCliRunner.cs +++ b/src/Aspire.Cli/DotNet/DotNetCliRunner.cs @@ -77,11 +77,6 @@ internal sealed class DotNetCliRunner( private const int MaxSearchRetries = 3; private static readonly TimeSpan[] s_searchRetryDelays = [TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2)]; - private string GetMsBuildServerValue() - { - return configuration["DOTNET_CLI_USE_MSBUILD_SERVER"] ?? "true"; - } - internal static string GetBackchannelSocketPath() { return CliPathHelper.CreateUnixDomainSocketPath("cli.sock"); @@ -520,12 +515,6 @@ public async Task RunAsync(FileInfo projectFile, bool watch, bool noBuild, // We copy the dictionary here because we don't want to mutate the input. var finalEnv = env?.ToDictionary() ?? new Dictionary(); - // Inject DOTNET_CLI_USE_MSBUILD_SERVER when noBuild == false - if (!noBuild) - { - finalEnv["DOTNET_CLI_USE_MSBUILD_SERVER"] = GetMsBuildServerValue(); - } - // Check if update notifications are disabled and set version check environment variable if (!features.IsFeatureEnabled(KnownFeatures.UpdateNotificationsEnabled, defaultValue: true)) { @@ -808,15 +797,9 @@ public async Task BuildAsync(FileInfo projectFilePath, bool noRestore, Proc string[] cliArgs = ["build", noRestoreSwitch, projectFilePath.FullName]; cliArgs = [.. cliArgs.Where(arg => !string.IsNullOrWhiteSpace(arg))]; - // Always inject DOTNET_CLI_USE_MSBUILD_SERVER for apphost builds - var env = new Dictionary - { - ["DOTNET_CLI_USE_MSBUILD_SERVER"] = GetMsBuildServerValue() - }; - return await ExecuteAsync( args: cliArgs, - env: env, + env: null, projectFile: projectFilePath, workingDirectory: projectFilePath.Directory!, backchannelCompletionSource: null, diff --git a/tests/Aspire.Cli.Tests/DotNet/DotNetCliRunnerTests.cs b/tests/Aspire.Cli.Tests/DotNet/DotNetCliRunnerTests.cs index 4e03b603973..2079e355d11 100644 --- a/tests/Aspire.Cli.Tests/DotNet/DotNetCliRunnerTests.cs +++ b/tests/Aspire.Cli.Tests/DotNet/DotNetCliRunnerTests.cs @@ -66,7 +66,7 @@ public async Task DotNetCliCorrectlyAppliesNoLaunchProfileArgumentWhenSpecifiedI } [Fact] - public async Task BuildAsyncAlwaysInjectsDotnetCliUseMsBuildServerEnvironmentVariable() + public async Task BuildAsyncDoesNotInjectDotnetCliUseMsBuildServerEnvironmentVariable() { using var workspace = TemporaryWorkspace.Create(outputHelper); var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")); @@ -84,8 +84,7 @@ public async Task BuildAsyncAlwaysInjectsDotnetCliUseMsBuildServerEnvironmentVar (args, env, _, _) => { Assert.NotNull(env); - Assert.True(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); - Assert.Equal("true", env["DOTNET_CLI_USE_MSBUILD_SERVER"]); + Assert.False(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); }, 0); @@ -123,14 +122,13 @@ public async Task RestoreAsyncRunsDotnetRestoreCommand() } [Fact] - public async Task BuildAsyncUsesConfigurationValueForDotnetCliUseMsBuildServer() + public async Task BuildAsyncDoesNotInjectConfiguredDotnetCliUseMsBuildServer() { using var workspace = TemporaryWorkspace.Create(outputHelper); var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")); await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file."); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); - // Add a configuration value that overrides the default services.AddSingleton(sp => { var configBuilder = new ConfigurationBuilder(); @@ -151,8 +149,7 @@ public async Task BuildAsyncUsesConfigurationValueForDotnetCliUseMsBuildServer() (args, env, _, _) => { Assert.NotNull(env); - Assert.True(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); - Assert.Equal("false", env["DOTNET_CLI_USE_MSBUILD_SERVER"]); + Assert.False(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); }, 0); @@ -220,7 +217,7 @@ public async Task BuildAsyncDoesNotIncludeNoRestoreFlagWhenNoRestoreIsFalse() } [Fact] - public async Task RunAsyncInjectsDotnetCliUseMsBuildServerWhenNoBuildIsFalse() + public async Task RunAsyncDoesNotInjectDotnetCliUseMsBuildServerWhenNoBuildIsFalse() { using var workspace = TemporaryWorkspace.Create(outputHelper); var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")); @@ -238,15 +235,14 @@ public async Task RunAsyncInjectsDotnetCliUseMsBuildServerWhenNoBuildIsFalse() (args, env, _, _) => { Assert.NotNull(env); - Assert.True(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); - Assert.Equal("true", env["DOTNET_CLI_USE_MSBUILD_SERVER"]); + Assert.False(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); }, 0); var exitCode = await runner.RunAsync( projectFile: projectFile, watch: false, - noBuild: false, // This should inject the environment variable + noBuild: false, noRestore: false, args: ["--operation", "inspect"], env: new Dictionary(), @@ -317,8 +313,7 @@ public async Task RunAsyncPreservesExistingEnvironmentVariables() (args, env, _, _) => { Assert.NotNull(env); - Assert.True(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); - Assert.Equal("true", env["DOTNET_CLI_USE_MSBUILD_SERVER"]); + Assert.False(env.ContainsKey("DOTNET_CLI_USE_MSBUILD_SERVER")); // Verify existing environment variable is preserved Assert.True(env.ContainsKey("EXISTING_VAR")); Assert.Equal("existing_value", env["EXISTING_VAR"]); From 722c0b85c20687ac6caad960ee2b1e41dbbd09ad Mon Sep 17 00:00:00 2001 From: "aspire-repo-bot[bot]" <268009190+aspire-repo-bot[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 11:20:48 -0700 Subject: [PATCH 3/4] Skip log publish for WinGet/Homebrew installer jobs (#17134) These jobs only download already-built CLI archives and prepare WinGet manifests / Homebrew casks; they never run the repo build, so artifacts/log/$(_BuildConfig) is never produced. With enablePublishBuildArtifacts: true, the Arcade 1ES job template injects a Publish Logs pipelineArtifact output whose targetPath points at that empty/missing directory. 1ES path validation on that output fails the job (continueOnError on the CopyFiles step doesn't help because the failure is on the 1ES publish output itself). Set enablePublishBuildArtifacts: false on the WinGet/Homebrew installer stage in both the internal (azure-pipelines.yml) and unofficial (azure-pipelines-unofficial.yml) pipelines. There are no build logs to publish from these jobs. This fixes the Prepare Installers stage failures in the internal pipeline (e.g. dnceng/internal build 2969660). Co-authored-by: Ankit Jain Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/azure-pipelines-unofficial.yml | 6 +++++- eng/pipelines/azure-pipelines.yml | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/azure-pipelines-unofficial.yml b/eng/pipelines/azure-pipelines-unofficial.yml index 910bd23d3bf..890115d9db4 100644 --- a/eng/pipelines/azure-pipelines-unofficial.yml +++ b/eng/pipelines/azure-pipelines-unofficial.yml @@ -334,7 +334,11 @@ extends: enableMicrobuild: false enablePublishUsingPipelines: false enablePublishBuildAssets: false - enablePublishBuildArtifacts: true + # WinGet and Homebrew jobs only consume previously-built CLI archives; + # they don't run the repo build, so artifacts/log/$(_BuildConfig) is + # never created. Leaving this 'true' makes the 1ES Publish Logs output + # fail because its targetPath doesn't exist. + enablePublishBuildArtifacts: false enableTelemetry: true workspace: clean: all diff --git a/eng/pipelines/azure-pipelines.yml b/eng/pipelines/azure-pipelines.yml index ad0824a1d13..9657ce37517 100644 --- a/eng/pipelines/azure-pipelines.yml +++ b/eng/pipelines/azure-pipelines.yml @@ -449,7 +449,11 @@ extends: enableMicrobuild: false enablePublishUsingPipelines: false enablePublishBuildAssets: false - enablePublishBuildArtifacts: true + # WinGet and Homebrew jobs only consume previously-built CLI archives; + # they don't run the repo build, so artifacts/log/$(_BuildConfig) is + # never created. Leaving this 'true' makes the 1ES Publish Logs output + # fail because its targetPath doesn't exist. + enablePublishBuildArtifacts: false enableTelemetry: true workspace: clean: all From 70b33bcb5f64c75e3ab6f57616545f35bd43dc81 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 12:16:55 -0700 Subject: [PATCH 4/4] Bump patch version from 13.3.4 to 13.3.5 (#17315) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: joperezr <13854455+joperezr@users.noreply.github.com> --- eng/Versions.props | 2 +- .../RepoTesting/Aspire.RepoTesting.targets | 4 +- .../Directory.Packages.Helix.props | 142 +++++++++--------- 3 files changed, 74 insertions(+), 74 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 3f1c9d0102f..a9a08670fa3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -3,7 +3,7 @@ 13 3 - 4 + 5 $(MajorVersion).$(MinorVersion).$(PatchVersion) preview.1 net8.0 diff --git a/tests/Shared/RepoTesting/Aspire.RepoTesting.targets b/tests/Shared/RepoTesting/Aspire.RepoTesting.targets index f6f470526c6..678b1c058f6 100644 --- a/tests/Shared/RepoTesting/Aspire.RepoTesting.targets +++ b/tests/Shared/RepoTesting/Aspire.RepoTesting.targets @@ -33,7 +33,7 @@ `AspireProjectOrPackageReference` - maps to projects in `src/` or `src/Components/` --> - + @@ -165,6 +165,6 @@ $(MajorVersion).$(MinorVersion).$(PatchVersion) - + diff --git a/tests/Shared/RepoTesting/Directory.Packages.Helix.props b/tests/Shared/RepoTesting/Directory.Packages.Helix.props index 792db8dcdcd..b10dcf7cd59 100644 --- a/tests/Shared/RepoTesting/Directory.Packages.Helix.props +++ b/tests/Shared/RepoTesting/Directory.Packages.Helix.props @@ -3,81 +3,81 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +