Skip to content
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

User Story: As a package consumer, I can replace a package in my graph with a different ID and version #5864

Closed
terrajobst opened this issue Jan 20, 2021 · 3 comments
Assignees
Labels
bulk-closed Team:NuGet User Story A single user-facing feature. Can be grouped under an epic.

Comments

@terrajobst
Copy link
Member

The scenario is:

  • App developer uses package Foo that is supported on Windows and Linux
  • Another developer added support for macOS and iOS. They uploaded the package under the name Bar.Foo.
  • App developer changes some configuration that instructs NuGet to replace Foo, Version=X with Bar.Foo, Version=Y.
  • This would assume that the Bar.Foo package contains binaries that are binary/runtime compatible with the binaries contained in Bar.
  • The only work here is changes to the way NuGet resolve the package graph for this project (and its closure)

This useful when packages are discontinued or additional features/platform support is added by another part. This puts the NuGet ecosystem on part with source-based distribution models.

@terrajobst terrajobst added User Story A single user-facing feature. Can be grouped under an epic. Priority:0 Work that we can't release without labels Jan 20, 2021
@terrajobst terrajobst changed the title As a package consumer, I can replace a package in my graph with a different ID and version User Story: As a package consumer, I can replace a package in my graph with a different ID and version Jan 20, 2021
@terrajobst terrajobst self-assigned this Jan 20, 2021
@eerhardt
Copy link
Member

Another scenario where this could help:

  • Package Foo, v1 ships.
  • Package Dependee1 references Foo, v1
  • Package Foo, v2 ships with a breaking change from Foo, v1.
  • Package Dependee2 references Foo, v2
  • App MyApp references Dependee1 and Dependee2, and the application is broken because Dependee1 needs Foo, v1 but it gets Foo, v2.

The developer of MyApp has the ability to patch Foo, v2 to fix the breaking change made from Foo, v1 in order to keep Dependee1 working correctly.

If the breaking change from Foo, v1 to Foo, v2 was a major API redesign, then of course this wouldn't be feasible for the developer of MyApp to fix. But if the breaking change was minor, this could unblock the app.

@clairernovotny
Copy link
Member

This also enables private fixes, either for bugs or security patches.

@terrajobst terrajobst removed the Priority:0 Work that we can't release without label Mar 21, 2023
@mairaw
Copy link
Contributor

mairaw commented May 26, 2023

Bulk closing .NET 6 epics and user stories. If you think this issue was closed in error, please reopen the issue and update it accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bulk-closed Team:NuGet User Story A single user-facing feature. Can be grouped under an epic.
Projects
None yet
Development

No branches or pull requests

4 participants