{"id":55680,"date":"2025-02-25T10:00:00","date_gmt":"2025-02-25T18:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=55680"},"modified":"2025-02-25T10:00:00","modified_gmt":"2025-02-25T18:00:00","slug":"dotnet-aspire-9-1","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-aspire-9-1\/","title":{"rendered":".NET Aspire 9.1 is here with six great new dashboard features, and more!"},"content":{"rendered":"<p>We are excited to announce the release of <a href=\"https:\/\/learn.microsoft.com\/dotnet\/aspire\/whats-new\/dotnet-aspire-9.1\">.NET Aspire 9.1<\/a>! This release includes several new features and quality of life improvements based on feedback from developers using .NET Aspire in production applications. In this post, we will focus on the new features in the .NET Aspire dashboard, as well as some other cool features that have been added in this release.<\/p>\n<h2>\ud83d\udda5\ufe0f Six great new dashboard features<\/h2>\n<p>The .NET Aspire dashboard has received several new features in this release. Here are the highlights:<\/p>\n<h3>\ud83e\udde9 Resource Relationships<\/h3>\n<p>The dashboard now reflects the concept of a &#8220;parent&#8221; and &#8220;child&#8221; resource relationship. For example, if you create a Postgres instance with multiple databases, they will now be nested in the <strong>Resource<\/strong> page in the same instance.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/02\/dashboard-parentchild.png\" alt=\"A screenshot of the .NET Aspire dashboard showing the Postgres resource with a database nested underneath it.\" \/><\/p>\n<h3>\ud83d\udd24 Localization Overrides<\/h3>\n<p>The dashboard defaults to the language set in your browser. This release introduces the ability to override this setting and change the dashboard language independently from the browser language. Consider the following screen capture, that demonstrates the addition of the language dropdown in the dashboard:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/02\/dashboard-language.png\" alt=\"A screenshot of the .NET Aspire dashboard showing the new flyout menu to change language.\" \/><\/p>\n<h3>\ud83d\udd22 Filtering<\/h3>\n<p>You can now filter what you see in the <strong>Resource<\/strong> page by <strong>Resource type<\/strong>, <strong>State<\/strong>, and <strong>Health state<\/strong>. Consider the following screen capture, which demonstrates the addition of the filter options in the dashboard:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/02\/dashboard-filter.png\" alt=\"A screenshot of the .NET Aspire dashboard showing the new filter options.\" \/><\/p>\n<h3>\ud83d\udcdd More Resource Details<\/h3>\n<p>When you select a resource in the dashboard, more data points are now available in the details pane, including <strong>References<\/strong>, <strong>Back references<\/strong>, and <strong>Volumes<\/strong> with their mount types.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/02\/dashboard-resourcedetails.png\" alt=\"A screenshot of the .NET Aspire dashboard with references and back references showing.\" \/><\/p>\n<h3>\ud83d\udee1\ufe0f CORS Support for Custom Local Domains<\/h3>\n<p>You can now set the <code>DOTNET_DASHBOARD_CORS_ALLOWED_ORIGINS<\/code> environment variable to allow the dashboard to receive telemetry from other browser apps, such as if you have resources running on custom localhost domains.<\/p>\n<p>For more information, see <a href=\"https:\/\/learn.microsoft.com\/dotnet\/aspire\/app-host\/configuration#dashboard\">.NET Aspire app host: Dashboard configuration<\/a>.<\/p>\n<h3>\ud83e\udeb5 Flexibility with Console Logs<\/h3>\n<p>The console log page has two new options. You&#8217;re now able to download your logs so you can view them in your own diagnostics tools. Plus, you can turn timestamps on or off to reduce visual clutter when needed.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/02\/consolelogs-download.png\" alt=\"Screenshot of console logs page with download button, turn off timestamps button, and logs without timestamps.\" \/><\/p>\n<h3>\ud83c\udfa8 Various UX Improvements<\/h3>\n<p>Several new features in .NET Aspire 9.1 enhance and streamline popular tasks:<\/p>\n<ul>\n<li>Resource commands, such as <strong>Start<\/strong> and <strong>Stop<\/strong> buttons, are now available on the <strong>Console logs<\/strong> page.<\/li>\n<li>Single selection to open in the <em>text visualizer<\/em>.<\/li>\n<li>URLs within logs are now automatically clickable, with commas removed from endpoints.<\/li>\n<\/ul>\n<p>Additionally, the scrolled position now resets when switching between different resources.<\/p>\n<p>For more details on the latest dashboard enhancements, check out <a href=\"https:\/\/bsky.app\/profile\/james.newtonking.com\">James Newton-King<\/a> on Bluesky, where he&#8217;s been sharing new features daily.<\/p>\n<h2>\ud83d\ude80 And A Whole Lot More<\/h2>\n<p>In addition to the new dashboard features, .NET Aspire 9.1 includes several other cool features:<\/p>\n<ul>\n<li><strong>\u25b6\ufe0f Start Resources on Demand<\/strong>: You can now tell resources not to start with the rest of your app by using <code>WithExplicitStart()<\/code> on the resource in your app host. Then, you can start it whenever you&#8217;re ready from inside the dashboard.<\/li>\n<li><strong>\ud83d\udc33 Better Docker Integration<\/strong>: The <code>PublishAsDockerfile()<\/code> feature was introduced for all projects and executable resources. This enhancement allows for complete customization of the Docker container and Dockerfile used during the publish process.<\/li>\n<li><strong>\ud83e\uddf9 Cleaning Up Docker Networks<\/strong>: In 9.1, we addressed a persistent issue where Docker networks created by .NET Aspire would remain active even after the application was stopped. This bug, tracked in <a href=\"https:\/\/github.com\/dotnet\/aspire\/issues\/6504\">issue #6504<\/a>, is resolved. Now, Docker networks are properly cleaned up, ensuring a more efficient and tidy development environment.<\/li>\n<li><strong>\ud83e\uded9 Improved Development Container support<\/strong>: In this release, we improved support for Dev Containers in both GitHub Codespaces and Visual Studio Code. See <a href=\"https:\/\/github.com\/dotnet\/aspire-devcontainer\">dotnet\/aspire-devcontainer<\/a>.<\/li>\n<\/ul>\n<p>See the full list of new features in the <a href=\"https:\/\/learn.microsoft.com\/dotnet\/aspire\/whats-new\/dotnet-aspire-9.1\">What&#8217;s new in .NET Aspire 9.1<\/a> documentation.<\/p>\n<h2>\ud83c\udfa5 Learn More on the .NET Aspire Community Standup<\/h2>\n<p>Join us on the .NET Aspire Community Standup to learn more about the new features in .NET Aspire 9.1. Watch the recording below:<\/p>\n<p><iframe width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/WnbDvuEjKaY\" allowfullscreen><\/iframe><\/p>\n<h2>\ud83d\udce2 Learn More &amp; Get Involved<\/h2>\n<p>We hope you enjoy the new features in .NET Aspire 9.1! As always, we welcome your feedback and contributions. Here are some ways to get involved:<\/p>\n<ul>\n<li><strong>GitHub<\/strong>: Collaborate with us on <a href=\"https:\/\/github.com\/dotnet\/aspire\">GitHub<\/a> or join us on <a href=\"https:\/\/discord.com\/invite\/h87kDAHQgJ\">Discord<\/a> to chat with team members.<\/li>\n<li><strong>Documentation<\/strong>: Check out the <a href=\"https:\/\/learn.microsoft.com\/dotnet\/aspire\">official documentation<\/a> for more information on .NET Aspire.<\/li>\n<li><strong>Community Standup<\/strong>: Join us on the <a href=\"https:\/\/dotnet.microsoft.com\/live\/community-standup\">.NET Aspire Community Standup<\/a> to stay up-to-date with the latest developments.<\/li>\n<\/ul>\n<p>Thank you for being a part of the .NET Aspire community!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>.NET Aspire 9.1 is here! From enhanced dashboard capabilities like Resource Relationships and Localization Overrides to improved Docker integration and flexible console logs, this release is packed with tools to streamline your development process.<\/p>\n","protected":false},"author":1965,"featured_media":55681,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685,7783,7252,7689],"tags":[4,7693],"class_list":["post-55680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-aspire","category-cloud","category-cloud-native","tag-net","tag-cloud-native"],"acf":[],"blog_post_summary":"<p>.NET Aspire 9.1 is here! From enhanced dashboard capabilities like Resource Relationships and Localization Overrides to improved Docker integration and flexible console logs, this release is packed with tools to streamline your development process.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/55680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/1965"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=55680"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/55680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/55681"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=55680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=55680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=55680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}