-
Notifications
You must be signed in to change notification settings - Fork 730
Enable Release Notes Display in NuGet Package Management (IPackageSearchMetadata) #6783
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release-6.14.x
Are you sure you want to change the base?
Enable Release Notes Display in NuGet Package Management (IPackageSearchMetadata) #6783
Conversation
- Added support for a "permanent" pre-release of -octopus that we will use as our own internal version based off the "official" releases.
Build & Test NuGet.Client pre-release packages and deploy to octopus deploy This github action will run against the 'main/default' branch of octopus (currently this is still on 3.6.0) and all release/ prefixed branches, that we will use to maintain major versions from upstream and maintain our 'own' variations of each major version. "Set Octopus Deploy Flag" determines when we deploy, currently on "PR" and merge to "release" branches or our default branch Set Release Label is for the NuGet Release Label (these are pre-defined) and we have opted to be closely aligned with them, except for (nightly) that we added support for to enable our nightly builds. this is why you see we use final, that essentially works as our "default branch" / "octopus" main release that is technically a pre-release because all our octopus variants will be pre-release. "Set BuildNumber" opted run number and attempt to ensure we can link a nuget package to a Github Action Run We only do a cut down level of unit tests currently as we don't require the full suite and we are only building the core packages at this stage and ran into a bug with one of the test projects on the latest NuGet.Clients 16.14.0 branch that we forked from.
- Add ReleaseNotes property to IPackageSearchMetadata interface - Implement ReleaseNotes in all metadata classes (LocalPackageSearchMetadata, PackageSearchMetadataV2Feed, etc.) - Fix PackageSearchMetadataBuilder.FromIdentity() to include ReleaseNotes - Fix PackageSearchMetadataV2Feed second constructor missing ReleaseNotes assignment - Add ReleaseNotes to PackageSearchMetadataContextInfo and Create() method - Update wrapper classes (RecommendedPackageSearchMetadata, TransitivePackageSearchMetadata) - Add V2FeedPackageInfo constructor overload for backwards compatibility - Update PublicAPI.Unshipped.txt files for all target frameworks - Update GlobalSuppressions.cs for new method signatures - Fix test fixtures and add missing ReleaseNotes assertions
7e4cf83
to
eee60e1
Compare
@enf0rc3 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
Contributor License AgreementContribution License AgreementThis Contribution License Agreement ( “Agreement” ) is agreed to by the party signing below ( “You” ), 1. Definitions. “Code” means the computer software code, whether in human-readable or machine-executable form, “Project” means any of the projects owned or managed by .NET Foundation and offered under a license “Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any “Submission” means the Code and any other copyrightable material Submitted by You, including any 2. Your Submission. You must agree to the terms of this Agreement before making a Submission to any 3. Originality of Work. You represent that each of Your Submissions is entirely Your 4. Your Employer. References to “employer” in this Agreement include Your employer or anyone else 5. Licenses. a. Copyright License. You grant .NET Foundation, and those who receive the Submission directly b. Patent License. You grant .NET Foundation, and those who receive the Submission directly or c. Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement. 6. Representations and Warranties. You represent that You are legally entitled to grant the above 7. Notice to .NET Foundation. You agree to notify .NET Foundation in writing of any facts or 8. Information about Submissions. You agree that contributions to Projects and information about 9. Governing Law/Jurisdiction. This Agreement is governed by the laws of the State of Washington, and 10. Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and .NET Foundation dedicates this Contribution License Agreement to the public domain according to the Creative Commons CC0 1. |
Result Summary: ReleaseNotes Property Integration
Technical Change Overview
The
ReleaseNotes
property has been added to theIPackageSearchMetadata
interface and implemented throughout the NuGet package metadata pipeline, from V2 feed parsing to consumer APIs.Package Calls That Will Now Include Release Notes
1. Core Protocol APIs
PackageMetadataResource.GetMetadataAsync()
- ReturnsIPackageSearchMetadata
with release notes for specific package versionsPackageSearchResourceV3.SearchAsync()
- Package search results will include release notes2. Visual Studio Integration
NuGetPackageSearchService.GetPackageMetadataAsync()
- VS package service calls returnPackageSearchMetadataContextInfo
with release notesNuGetPackageSearchService.GetPackageMetadataListAsync()
- Package version lists include release notesIPackageMetadataProvider
implementations - All metadata provider methods now expose release notes:GetPackageMetadataAsync()
GetLatestPackageMetadataAsync()
GetPackageMetadataListAsync()
GetLocalPackageMetadataAsync()
3. PowerShell Cmdlets
Get-Package -ListAvailable
- Remote package listings will include release notes metadataFind-Package
- Package search results will contain release notesIPackageSearchMetadata
objects returned to PowerShell scripts4. Command Line Tools
nuget.exe search
- Command-line search results have access to release notes (though not currently displayed)5. Visual Studio Package Manager UI
PackageSearchMetadataContextInfo
objects passed to UI now include release notesDetailedPackageMetadata
class doesn't map the release notes property)Data Flow Path
Developer Experience Impact
✅ What Works Now
IPackageSearchMetadata
can access theReleaseNotes
propertyLocalPackageSearchMetadata
DetailedPackageMetadata
constructor doesn't map theReleaseNotes
property fromserverData.ReleaseNotes
)🔧 Future Enhancement Opportunities
Summary
The technical implementation successfully adds release notes support to the entire NuGet metadata pipeline. All core APIs and services now provide access to release notes, making them available to any consumer of
IPackageSearchMetadata
. However, the user-facing tools (VS UI and CLI) would need additional updates to actually display this information to end users.This change fills a critical gap in NuGet's package discovery and information display functionality:
Additional information and impacts of this change.
NuGet packages have always supported release notes in their .nuspec files, but the Package Manager UI couldn't
display them during package browsing and search because the search metadata interface (IPackageSearchMetadata) was
missing this property.
BEFORE this change:
path)
AFTER this change:
results)
Technical Enablement:
For Package Consumers:
For Package Authors:
This change transforms release notes from "hidden documentation" to discoverable, actionable information that enhances the entire NuGet package management experience.
Bug
Fixes:
Description
PR Checklist