microsoft / vscode-dotnettools

This is a feedback repository to capture issues logged for the C# Dev Kit and related extensions from Visual Studio Code
Other
221 stars 10 forks source link

[SUGGESTION] Provide a GUI NuGet package manager in Visual Studio Code #1435

Open JonDouglas opened 1 week ago

JonDouglas commented 1 week ago

Describe the feature you'd like

Based on C# Dev Kit surveys both from the Visual Studio Code and NuGet sides, we have seen signal that people would like to see an official GUI experience to manage their packages with.

This GUI should:

  1. Be minimal
  2. Match VSCode UI/UX paradigm
  3. Simplify navigation
  4. Provide ample data about packages
  5. Focused on performance and responsiveness
  6. Provide clear user feedback when interacting with
  7. Be keyboard shortcut driven
  8. Bonus: Work well with modern LLM experiences like Copilot and an agent should be able to do common package management operations on behalf the user or bring the user to the experience with the proper context.

Specifics:

  1. Search bar needs to be prominent, fast, and effective. You should be able to use names, keywords, and version syntax to find the exact package you're after.
  2. Filters and sorts need to be modernized. You should be able to filter (narrow the list down) by many things like stable/pre-release, vulnerable/deprecated, download count, frameworks, relevance, etc. You should be able to sort (order the list) by many things like popularity, latest updates, relevance, etc.
  3. Package Details page should incorporate all the important NuGet metadata without overloading. It should allow you to see similar breakdowns akin to NuGet.org tabs like README, Release Notes, Frameworks, Dependencies, etc.
  4. Installing, Updating, and Uninstalling should be clearly visible and easy to use. A version selector should allow you to quickly choose between different versions. The latest stable version is highlighted by default. Pre-release toggle is easily accessible or warned to the user if not enabled.
  5. Multi-project management should be a core experience where a user can easily swap between project, solution, and "central package management" modes on a whim with a dropdown and checkbox system.
  6. Visual feedback such as package operation progress, status icons of installed/problematic packages, and notifications when updates are available will be key.
  7. Switching between package sources should be seamless and a user should be able to quickly/easily manage sources at any time. They should also be able to set the priority of sources which could use package source mapping under the hood to orchestrate.
  8. When managing credentials, there should be affordances for where to enter and manage credentials and respective API keys.
  9. All operations should be "batch-able" meaning you can bulk update/install/remove multiple packages and seamlessly change the context of project/solution/CPM to confirm the operation.
  10. It should consider caching the top 100-300 packages to minimize background load times when browsing for packages.

Previously Voted Concepts

Please 👍 or 👎 this comment to help us with the direction of this feature & leave as much feedback/questions/concerns as you'd like on this issue itself and we will get back to you shortly.

Thank You 🎉

Alternatives considered

No response

Environment Information

No response

pierophp commented 1 day ago

Ideally, it should authenticate to private NuGet feeds as Rider does:

https://www.jetbrains.com/help/rider/Using_NuGet.html#credential-providers-for-private-nuget-feeds

There is an open issue on Nuget:

https://github.com/NuGet/Home/issues/1851

But if Rider has worked around it, VS Code could, too.

That prevents me from using my Mac (I don't want to pay for Rider, since I have a Visual Studio subscription).

JonDouglas commented 1 day ago

Ideally, it should authenticate to private NuGet feeds as Rider does:

https://www.jetbrains.com/help/rider/Using_NuGet.html#credential-providers-for-private-nuget-feeds

There is an open issue on Nuget:

https://github.com/NuGet/Home/issues/1851

But if Rider has worked around it, VS Code could, too.

That prevents me from using my Mac (I don't want to pay for Rider, since I have a Visual Studio subscription).

There's a provider here.

https://github.com/microsoft/artifacts-credprovider

You should get a link to download it if you try to auth in VS Code with dev kit.

pierophp commented 1 day ago

Thank you, I'll give it a try.