Skip to content

Fix polyglot object cycle#14844

Merged
davidfowl merged 3 commits intorelease/13.2from
fix-polyglot-object-cycle
Mar 3, 2026
Merged

Fix polyglot object cycle#14844
davidfowl merged 3 commits intorelease/13.2from
fix-polyglot-object-cycle

Conversation

@IEvangelist
Copy link
Member

Description

When attempting to mutate a value in a callback, that would then be represented on the server AppHost - some situations result in an object cycle exception, for example this code:

// Aspire TypeScript AppHost
// For more information, see: https://aspire.dev

import { createBuilder } from "./.modules/aspire.js";

const builder = await createBuilder();

await builder
  .addViteApp("frontend", "./frontend")
  .withUrlForEndpoint('http', async url => {
    // 🙁 Bug, object cycle detected.
    url.displayText = 'TODO app';
  });

await builder.build().run();

Here's the exception:

Bug: Object cycle detected
Details
 An error occurred while processing URLs for resource 'frontend': A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 64. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles. Path: $.Endpoint.EndpointAnnotation.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.DefaultNetworkID.Value.
System.Text.Json.JsonException: A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 64. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles. Path: $.Endpoint.EndpointAnnotation.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.AllocatedEndpoint.Endpoint.DefaultNetworkID.Value.
   at System.Text.Json.ThrowHelper.ThrowJsonException_SerializerCycleDetected(Int32 maxDepth)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Serialize(Utf8JsonWriter writer, T& rootValue, Object rootValueBoxed)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.SerializeAsObject(Utf8JsonWriter writer, Object rootValue)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Serialize(Utf8JsonWriter writer, T& rootValue, Object rootValueBoxed)
   at System.Text.Json.JsonSerializer.WriteString[TValue](TValue& value, JsonTypeInfo`1 jsonTypeInfo)
   at System.Text.Json.JsonSerializer.Serialize[TValue](TValue value, JsonSerializerOptions options)
   at Aspire.Hosting.RemoteHost.Ats.AtsMarshaller.SerializeDto(Object value)
   at Aspire.Hosting.RemoteHost.Ats.AtsMarshaller.MarshalToJson(Object value)
   at Aspire.Hosting.RemoteHost.Ats.AtsCallbackProxyFactory.MarshalArg(Object value)
   at lambda_method2(Closure, ResourceUrlAnnotation)
   at Aspire.Hosting.ResourceBuilderExtensions.<>c__DisplayClass46_0`1.<WithUrlForEndpoint>b__0(ResourceUrlsCallbackContext context) in D:\GitHub\aspire\src\Aspire.Hosting\ResourceBuilderExtensions.cs:line 1340
   at Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackAnnotation.<>c__DisplayClass0_0.<.ctor>b__0(ResourceUrlsCallbackContext c) in D:\GitHub\aspire\src\Aspire.Hosting\ApplicationModel\ResourceUrlsCallbackAnnotation.cs:line 21
   at Aspire.Hosting.Orchestrator.ApplicationOrchestrator.ProcessResourceUrlCallbacks(IResource resource, CancellationToken cancellationToken) in D:\GitHub\aspire\src\Aspire.Hosting\Orchestrator\ApplicationOrchestrator.cs:line 376
Waiting for resource 'frontend-installer' to complete.
Waiting for resource 'api' to enter the 'Running' state.
Finished waiting for resource 'frontend-installer'.
Waiting for resource ready to execute for 'api'.
Finished waiting for resource 'api'.

Running this, prior to this change would result in no endpoint being emitted at all on the dashboard. After the change, not only is the endpoint available but it actually sets the URL name as expected.

Related to #14772

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No
  • Does the change require an update in our Aspire docs?

@IEvangelist IEvangelist requested review from Copilot, davidfowl and sebastienros and removed request for Copilot March 2, 2026 16:30
@github-actions
Copy link
Contributor

github-actions bot commented Mar 2, 2026

🚀 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/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 14844

Or

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

@github-actions
Copy link
Contributor

github-actions bot commented Mar 2, 2026

🎬 CLI E2E Test Recordings

The following terminal recordings are available for commit 326ba23:

Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View Recording
AddPackageWhileAppHostRunningDetached ▶️ View Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
AgentInitCommand_WithMalformedMcpJson_ShowsErrorAndExitsNonZero ▶️ View Recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
CreateAndDeployToDockerCompose ▶️ View Recording
CreateAndDeployToDockerComposeInteractive ▶️ View Recording
CreateAndPublishToKubernetes ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateAndRunTypeScriptStarterProject ▶️ View Recording
CreateEmptyAppHostProject ▶️ View Recording
CreateStartAndStopAspireProject ▶️ View Recording
CreateStartWaitAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ View Recording
DescribeCommandResolvesReplicaNames ▶️ View Recording
DescribeCommandShowsRunningResources ▶️ View Recording
DetachFormatJsonProducesValidJson ▶️ View Recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View Recording
SecretCrudOnDotNetAppHost ▶️ View Recording
SecretCrudOnTypeScriptAppHost ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording
StopAllAppHostsFromAppHostDirectory ▶️ View Recording
StopAllAppHostsFromUnrelatedDirectory ▶️ View Recording
StopNonInteractiveMultipleAppHostsShowsError ▶️ View Recording
StopNonInteractiveSingleAppHost ▶️ View Recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View Recording

📹 Recordings uploaded automatically from CI run #22627649396

@davidfowl
Copy link
Contributor

@IEvangelist this change should be targeting release/13.2

@IEvangelist IEvangelist changed the base branch from main to release/13.2 March 3, 2026 13:51
Copilot AI review requested due to automatic review settings March 3, 2026 14:09
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates Aspire CLI/VS Code extension behavior and repo tooling, alongside a large set of localization file adjustments.

Changes:

  • Updated VS Code extension to resolve the Aspire CLI path asynchronously and adjusted command/debug flows accordingly.
  • Tweaked CLI update channel selection to hide the Staging channel unless a feature flag enables it.
  • Made assorted build/eng pipeline and scripting changes (toolset versions, VMR sync behavior, deterministic .NET lookup, etc.) and refreshed many XLF translations.

Reviewed changes

Copilot reviewed 300 out of 446 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/Aspire.Cli/Resources/xlf/SharedCommandStrings.es.xlf XML header encoding/BOM adjustment in CLI localization file.
src/Aspire.Cli/Resources/xlf/SharedCommandStrings.de.xlf XML header encoding/BOM adjustment in CLI localization file.
src/Aspire.Cli/Resources/xlf/SharedCommandStrings.cs.xlf XML header encoding/BOM adjustment in CLI localization file.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.zh-Hant.xlf Updated CLI translations for zh-Hant.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.zh-Hans.xlf Updated CLI translations for zh-Hans.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.tr.xlf Updated CLI translations for Turkish.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.ru.xlf Updated CLI translations for Russian.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.pt-BR.xlf Updated CLI translations for pt-BR.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.pl.xlf Updated CLI translations for Polish.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.ko.xlf Updated CLI translations for Korean.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.ja.xlf Updated CLI translations for Japanese.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.it.xlf Updated CLI translations for Italian.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.fr.xlf Updated CLI translations for French.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.es.xlf Updated CLI translations for Spanish.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.de.xlf Updated CLI translations for German.
src/Aspire.Cli/Resources/xlf/RootCommandStrings.cs.xlf Updated CLI translations for Czech.
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.zh-Hant.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.zh-Hans.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.tr.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.ru.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.pt-BR.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.pl.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.ko.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.ja.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.it.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.fr.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.es.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.de.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/ResourceCommandStrings.cs.xlf Updated Resource command localizations (includes state changes).
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.zh-Hant.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.zh-Hans.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.tr.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.ru.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.pt-BR.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.pl.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.ko.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.ja.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.it.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.fr.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.es.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.de.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PublishCommandStrings.cs.xlf Updated Publish command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.zh-Hant.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.zh-Hans.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.tr.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.ru.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.pt-BR.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.pl.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.ko.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.ja.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.it.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.fr.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.es.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.de.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/PsCommandStrings.cs.xlf Updated ps command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.zh-Hant.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.zh-Hans.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.tr.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.ru.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.pt-BR.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.pl.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.ko.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.ja.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.it.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.fr.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.es.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.de.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/NewCommandStrings.cs.xlf Updated new command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.zh-Hant.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.zh-Hans.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.tr.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.ru.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.pt-BR.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.pl.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.ja.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.it.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.fr.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.es.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.de.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/LogsCommandStrings.cs.xlf Updated logs command translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.zh-Hant.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.zh-Hans.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.tr.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.ru.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.pt-BR.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.pl.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.ko.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.it.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.fr.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.es.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.de.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InteractionServiceStrings.cs.xlf Updated interaction/UX translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.zh-Hant.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.zh-Hans.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.tr.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.ru.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.pt-BR.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.pl.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.ko.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.ja.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.it.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.fr.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.es.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.de.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/InitCommandStrings.cs.xlf Updated init command translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.zh-Hans.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.tr.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.pt-BR.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.pl.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.it.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.fr.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.es.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/HelpGroupStrings.cs.xlf Updated help-group translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.zh-Hant.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.zh-Hans.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.tr.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.ru.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.pt-BR.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.pl.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.ko.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.ja.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.it.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.fr.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.es.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.de.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/ErrorStrings.cs.xlf Updated error message translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.zh-Hant.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.zh-Hans.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.tr.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.ru.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.pt-BR.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.pl.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.ko.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.ja.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.it.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.fr.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.es.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.de.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DoctorCommandStrings.cs.xlf Updated doctor command translations.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.zh-Hant.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.zh-Hans.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.tr.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.ru.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.pt-BR.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.pl.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.ko.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.ja.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.it.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.fr.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.es.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.de.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DescribeCommandStrings.cs.xlf Updated describe command translations + XML header.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.zh-Hant.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.zh-Hans.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.tr.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.ru.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.pt-BR.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.pl.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.ko.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.ja.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.it.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.fr.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.es.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.de.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/DeployCommandStrings.cs.xlf Updated deploy command translations.
src/Aspire.Cli/Resources/xlf/CopilotCliAgentEnvironmentScannerStrings.it.xlf Updated localized message text for Copilot CLI scanner.
src/Aspire.Cli/Resources/xlf/CopilotCliAgentEnvironmentScannerStrings.de.xlf Updated localized message text for Copilot CLI scanner.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.zh-Hant.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.zh-Hans.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.tr.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.ru.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.pt-BR.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.pl.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.ko.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.ja.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.it.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.fr.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.es.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.de.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.cs.xlf Updated config command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hant.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hans.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.tr.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pt-BR.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pl.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ja.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf Updated agent command translations and additional strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf Updated agent command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.zh-Hans.xlf Updated add command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.tr.xlf Updated add command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.ru.xlf Updated add command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.pt-BR.xlf Updated add command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.pl.xlf Updated add command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.it.xlf Updated add command translations.
src/Aspire.Cli/Resources/xlf/AddCommandStrings.cs.xlf Updated add command translations.
src/Aspire.Cli/Commands/UpdateCommand.cs Feature-flagged staging channel in self-update prompt.
src/Aspire.Cli/Aspire.Cli.csproj Added shared KnownOtelConfigNames file to CLI build.
playground/yarp/Yarp.AppHost/Properties/launchSettings.json Removed container tunnel env vars from playground launch settings.
global.json Updated pinned MSBuild SDK toolset versions.
extension/src/utils/configInfoProvider.ts Uses resolved CLI path (async) for config info calls.
extension/src/utils/AspireTerminalProvider.ts CLI path resolution made async via resolveCliPath.
extension/src/loc/strings.ts Added localized string for “CLI found at default path”.
extension/src/extension.ts Debug config provider no longer needs terminal provider; CLI availability checks centralized.
extension/src/debugger/AspireDebugConfigurationProvider.ts Removed terminalProvider dependency; updated CLI availability check call.
extension/src/commands/update.ts Await async terminal command dispatch.
extension/src/commands/publish.ts Await async terminal command dispatch.
extension/src/commands/new.ts Await async terminal command dispatch.
extension/src/commands/init.ts Await async terminal command dispatch.
extension/src/commands/deploy.ts Await async terminal command dispatch.
extension/src/commands/add.ts Await async terminal command dispatch.
extension/package.nls.json Added NLS entry for new CLI-path informational message.
extension/loc/xlf/aspire-vscode.xlf Added XLF entry for new CLI-path informational message.
eng/restore-toolset.sh Made restore_maui default-safe when unset.
eng/pipelines/azdo-tests.yml Updated manual run command documentation comment.
eng/common/vmr-sync.sh Added VMR repo mapping detection + reset fallback.
eng/common/tools.sh Enforced DOTNET_MULTILEVEL_LOOKUP=0; optional MSBUILD -mt flag.
eng/common/templates/vmr-build-pr.yml Pinned VMR GitHub resource ref to main.
eng/common/templates/variables/pool-providers.yml Updated example image demand to VS2022.
eng/common/templates/steps/vmr-sync.yml Removed explicit “checkout VMR sha” steps.
eng/common/post-build/redact-logs.ps1 PowerShell param list formatting tweak.
eng/common/native/install-dependencies.sh Simplified distro branching for dependency installation.
eng/common/internal-feed-operations.sh Adjusted bash loop condition syntax.
eng/common/dotnet.sh Adjusted bash arg-count condition syntax.
eng/common/dotnet-install.sh Adjusted bash loop condition syntax.
eng/common/darc-init.sh Adjusted bash loop condition syntax.
eng/common/core-templates/steps/source-index-stage1-publish.yml Updated package versions + dotnet tool flags.
eng/common/core-templates/steps/source-build.yml Adjusted internal runtime feed key quoting.
eng/common/core-templates/steps/install-microbuild-impl.yml Removed microbuild install template implementation.
eng/common/core-templates/steps/generate-sbom.yml Updated SBOM tool package version.
eng/common/core-templates/post-build/post-build.yml Updated internal pool image to VS2022; ensure .NET 8 for Darc.
eng/common/core-templates/job/publish-build-assets.yml Updated internal pool image to VS2022.
eng/common/core-templates/job/job.yml Removed preview microbuild parameters/variables.
eng/common/build.sh Removed restore-maui arg support; adjusted arg parsing.
eng/common/build.ps1 Removed restoreMaui parameter and usage text.
eng/common/SetupNugetSources.sh Added dotnet-eng/tools internal feeds when present.
eng/common/SetupNugetSources.ps1 Added dotnet-eng/tools internal feeds when present.
eng/build.sh Changed mauirestore behavior to exporting restore_maui env var.
eng/Versions.props Bumped minor version + updated toolset package versions.
docs/getting-perf-traces.md Updated guidance + added profiling scripts section.
Directory.Packages.props Added SqlClient instrumentation and reordered AspNetCore instrumentation entry.
.github/workflows/copilot-setup-steps.yml Uses different runner outside dotnet org.
.github/workflows/ci.yml Expanded ignored-path patterns for CI.
.github/workflows/README.md Documented backmerge-release workflow behavior.
.github/skills/dependency-update/SKILL.md Added constraint note for FluentUI packages.
.github/policies/milestoneAssignment.prClosed.yml Updated milestones/branches for 13.3 and release/13.2.
.gitattributes Marked workflow lock files as generated and merge=ours.

…ified DTOs and support circular references in serialization
…es and ensure non-DTO args are safely ignored during writeback
…e attributes, and skip read-only properties during writeback
@IEvangelist IEvangelist force-pushed the fix-polyglot-object-cycle branch from 5a7f889 to 326ba23 Compare March 3, 2026 14:31
@davidfowl davidfowl merged commit c467720 into release/13.2 Mar 3, 2026
384 checks passed
@davidfowl davidfowl deleted the fix-polyglot-object-cycle branch March 3, 2026 23:09
@dotnet-policy-service dotnet-policy-service bot added this to the 13.2 milestone Mar 3, 2026
Copilot AI pushed a commit that referenced this pull request Mar 10, 2026
* Enhance DTO handling in callback proxies: implement writeback for modified DTOs and support circular references in serialization

* Enhance DTO writeback handling: improve support for circular references and ensure non-DTO args are safely ignored during writeback

* Enhance DTO property handling: respect JsonPropertyName and JsonIgnore attributes, and skip read-only properties during writeback
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.

4 participants