github dotnet/aspire v9.5.0
Aspire 9.5.0 Release

5 hours ago

We are excited to share that our 9.5.0 release of Aspire has shipped! All of the packages are available in NuGet.org now. Head over to https://learn.microsoft.com/en-us/dotnet/aspire/whats-new/dotnet-aspire-9.5 to find what's new in 9.5.0!

What's Changed

  • Update AzureSqlServerResource to use the new AzurePowerShellScript provisioning feature by @eerhardt in #10290
  • Add dashboard telemetry to interaction service by @JamesNK in #10272
  • Add missing end quote for Outputs declaration by @benwitmanmsft in #10289
  • Add option to console logs to wrap log lines by @JamesNK in #10271
  • Refactor Azure Storage API by @sebastienros in #10241
  • Branding updates for 9.5.0 by @joperezr in #10302
  • Add logs to trace details by @JamesNK in #10281
  • Add ContainerBuildOptions support to ResourceContainerImageBuilder for customizing dotnet publish by @Copilot in #10074
  • Move IInteractionService and related types to Aspire.Hosting namespace by @Copilot in #10267
  • [CI] Improve overall PR Tests time by @radical in #10309
  • Add GitHub Models integration by @sebastienros in #10170
  • Improve span details percentage calculation by @JamesNK in #10310
  • [release/9.4] Add GitHub Models integration (#10170) (#10313) by @danmoseley in #10316
  • Aspire cli: Add AOT builds for Linux, and macOS by @radical in #10275
  • Add CTRL-C guidance message to aspire run command output by @Copilot in #10203
  • Improve parameter resolution logging and exception handling in ParameterProcessor by @Copilot in #10320
  • Make parameters and connection strings visible in dashboard by @Copilot in #10336
  • Add Azure provisioning command handling and settings configuration by @davidfowl in #10038
  • Fix hiding dismiss on inputs dialog by @JamesNK in #10349
  • Fix missing 'name' property in TableService Bicep generation by @Copilot in #10334
  • Improved Kubernetes publisher labels by @hewe-saxo in #10208
  • Made changes to how parameter.Value works by @davidfowl in #10354
  • Create appmodel.md by @davidfowl in #10358
  • Force async execution of resource startup by @davidfowl in #10359
  • Refactor ParameterResource to use Lazy initialization for value retrieval by @davidfowl in #10361
  • Match name with ResourceCommandService by @JamesNK in #10370
  • Share more package checking code between CLI and app host by @JamesNK in #10372
  • Support uninstrumented peer visualization for parameters, and resources with connection strings and github models by @Copilot in #10340
  • bump version of Azure.Provisioning by @ArcturusZhang in #10374
  • Add xmldocs to generated metadata projects by @MattKotsenas in #9868
  • Remove SqlServerScriptProvisioningResource by @eerhardt in #10385
  • Update xunit.v3 to 3.0.0 stable by @Youssef1313 in #10371
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #10390
  • Add non-localhost URLs by @DamianEdwards in #10232
  • Update contributing.md by @danespinosa in #10394
  • Throw if container runtime is unhealthy during image build by @captainsafia in #10399
  • Fix the update dependencies action by installing .NET 9 as well by @eerhardt in #10397
  • Optimize trace detail page performance by @JamesNK in #10308
  • Add quotation marks in dashboard around arguments with spaces in them by @adamint in #10404
  • Harden Docker container runtime health check by @captainsafia in #10402
  • Fix TryMatchAgainstResources to return false for multiple resource matches by @Copilot in #10411
  • Fallback to previous DNS service discovery by @rzikm in #10140
  • Simplify GH Models API keys experience by @sebastienros in #10424
  • Fix parameter substitution in GitHub Models by @sebastienros in #10428
  • Add scripts to download aspire-cli by @radical in #10254
  • Ensure all YARP env vars are strings by @eerhardt in #10434
  • Refactor async task handling to use WaitAsync for cancellation support by @davidfowl in #10425
  • get-aspire-cli.ps1: Prepend the installation path to PATH instead of by @radical in #10437
  • chore: drop Aspire.Cli.Tests unwanted dependencies by @DeagleGross in #10422
  • Use CreateEmptyApplicationBuilder in Aspire.Cli by @eerhardt in #10441
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2750920 by @dotnet-bot in #10325
  • Add support for parameter description & custom input rendering by @DamianEdwards in #10440
  • Rename MessageBar interaction to Notification by @JamesNK in #10449
  • Update dependencies to latest by @eerhardt in #10401
  • Fix CLI install script printing unexpected '0' when executed via iex by @Copilot in #10459
  • Remove PingAsync RPC method from backchannel interfaces and implementations by @Copilot in #10454
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #10467
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #10471
  • Remove deprecated parameterless GetDashboardUrlsAsync method from AppHostRpcTarget by @Copilot in #10453
  • Revert peer matching logic to fix database resource resolution regression by @Copilot in #10456
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #10475
  • Change CompleteInteractionAsync answers to object by @JamesNK in #10480
  • Template name strings, default prompts, and template version selection changes. by @mitchdenny in #10444
  • Improve friendly name generation for aspire add command add introduce pre-release package sub-menu. by @Copilot in #10485
  • Fix WithHealthCheck method for ExternalServiceResource to access parameter values asynchronously by @Copilot in #10469
  • Make sure logs are suppressed for health checks by @davidfowl in #10495
  • Add markup escaping to ConsoleInteractionService to fix rendering issues by @Copilot in #10462
  • Fix IInteractionService API limitations in CLI by making unsupported interactions fail instead of silently returning by @Copilot in #10499
  • Specify names of parameters with default values by @DamianEdwards in #10502
  • Fix interaction provider in dashboard handling duplicate messages by @JamesNK in #10500
  • Update resource list in console logs after _showHiddenResources value changes by @adamint in #10406
  • Add purple styling for default values in CLI prompts by @Copilot in #10474
  • Force en-US for template install by @adamint in #10508
  • Add EmulatorResourceAnnotation to Azure emulator resources for consistent tooling support by @Copilot in #10523
  • Add preview indicator to 'aspire exec' command help text by @Copilot in #10522
  • Update AddSecret extension methods to use consistent parameter names by @Copilot in #10521
  • using-latest-daily.md: Update instructions to get cli by @radical in #10506
  • Make container runtime health check conditional based on resource requirements by @Copilot in #10393
  • Add aspire extension to nightly devcontainer by @adamint in #10445
  • Revert "Fix IInteractionService API limitations in CLI by making unsu… by @davidfowl in #10538
  • Update scripts to use the new Quality mappings to urls by @radical in #10479
  • using-latest-daily.md: fix instructions for getting daily cli by @radical in #10544
  • Add Experimental attribute to WithCustomInput method by @Copilot in #10535
  • Add user-friendly error handling for aspire new when directory contains existing files by @Copilot in #10496
  • update Azure.Provisioning.Storage to 1.1.2 by @ArcturusZhang in #10414
  • Add .NET SDK availability check to Aspire CLI commands by @Copilot in #10525
  • Add runtime information to dashboard exception telemetry by @JamesNK in #10446
  • Add server validation of interaction inputs by @JamesNK in #10527
  • Properly handle specific IP endpoint TargetHost by @danegsta in #10517
  • aspire-cli: Fix linux-arm64 and linux-musl-x64 to produce tarballs and not zip files by @radical in #10545
  • get-aspire-cli: Some fixes and cleanup by @radical in #10578
  • Fix telemetry opt out by @JamesNK in #10581
  • Fix ShowDismiss setting not being used with message boxs or confirmations by @JamesNK in #10580
  • Use proxied endpoints for aspire dashboard by @davidfowl in #10576
  • Fire ResourceEndpointsAllocatedEvent event once for each logical app model resource by @danegsta in #10548
  • Clean up publish/deploy command infrastructure and add context-sensitive completion messages by @Copilot in #10501
  • Include .NET 10 global install in copilot setup steps by @danmoseley in #10577
  • Rename AddBlobService to GetBlobService by @sebastienros in #10556
  • Fix CLI hanging when dashboard fails to start by implementing ResourceFailedException by @Copilot in #10567
  • DashboardHealthy = true (by default) by @mitchdenny in #10622
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2756050 by @dotnet-bot in #10604
  • Fix GitHubModels health check dependency on IHttpClientFactory by @Copilot in #10624
  • Update WithOtlpExporter XML Docs by @afscrome in #10603
  • chore: aspire exec --help improvements by @DeagleGross in #10598
  • fix: aspire exec fail fast improvements by @DeagleGross in #10606
  • fix: aspire exec fails in AOT for CommandOutput serialization by @DeagleGross in #10625
  • Update using-latest-daily.md by @davidfowl in #10631
  • Move hardcoded cli strings to resx by @adamint in #10504
  • Fix AddBlobs and AddBlobContainer when using default name by @eerhardt in #10635
  • Update YARP container tag by @benjaminpetit in #10639
  • Always set MSBUILDTERMINALLOGGER=false for all dotnet command executions in DotNetCliRunner by @Copilot in #10627
  • Update FluentUI to 4.12.1 by @JamesNK in #10477
  • Improve display of error log entries on trace details by @JamesNK in #10481
  • cli-scripts README.md: fix the Quality value from 'ga' to 'release' by @radical in #10659
  • Use specific classes for fluent menu items when styling to prevent text overflow by @adamint in #9827
  • [CI] Enable Native AOT for Cli on linux-arm64, and linux-musl-x64 by @radical in #10663
  • Add feature flag control for ExecCommand with default disabled by @Copilot in #10664
  • Multi target projects that would otherwise cause issues when restored in higher TFMs by @joperezr in #10658
  • Add ServiceDefaults to Yarp playground by @eerhardt in #10641
  • Update README.md with new discord by @maddymontaquila in #10660
  • Update Aspire.Hosting README.md with comprehensive Application Model Overview by @Copilot in #10554
  • Remove duplicate startup logging from DashboardLifecycleHook by @Copilot in #10691
  • Fix url for parameter sample by @maddymontaquila in #10679
  • Rename EventingExtensions class to DistributedApplicationEventingExtensions by @Copilot in #10688
  • aspire config set writes appHostPath to ~/.aspire/settings.json globally, causing incorrect path resolution by @Copilot in #10700
  • Clarify working directory assignment for project launch configurations by @karolz-ms in #10681
  • Mark ParameterResource.Value as obsolete in favor of GetValueAsync and direct usage by @Copilot in #10363
  • Add filter grouping labels for resource filters by @adamint in #10713
  • Always update resource list in console logs after hidden bool changes by @adamint in #10705
  • Change resource details view header to heading element by @adamint in #10708
  • Ensure idempotency for AddAsExistingResource across all Azure resource implementations by @Copilot in #10562
  • Enhance orphan detection in Aspire AppHost to be robust against PID reuse by @Copilot in #10673
  • Update YARP README to reflect current implementation and API patterns by @Copilot in #10706
  • [release/9.4] Mark Aspire.CLI as stable by @joperezr in #10724
  • Add Aspire CLI installation instructions to main README by @Copilot in #10732
  • Improve parameter description display by @JamesNK in #10696
  • Update mobile and desktop toolbars by @adamint in #10407
  • Update README.md with new Aspire overview and useful links section by @Copilot in #10733
  • Workaround for fluent select keyboard enter bug by @adamint in #10729
  • Don't run expensive build/test workflows for markdown-only changes by @Copilot in #10737
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2760978 by @dotnet-bot in #10739
  • feat(cli): aspire exec against container by @DeagleGross in #10380
  • [Automated] Update API Surface Area by @github-actions[bot] in #9359
  • Add AppHost debug support by @adamint in #10369
  • Add SSH Remote support for Aspire port forwarding settings by @Copilot in #10715
  • Update total items text to Showing X {item}, show for resources. Announce when # of shown items changes by @adamint in #10712
  • Don't show (None) on console logs if there is only one resource by @adamint in #10725
  • Add links between telemetry and resources in grid values by @JamesNK in #10648
  • Fix 6648 by @mitchdenny in #10769
  • Update gitignore to ignore Aspire CLI files by @JamesNK in #10768
  • Fix span link attributes not displayed by @JamesNK in #10747
  • Error traces and spans are displayed with error color by @JamesNK in #10742
  • Add more icons to dashboard property values by @JamesNK in #10767
  • Fix update dependencies workflow issue by generating a temporary sln file by @joperezr in #10781
  • [Automated] Update Playground Manifests by @github-actions[bot] in #10249
  • Fix exemplars that have no tracing information by @JamesNK in #10745
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2762294 by @dotnet-bot in #10766
  • Exe, ext service, + param icon updates for dashboard resource view + graph by @maddymontaquila in #10762
  • External Services with URL Parameter fails to generate manifests by @eerhardt in #10790
  • Whats new generation by @davidfowl in #10775
  • Unquarantine UseOrFindAppHostProjectFilePromptsWhenMultipleFilesFound test. by @mitchdenny in #10795
  • Allow resources to specify custom icons to use when displayed in the dashboard by @Copilot in #10760
  • Replace BicepFormatString with real FormattableString by @ArcturusZhang in #10773
  • Add unique 8-character GUID to screenshot filename in template tests by @Copilot in #10787
  • [CI] Build Cli native archives on GH runs by @radical in #10741
  • Set up Azure deployer and provisioning context prompting by @captainsafia in #10792
  • Add policy bot automation to assign milestones to pull requests based on target branch by @Copilot in #10684
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #10812
  • Fixed properties override when publishing an update in external service by @MermaidIsla in #10822
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2763918 by @dotnet-bot in #10807
  • Simplify Aspire CLI project name validation to only reject path separators by @Copilot in #10714
  • Fix GH Models lifetime by @sebastienros in #10842
  • Fix navigating to resources with a selected resource by @JamesNK in #10848
  • Initial app host localization by @JamesNK in #10295
  • bump extension version by @adamint in #10788
  • Fix automatic scrolling to the bottom of main page content by @JamesNK in #10740
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2766537 by @dotnet-bot in #10857
  • Fix competing resource generation on shared file by @JamesNK in #10870
  • Adding Resource to CommandLineArgsCallbackContext by @aaronpowell in #10864
  • Merge changes from release/9.4 branch by @joperezr in #10728
  • Bump Package Baseline validation to 9.4.0 by @joperezr in #10730
  • Remove page logging by @JamesNK in #10862
  • [CI] Add a top-level ci.yml which runs tests and build cli archives by @radical in #10810
  • Making arg non-nullable on CommandLineArgsCallbackContext by @aaronpowell in #10878
  • Do not match pipe as port separator by @jnyrup in #10884
  • Add Aspire.Hosting.OpenAI integration by @sebastienros in #10830
  • Fix endpoint resolution for individual Host/Port properties in WithEnvironment by @Copilot in #10892
  • Add Package Channel Service API for Aspire CLI by @Copilot in #10801
  • Fix TemporaryNuGetConfig to include AllPackages ("*") mappings by @Copilot in #10894
  • Add localhive.sh script for building NuGet packages and managing Aspire CLI hives by @davidfowl in #10905
  • upgrade extension npm packages by @adamint in #10854
  • Truncate large messages displayed in log grid by @JamesNK in #10882
  • Fix incorrect XML documentation in database AddDatabase methods for PostgreSQL, MySQL, and SQL Server by @Copilot in #10866
  • Remove all references to the Aspire workload by @Copilot in #10904
  • Bump tmp from 0.2.3 to 0.2.4 in /extension by @dependabot[bot] in #10853
  • Add LaunchProfile property to project details pane by @davidfowl in #10906
  • Update appmodel.md by @davidfowl in #10865
  • Add Visual Studio setup instructions to contributing documentation by @Copilot in #10918
  • Update Aspire.Cli README.md to reflect current implemented CLI surface by @Copilot in #10553
  • Add IResourceWithEndpoints interface to Azure resource classes by @davidfowl in #10898
  • Comprehensive validation and enhancement of whats-new-95.md release notes following README documentation process by @Copilot in #10794
  • Add new scripts to install aspire cli from PRs by @radical in #10922
  • feat(exec): support --workdir for aspire exec against container by @DeagleGross in #10912
  • Add health check for Azure App Config component by @zhiyuanliang-ms in #10797
  • Update 'components' references to 'integrations' across src/Components with selective terminology refinements by @Copilot in #10915
  • Update automation so merged PRs get assigned to 9.4.2 by @joperezr in #10936
  • Fix CognitiveService integration compatibility with Aspire.Azure.AI.Inference by @sebastienros in #10938
  • Update using-latest-daily.md by @davidfowl in #10942
  • Refactor AddCommand to use PackagingService with simplified channel discovery by @Copilot in #10899
  • Improve resources action menu by @JamesNK in #10869
  • Rename Application to Resource in dashboard OTLP functionality by @Copilot in #10868
  • Update copilot-instructions.md by @danmoseley in #10950
  • Add comprehensive markdown rendering support to Aspire CLI with extended syntax coverage and multiline handling by @Copilot in #10815
  • Make grid value component more reusable by @JamesNK in #10945
  • Hook up Azure Deployer to BicepProvisioner by @captainsafia in #10845
  • Add WaitForStart methods to support waiting for resource start without health checks by @Copilot in #10948
  • Fix log message visualizer by @JamesNK in #10964
  • Quarantine flaky test DependentResourceWaitsForOpenAIModelResourceWithHealthCheckToBeHealthy by @Copilot in #10974
  • Fix CTRL-C stall issue. by @mitchdenny in #10962
  • Localize DefaultProvisioningContextProvider interaction strings by @Copilot in #10961
  • Fix version checking with mixed state by @JamesNK in #10956
  • Update Azure.AI.OpenAI by @ericstj in #10928
  • Quarantine flaky test NewCommandDoesNotPromptForTemplateIfSpecifiedOnCommandLine by @Copilot in #10980
  • Quarantine: BrowserToken_LoginPage_Success_RedirectToResources by @mitchdenny in #10978
  • Add documentation for dogfooding pull requests with navigation links by @Copilot in #10952
  • Contribution guidelines: use local copy of dotnet CLI by @karolz-ms in #10984
  • serve blazor.web.js from wwwroot instead of setting up new endpoint to serve it by @adamint in #10954
  • Unsubscribe once with multiple dispose calls by @JamesNK in #10971
  • Quarantine flaky test NewCommandDerivesOutputPathFromProjectNameForStarterTemplate by @Copilot in #10989
  • Install .NET 8 globally in copilot setup steps by @danmoseley in #10982
  • Fix parameter tests with localized values by @JamesNK in #10959
  • Long input option in sample by @JamesNK in #10999
  • Bump azurite to latest release for azure storage emulator by @jeremy-vm in #10972
  • Make InteractionInput.Name required and Label optional by @Copilot in #10835
  • Add "All" option for multi-resource Console Logs viewing with colored prefixes and smart timestamp behavior by @Copilot in #10981
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2775220 by @dotnet-bot in #11005
  • Fix referencing existing keyvault resources as references by @davidfowl in #10991
  • Add WithPassword method to MySQL hosting extensions by @Copilot in #11007
  • fix for wrong OpenAIClientOptions used with keyed OpenAIClient(s) by @Steinblock in #11003
  • Fix grammar in AddX method responsibilities docs by @brettcannon in #11014
  • Fix creating projects with GB18030 chars by @danmoseley in #11015
  • Generate classes methods for model catalog in Azure AI Foundry integration by @davidfowl in #10986
  • Fix up error handling for Azure deployer errors by @captainsafia in #11013
  • Replace hardcoded version check notification strings with resource strings by @Copilot in #11017
  • Add emulator support for azure app configuration by @zhiyuanliang-ms in #10796
  • Remove IResourceWithoutLifetime on everything by @davidfowl in #10851
  • Updated Dashboard to accept/map forwarded headers by @danespinosa in #10388
  • Follow up to AppConfiguration Emulator by @eerhardt in #11023
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11025
  • Fix AddAsExistingResource to respect ExistingAzureResourceAnnotation by @Copilot in #11010
  • Quarantine flaky test NewCommandDoesNotPromptForProjectNameIfSpecifiedOnCommandLine by @Copilot in #11036
  • Fix Azure AI Foundry resource name by @sebastienros in #10934
  • Use AIFoundryModel constant in Foundry E2E by @sebastienros in #11039
  • Add top-level notification when container runtime is unhealthy with auto-dismissal by @Copilot in #11008
  • Add notification for when no container runtime is installed with consistent messaging by @Copilot in #11041
  • Allow requiring OpenTelemetry protocol if needed by @twsouthwick in #10507
  • Fix TransportOptionsValidator to accept valid Kestrel binding addresses by @Copilot in #10595
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11052
  • Update NuGet packages to latest stable versions by @Copilot in #11029
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #10274
  • [CI] Bump timeout for Hosting tests on linux to 25m by @radical in #11058
  • Add automated workflow to update AI Foundry models daily by @Copilot in #11040
  • Support deploying compute images and resources by @captainsafia in #11030
  • Revert "[main] Update dependencies from dotnet/arcade (#10274)" by @Copilot in #11066
  • Revert deployment connection string changes by @sebastienros in #11063
  • Update release notes for .NET Aspire 9.5 with new features, enhanceme… by @davidfowl in #11053
  • Bump form-data from 4.0.2 to 4.0.4 in /extension by @dependabot[bot] in #10599
  • Update templates for 9.5 by @DamianEdwards in #11064
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2778234 by @dotnet-bot in #11073
  • Add "Collapse all"/"Expand all" functionality in trace detail page with structured logs integration and root span preservation by @Copilot in #9474
  • Fix NuGet package prefetching causing UI lag in aspire new on macOS by @Copilot in #11069
  • Expose HostName, UserName, and Password reference properties for AzurePostgresFlexibleServerResource by @Copilot in #11051
  • Add HostName and Password reference properties to AzureRedisCacheResource by @Copilot in #11070
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11079
  • Details padding consistency by @JamesNK in #11082
  • Improve displaying durations by @JamesNK in #11078
  • Trace details header clean up by @JamesNK in #11085
  • Tweak displaying (All) console logs content by @JamesNK in #11087
  • Add resource column to trace detail by @JamesNK in #11089
  • aspire update command by @mitchdenny in #11019
  • Add sdk.paths and sdk.errorMessage to global.json by @Copilot in #11074
  • Add more tests infra for Azure deployer by @captainsafia in #11093
  • Update CODEOWNERS to include @captainsafia by @captainsafia in #11097
  • Build ServiceDiscovery library and tests against netstandard2.0 by @twsouthwick in #10470
  • Add WithForwardedHeaders method to configure forwarded headers for Aspire dashboard by @davidfowl in #11080
  • Use AppHost's runtimeconfig.json to determine dashboard framework versions and fix executable path handling by @Copilot in #11095
  • Quarantine flaky tests: DeployAsync_EmitsPublishedResources and NewCommandInteractiveFlowSmokeTest by @Copilot in #11109
  • Verify multi-compute environment deployment for Azure by @captainsafia in #11100
  • Add strongly typed github models classes to make them more discoverable by @davidfowl in #11101
  • Update Aspire CLI update command description string format by @Copilot in #11104
  • Add ResourceStoppedEvent with ResourceEvent state for enhanced lifecycle management by @Copilot in #11103
  • Verify Functions deployment via aspire deploy by @captainsafia in #11117
  • Implement clean debug logging for aspire CLI using Spectre Console with reduced category noise by @Copilot in #11125
  • Fix dashboard UI to show no message for cancelled commands and handle OperationCanceledException by @Copilot in #10893
  • Refactor NuGet package prefetching to use command-aware architecture by @Copilot in #11120
  • Fix typos in getting-perf-traces.md by @bart-vmware in #11137
  • Add showDeprecatedPackages feature flag to control deprecated NuGet package visibility by @Copilot in #11131
  • Standardize AI integration connection strings to eliminate dual keys and naming inconsistencies by @Copilot in #11067
  • Add relative path to apphost status messages and TUI dashboard by @Copilot in #11132
  • Fix null-handling in AzureResourcePreparer.ProcessAzureReferences to prevent NullReferenceException by @Copilot in #11136
  • Support running projects through VS code extension by @adamint in #10877
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #11088
  • Use the Model property when using Foundry Local deployments by @sebastienros in #11113
  • Split up provisioning context between run-mode and publish-mode by @captainsafia in #11094
  • [CI] Fix signing with Arcade by @radical in #11147
  • Fix diamond dependency duplicate updates in aspire update command by @Copilot in #11145
  • Add localhive.ps1 for windows by @davidfowl in #10907
  • Improve visual presentation of aspire update command with enhanced formatting by @Copilot in #11148
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11157
  • Deploy individual modules instead of main.bicep by @captainsafia in #11098
  • Add automated dogfooding comment workflow with manual trigger support for new pull requests by @Copilot in #11149
  • Add unofficial pipeline by @wtgodbe in #11161
  • Fix unofficial pipeline by @wtgodbe in #11163
  • Fix invalid directive format in GenModel.cs tool scripts by @Copilot in #11168
  • Make copying project templates incremental by @KirillOsenkov in #11164
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2782591 by @dotnet-bot in #11176
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #11178
  • Add suppressions for test credentials in CredScan by @danmoseley in #11179
  • Quarantine flaky tests RunCommand_SkipsBuild_WhenExtensionDevKitCapabilityIsAvailable and NewCommandDoesNotPromptForTemplateVersionIfSpecifiedOnCommandLine by @Copilot in #11171
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11177
  • Update dogfooding workflow to ensure idempotency and handle PR reopen events by @Copilot in #11185
  • Fix localhive pack syntax by @davidfowl in #11186
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2782967 by @dotnet-bot in #11190
  • Fix Docker Swarm deployment labels serialization to use correct YAML structure by @Copilot in #11204
  • Reorder template version prompting before template options in aspire new command by @Copilot in #11006
  • Set ASPIRE_VERSION_CHECK_DISABLED when UpdateNotificationsEnabled feature is disabled by @Copilot in #10687
  • Fix Azure Functions port mismatch in Visual Studio by enhancing launch profile resolution by @Copilot in #10958
  • Fix NuGet package source functionality when aspire CLI creates packageSourceMapping for the first time by @Copilot in #11207
  • Use mssql instead of azure-sql-edge for ServiceBus Emulator by @martincostello in #10378
  • Add net462 target to ServiceDiscovery by @twsouthwick in #11114
  • Bump form-data from 4.0.2 to 4.0.4 in /extension by @dependabot[bot] in #11180
  • Bump tmp from 0.2.3 to 0.2.5 in /extension by @dependabot[bot] in #11181
  • Caitie/update test templates by @CaitieM20 in #10662
  • Add synchronize trigger to dogfood-comment workflow by @Copilot in #11211
  • Split up publish and deploy and unify graphs by @captainsafia in #11175
  • Update wording in templates by @danmoseley in #11182
  • Fix volume and bind mount naming collision when publishing Azure Container Apps by @Copilot in #11210
  • Update docker container tags by @joperezr in #10473
  • Update release notes for .NET Aspire 9.5 with new CLI improvements by @davidfowl in #11198
  • [CI] Add a QuarantineTool for tests by @radical in #11192
  • Fix NuGet.config handling to only modify target directory in subdirectory creation scenarios by @Copilot in #11213
  • Add initial version of Aspire.Hosting.Azure.Kusto by @MattKotsenas in #10935
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #11229
  • Make ResourceNotificationService.WaitForResourceHealthyAsync wait for ResourceReadyEvent by @Copilot in #11228
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2785249 by @dotnet-bot in #11219
  • Add port customization support for Azure Kusto emulator by @Copilot in #11226
  • Support multiple debug sessions (disambiguate RPC connections) and fix run exception for non-aspire run commands by @adamint in #11221
  • Revise update instructions for Aspire projects by @davidfowl in #11235
  • Standardizes log message parameter names for consistency by @Meir017 in #11233
  • Standardizes logging parameter names for resources - p2 by @Meir017 in #11236
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11242
  • Add types for adding openssl compatible certificate files to containers by @danegsta in #11220
  • Add publishing step/task for fetch sub IDs and regions by @captainsafia in #11241
  • Remove unused VerifyExtensions.cs file by @Copilot in #11240
  • Add support for Azure Redis enterprise by @eerhardt in #10726
  • Remove ingestion endpoint from Kusto emulator by @MattKotsenas in #11247
  • Mark Aspire.Hosting.Azure.Kusto as a preview package by @MattKotsenas in #11246
  • Support prompting for unresolved parameters during deploy by @captainsafia in #11160
  • Enhance copilot-instructions.md with comprehensive repository onboarding and standard dotnet command usage by @Copilot in #11191
  • Mark Kusto db as FailedToStart if creation fails by @MattKotsenas in #11249
  • Modify connection string example in README by @eerhardt in #11258
  • [Automated] Update Playground Manifests by @github-actions[bot] in #11259
  • aspire update supports central package management by @Copilot in #11252
  • Add timestamp display to SpectreConsoleLoggerProvider showing only time (HH:mm:ss) for debugging by @Copilot in #11261
  • Add type filter to tracing by @JamesNK in #11262
  • Use MEAI for AI telemetry by @JamesNK in #11237
  • [CI] Add new Outerloop workflow for infrequent test runs by @Copilot in #11250
  • Move executable command / working directory to be annotation based by @afscrome in #11135
  • Fix ResourceSelect component to display "Resource" instead of "ResourceLabel" in dashboard by @Copilot in #11273
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2787919 by @dotnet-bot in #11268
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #11199
  • Add WithStaticFiles extension methods to YARP resources by @Copilot in #11275
  • Remove integration Markdown scheme allow list by @JamesNK in #11279
  • [Automated] Update dependencies by @github-actions[bot] in #10828
  • [CI] Fix outerloop and quarantine workflows by @radical in #11282
  • Improve dashboard GenAI telemetry UI by @JamesNK in #11227
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2789082 by @dotnet-bot in #11278
  • Only capitalize start of title by @JamesNK in #11287
  • Add warning logging and JSON error responses for unsupported OTLP requests by @Copilot in #11254
  • Explicit CTRL-C handling in Aspire CLI. by @mitchdenny in #11295
  • [Automated] Update Github Models by @github-actions[bot] in #11289
  • Parallelize more deployment steps by @captainsafia in #11248
  • Improve GenAI and interactions Markdown rendering by @JamesNK in #11286
  • Set OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT to true in local development by @JamesNK in #11304
  • Build aspire extension and allow acquisition from pr cli shell script by @adamint in #11245
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2790424 by @dotnet-bot in #11293
  • Improve instance id matching by @JamesNK in #11305
  • Fix default output behavior for aspire publish command to use subdirectory by @Copilot in #11297
  • Allow menus to overflow vertically to avoid blocking off content by @adamint in #11317
  • Support prompting and steps/tasks in debug mode by @captainsafia in #11314
  • Adjust markdown heading level by @JamesNK in #11321
  • Fix rendering of Markdown links in CLI by @captainsafia in #11320
  • Hide resource footer on graph view by @JamesNK in #11323
  • Enhance aspire update command resilience with XML fallback parsing for unresolvable AppHost SDKs by @Copilot in #11291
  • Dev tunnels by @DamianEdwards in #11251
  • Always display .NET runtime version in dashboard settings by @JamesNK in #11330
  • Update Dockerfile to use Python 3.8-slim from netaspireci.azurecr.io registry by @Copilot in #11334
  • Disable guardian analyzer auto injection. by @mitchdenny in #11331
  • only apply overflow-y to mobile nav menu by @adamint in #11338
  • Add safety warnings to dogfooding workflow documentation and GitHub comments by @Copilot in #11344
  • Disable Roslyn new rulesets by @joperezr in #11340
  • Look for operation in GenAI filter by @JamesNK in #11325
  • Use unique tag for each image deployment by @captainsafia in #11355
  • Move tag and push APIs to IResourceContainerImageBuilder by @captainsafia in #11336
  • Workaround for dashboard scroll bug on .NET 9 and 10 by @JamesNK in #11348
  • Refactor console logs page to use item provider, shared channel for writing logs by @JamesNK in #11308
  • Make KnownResourceCommands public with streamlined implementation by @Copilot in #11328
  • Fixing CLI strings to standardize one word for apphost by @maddymontaquila in #11057
  • Add javascript, node, and python samples from aspire samples by @adamint in #11372
  • Add single-file apphost feature flag with elevated .NET SDK requirements by @Copilot in #11360
  • Support for container app job by @eerhardt in #11302
  • Add README.md documentation for Aspire.Hosting.DevTunnels library by @Copilot in #11327
  • What's new updates by @davidfowl in #11380
  • Automatically apply WithUrl with relative URL to all URLs by @DamianEdwards in #11216
  • Add single-file apphost discovery to Aspire CLI ProjectLocator with feature flag by @Copilot in #11362
  • Update whats-new-95.md by @afscrome in #11387
  • Fix Docker build failures with trailing slashes in context paths by @Copilot in #11374
  • Add PublishAsAzureContainerAppJob overloads for scheduled and manual jobs by @Copilot in #11385
  • Prevent state propagation to child resources with their own lifetime in ApplicationOrchestrator for specific resource types. by @davidfowl in #11388
  • Fix CLI "Stopping Aspire." message formatting for better visual appearance by @Copilot in #11359
  • Add comprehensive path normalization for consistent volume naming across platforms by @Copilot in #10717
  • Add tooltip to selects with long content by @JamesNK in #11395
  • Added "probe" support to project and container resources by @Dona278 in #11081
  • Add method to create YarpCluster with a list of string as addresses by @benjaminpetit in #11368
  • Quarantine flaky test PublishCommandWithoutOutputPathUsesDefaultSubdirectory by @Copilot in #11398
  • Fail if PublishAsAzureContainerAppJob is called without AddAzureContainerAppEnvironment by @eerhardt in #11409
  • Properly compare tokens using timingSafeEqual in extension and remove token parameter from extension rpc target by @adamint in #11283
  • Don't add timestamp disambugation to deployment name by @captainsafia in #11319
  • Add cloud type filter to tracing pages by @JamesNK in #11324
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2794115 by @dotnet-bot in #11396
  • Add span details action menu with GenAI link by @JamesNK in #11361
  • GenAI visualizer improvements and bug fixes by @JamesNK in #11402
  • Improve display of replica instances in resource selector by @JamesNK in #11416
  • Add extension-compatible aspire config command implementation by @adamint in #10231
  • Configure default HTTP/HTTPS endpoints for Docker container with target port set to 8080 by @davidfowl in #11420
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2794432 by @dotnet-bot in #11418
  • Filter launch profiles by commandName to ignore unsupported profiles like IISExpress by @Copilot in #11426
  • Delete and recreate devtunnels if they already exist & add configurable retries by @DamianEdwards in #11423
  • Add Aspire.Microsoft.Azure.StackExchangeRedis component for Azure Cache for Redis with Azure AD authentication by @Copilot in #11141
  • Update to latest runtime, aspnetcore, and extensions by @eerhardt in #11419
  • Improve DeploymentImageTagAnnotation: rename to DeploymentImageTagCallbackAnnotation and add async callback support with service provider access and execution context by @Copilot in #11406
  • Remove left over source build artifacts by @eerhardt in #11431
  • [main] Update dependencies from microsoft/usvc-apiserver by @dotnet-maestro[bot] in #11411
  • Ensure devtunnels CLI is at least minimum required version by @DamianEdwards in #11439
  • Implement disk caching mechanism with expiry, version-aware cleanup, cache management commands, selective caching control, and testable IDiskCache interface for NuGet package search operations in Aspire CLI by @Copilot in #11394
  • Keyed redis distributed cache by @eerhardt in #11417
  • Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2794723 by @dotnet-bot in #11436
  • Fix text visualizer dialog max height by @JamesNK in #11446
  • Add destination to span details by @JamesNK in #11424
  • Fix up passing Dockerfile build arguments and secrets by @captainsafia in #11352
  • Fix az acr login with podman container runtime by @Copilot in #11442
  • Various extension bug fixes/improvements by @adamint in #11421
  • Use obj instead of string for destinations by @benjaminpetit in #11438
  • Implement Aspire Single-File AppHost template with CLI feature flag integration by @Copilot in #11393
  • Implement feature flag validation and cleanup for single file AppHost support in RunCommand by @Copilot in #11397
  • Show deployment errors on a per-resource basis by @captainsafia in #11455
  • [release/9.5] Add auto activation feature to Redis and RabbitMQ connections by @github-actions[bot] in #11461
  • [release/9.5] Prioritize AzCliCredential for Azure deployment scenarios by @github-actions[bot] in #11466
  • [release/9.5] Refactor Program.cs to use app.UseStaticFiles() and update WebFrontEnd.csproj to target DefaultTargetFramework by @github-actions[bot] in #11477
  • [release/9.5] Update Aspire.AppHost.Sdk to support simpler file-based app AppHosts by @github-actions[bot] in #11472
  • Stabilizing package versions by @joperezr in #11491
  • [release/9.5] Update return value for compute resources check by @github-actions[bot] in #11489
  • [release/9.5] Support prompting for generated values during deploy by @captainsafia in #11497
  • [release/9.5] Add provisioning support to Aspire.Hosting.Azure.Kusto by @github-actions[bot] in #11506
  • [release/9.5] Add single-file support for aspire deploy and aspire publish by @github-actions[bot] in #11476
  • [release/9.5] Enable aspire add command for single-file AppHost (apphost.cs) by @github-actions[bot] in #11475
  • [release/9.5] 9.5 API Review Feedback Round 1 by @github-actions[bot] in #11522
  • [release/9.5] Ensure devtunnel URLs are updated when started by @github-actions[bot] in #11526
  • [release/9.5] Fix 9.5 option in templates & update 9.4 option to 9.4.1 by @github-actions[bot] in #11533
  • [release/9.5] Fix remove logs error by @github-actions[bot] in #11531
  • [release/9.5] Don't add reference to devtunnel endpoint when publishing by @github-actions[bot] in #11575
  • [release/9.5] Fix ai foundry model gen by @github-actions[bot] in #11578
  • [release/9.5] Remove IServiceProvider from ContainerImageReference by @eerhardt in #11585
  • [release/9.5] Backport of Dev tunnel improvements (#11547) by @DamianEdwards in #11591
  • [release/9.5] Prompt for NuGet.config updates by @github-actions[bot] in #11598
  • [release/9.5] Fix thread safety issue in OutputCollector causing ArgumentOutOfRangeException in aspire new by @github-actions[bot] in #11586
  • [release/9.5] Add staging channel support to Aspire CLI for dogfooding staging builds by @github-actions[bot] in #11612
  • [release/9.5] Upgrade App Configuration dependency by @github-actions[bot] in #11597
  • [release/9.5] Update dependencies from microsoft/usvc-apiserver by @github-actions[bot] in #11623
  • [release/9.5] Ensure that the Tool form of the Aspire CLI is platform-independent, framework-dependent. by @github-actions[bot] in #11645

New Contributors

Full Changelog: v9.4.0...v9.5.0

Don't miss a new aspire release

NewReleases is sending notifications on new releases.