From 1806314826facab4ad9b94e3c9c903fe4d670cd2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:35:04 +0000 Subject: [PATCH 1/3] Initial plan From f124ceaa317e73311e56f08654faa9d13ed7ca79 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:41:42 +0000 Subject: [PATCH 2/3] Change GetHostAddressExpression implementations to public methods Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com> --- .../AzureContainerAppEnvironmentResource.cs | 3 ++- .../AzureAppServiceEnvironmentResource.cs | 3 ++- .../DockerComposeEnvironmentResource.cs | 8 ++------ .../KubernetesEnvironmentResource.cs | 8 ++------ tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs | 2 +- .../Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs | 2 +- tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs | 2 +- .../KubernetesEnvironmentResourceTests.cs | 2 +- 8 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs index ccd76135e29..41a51e3c149 100644 --- a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs +++ b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs @@ -231,7 +231,8 @@ public AzureContainerRegistryResource? ContainerRegistry ReferenceExpression IAzureContainerRegistry.ManagedIdentityId => ReferenceExpression.Create($"{ContainerRegistryManagedIdentityId}"); #pragma warning restore CS0618 // Type or member is obsolete - ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference) + /// + public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; diff --git a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs index 16c815a74f1..979272a738e 100644 --- a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs +++ b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs @@ -381,7 +381,8 @@ public AzureContainerRegistryResource? ContainerRegistry ReferenceExpression IAzureContainerRegistry.ManagedIdentityId => ReferenceExpression.Create($"{ContainerRegistryManagedIdentityId}"); #pragma warning restore CS0618 // Type or member is obsolete - ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference) + /// + public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; return ReferenceExpression.Create($"{resource.Name.ToLowerInvariant()}-{WebSiteSuffix}.azurewebsites.net"); diff --git a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs index 4f7fa6dd05a..4b0a8d325bc 100644 --- a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs +++ b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs @@ -185,12 +185,8 @@ public DockerComposeEnvironmentResource(string name) : base(name) })); } - /// - /// Computes the host URL for the given . - /// - /// The endpoint reference to compute the host address for. - /// A representing the host address. - ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference) + /// + public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs index 36871ca8d96..7bc52269be8 100644 --- a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs +++ b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs @@ -99,12 +99,8 @@ public KubernetesEnvironmentResource(string name) : base(name) })); } - /// - /// Computes the host URL for the given . - /// - /// The endpoint reference to compute the host address for. - /// A representing the host address. - ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference) + /// + public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs index 23fc6d8c489..67041919ce8 100644 --- a/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs +++ b/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs @@ -754,7 +754,7 @@ public async Task GetHostAddressExpression() .AddProject("project1", launchProfileName: null) .WithHttpEndpoint(); - var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http")); + var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); Assert.NotNull(endpointReferenceEx); Assert.Equal("project1-{0}.azurewebsites.net", endpointReferenceEx.Format); diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs index a0fe44a8a1a..2ffe5d25d2f 100644 --- a/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs +++ b/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs @@ -2099,7 +2099,7 @@ public async Task GetHostAddressExpression() .AddProject("project1", launchProfileName: null) .WithHttpEndpoint(); - var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http")); + var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); Assert.NotNull(endpointReferenceEx); Assert.Equal("project1.internal.{0}", endpointReferenceEx.Format); diff --git a/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs b/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs index b144728cc69..15034bb96c0 100644 --- a/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs +++ b/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs @@ -221,7 +221,7 @@ public async Task GetHostAddressExpression() .AddProject("Project1", launchProfileName: null) .WithHttpEndpoint(); - var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http")); + var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); Assert.NotNull(endpointReferenceEx); Assert.Equal("project1", endpointReferenceEx.Format); diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs b/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs index 7d061268233..68b23573eca 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs +++ b/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs @@ -105,7 +105,7 @@ public async Task GetHostAddressExpression() .AddProject("project1", launchProfileName: null) .WithHttpEndpoint(); - var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http")); + var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); Assert.NotNull(endpointReferenceEx); Assert.Equal("project1-service", endpointReferenceEx.Format); From 9a3954a3558c951149a64d326c2b2ee32393fabe Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:50:49 +0000 Subject: [PATCH 3/3] Add Experimental attribute to GetHostAddressExpression methods Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com> --- .../AzureContainerAppEnvironmentResource.cs | 2 ++ .../AzureAppServiceEnvironmentResource.cs | 2 ++ src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs | 2 ++ src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs | 2 ++ 4 files changed, 8 insertions(+) diff --git a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs index 41a51e3c149..e3c48d0e18b 100644 --- a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs +++ b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs @@ -4,6 +4,7 @@ #pragma warning disable ASPIREPIPELINES001 #pragma warning disable ASPIREAZURE001 +using System.Diagnostics.CodeAnalysis; using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Pipelines; using Azure.Provisioning; @@ -232,6 +233,7 @@ public AzureContainerRegistryResource? ContainerRegistry #pragma warning restore CS0618 // Type or member is obsolete /// + [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; diff --git a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs index 979272a738e..59a433772f6 100644 --- a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs +++ b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs @@ -4,6 +4,7 @@ #pragma warning disable ASPIREPIPELINES001 #pragma warning disable ASPIREAZURE001 +using System.Diagnostics.CodeAnalysis; using System.Text; using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Azure.AppService; @@ -382,6 +383,7 @@ public AzureContainerRegistryResource? ContainerRegistry #pragma warning restore CS0618 // Type or member is obsolete /// + [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; diff --git a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs index 4b0a8d325bc..06ec7223398 100644 --- a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs +++ b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs @@ -4,6 +4,7 @@ #pragma warning disable ASPIREPIPELINES001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. #pragma warning disable ASPIREPIPELINES003 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. +using System.Diagnostics.CodeAnalysis; using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Dcp.Process; using Aspire.Hosting.Docker.Resources; @@ -186,6 +187,7 @@ public DockerComposeEnvironmentResource(string name) : base(name) } /// + [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource; diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs index 7bc52269be8..edb0357720f 100644 --- a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs +++ b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs @@ -3,6 +3,7 @@ #pragma warning disable ASPIREPIPELINES001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. +using System.Diagnostics.CodeAnalysis; using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Kubernetes.Extensions; using Aspire.Hosting.Pipelines; @@ -100,6 +101,7 @@ public KubernetesEnvironmentResource(string name) : base(name) } /// + [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference) { var resource = endpointReference.Resource;