{"id":3074,"date":"2024-03-12T13:05:53","date_gmt":"2024-03-12T20:05:53","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=3074"},"modified":"2024-03-12T13:05:53","modified_gmt":"2024-03-12T20:05:53","slug":"refining-your-search-introducing-nuget-orgs-compatible-framework-filters","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/refining-your-search-introducing-nuget-orgs-compatible-framework-filters\/","title":{"rendered":"Refining Your Search: Introducing NuGet.org&#8217;s Compatible Framework Filters"},"content":{"rendered":"<p>Last year, <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-search-by-target-framework-on-nuget-org\/\">we introduced search by target frameworks on NuGet.org<\/a>, allowing you to filter your search results based on the framework(s) that a package targets. We received plenty of great feedback from you on how to make the filters more effective, and we are excited to announce that we are adding new search options that will now allow you to filter search results by a package\u2019s \u201ccompatible\u201d frameworks.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image1-1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image1-1-512x350.png\" alt=\"NuGet.org search page with new Framework filter options\" width=\"512\" height=\"350\" class=\"aligncenter size-medium wp-image-3084\" \/><\/a><\/p>\n<p>Previously, if you wanted to search for packages matching \u2018net8.0\u2019, you would only see packages that explicitly include \u2018net8.0\u2019.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image2-1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image2-1-560x350.png\" alt=\"Search for &#039;net8.0&#039; packages - exclude compatible frameworks\" width=\"560\" height=\"350\" class=\"aligncenter size-medium wp-image-3085\" \/><\/a><\/p>\n<p>Backwards compatibility is a key principle in .NET, and this means that packages targeting previous .NET versions, like \u2018net6.0\u2019 or \u2018net7.0\u2019, are also compatible with \u2018net8.0\u2019. We show this extended computed compatibility in full on the Frameworks tab of the Package Details page (<a href=\"https:\/\/www.nuget.org\/packages\/Newtonsoft.Json\">See NuGet Gallery | Newtonsoft.Json 13.0.3<\/a>), but so far, our filtering experience only supported filtering packages by their explicit asset frameworks.<\/p>\n<p>The new <strong>\u201cInclude compatible frameworks\u201d<\/strong> option we added allows you to flip between filtering by explicit asset frameworks and the larger set of \u2018compatible\u2019 frameworks. Filtering by packages\u2019 compatible frameworks now reveals a much larger set of packages for you to choose from.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image3-1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image3-1-560x346.png\" alt=\"Search for &#039;net8.0&#039; packages - include compatible frameworks\" width=\"560\" height=\"346\" class=\"aligncenter size-medium wp-image-3086\" \/><\/a><\/p>\n<p>We have also added framework badges to our search results, allowing you to get a preview of the frameworks that a package supports without having to navigate away from the search page. These badges show the lowest supported framework versions from the .NET, .NET Core, .NET Standard, and .NET Framework generations. Packages are compatible with any framework version that is equal to or higher than the badge version shown.<\/p>\n<p>&#8216;Dark blue&#8217; badges represent explicit asset frameworks, while &#8216;light blue&#8217; badges represent compatible frameworks.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image4-1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2024\/03\/CompatibleFrameworkFiltering-Image4-1-560x263.png\" alt=\"Framework badges in search results\" width=\"560\" height=\"263\" class=\"aligncenter size-medium wp-image-3087\" \/><\/a><\/p>\n<p>Clicking on a badge will redirect you to the Framework tab on the package\u2019s Details page on NuGet.org, where you will be able to see the full list of supported frameworks.<\/p>\n<p>You may have noticed that there is another new search option in the Filters panel: <strong>\u201cFramework Filter Mode.\u201d<\/strong><\/p>\n<p>With the new \u2018Framework Filter Mode\u2019 option, if you want to see packages matching <strong>any one of your framework filters<\/strong> rather than all of them, you can select the <strong>Any<\/strong> radio button.<\/p>\n<p>In contrast, when you select the <strong>All<\/strong> option, packages will be shown that match <strong>all of your framework filters<\/strong>.<\/p>\n<p>For more information on these new filters, or anything else related to the NuGet.org search experience, you can check out our documentation here: <a href=\"https:\/\/learn.microsoft.com\/nuget\/consume-packages\/finding-and-choosing-packages#advanced-filtering-and-sorting\">Find and evaluate NuGet packages | Microsoft Learn<\/a>.<\/p>\n<h2>What&#8217;s Next?<\/h2>\n<p>Your feedback is incredibly important to us, and we look forward to hearing more from you as you start using these new filters on NuGet.org. For new issues within NuGet.org, please <a href=\"https:\/\/github.com\/NuGet\/NuGetGallery\/issues\/new\/choose\">report a GitHub Issue<\/a>.<\/p>\n<p>Our next goal is to extend the reach of these filters by bringing framework filtering to our <a href=\"https:\/\/learn.microsoft.com\/nuget\/api\/search-query-service-resource\">V3 Search API<\/a> too, paving the way for a richer filtering experience for clients like Visual Studio or CLI.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year, we introduced search by target frameworks on NuGet.org, allowing you to filter your search results based on the framework(s) that a package targets. We received plenty of great feedback from you on how to make the filters more effective, and we are excited to announce that we are adding new search options that [&hellip;]<\/p>\n","protected":false},"author":109991,"featured_media":3075,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7933,7874,7931],"tags":[7848,8018,8019],"class_list":["post-3074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-feature-announcement","category-nuget","category-nuget-org","tag-nuget-org","tag-search-by-target-framework","tag-search-filters"],"acf":[],"blog_post_summary":"<p>Last year, we introduced search by target frameworks on NuGet.org, allowing you to filter your search results based on the framework(s) that a package targets. We received plenty of great feedback from you on how to make the filters more effective, and we are excited to announce that we are adding new search options that [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/3074","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\/109991"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=3074"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/3074\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/3075"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=3074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=3074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=3074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}