Skip to content

Support RID-specific .NET Tool packages #48575

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

Draft
wants to merge 30 commits into
base: main
Choose a base branch
from

Conversation

dsplaisted
Copy link
Member

Work in progress, currently supports RID-specific packages for global tools.

Create a new abstract base class called ToolPackageDownloaderBase.  Refactor #ToolPackageDownloader  to derive from ToolPackageDownloaderBase, and move the implementation into the base class.
Refactor the creation of the NuGetPackageDownloader  instance into an abstract method named CreateNuGetPackageDownloader in ToolPackageDownloaderBase   , and move the implementation into  ToolPackageDownloader
Refactor #method:'Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloaderBase.CreateNuGetPackageDownloader':2769-3057 and the calls to it to remove method parameters:

The packageInstallDir can always be a default DirectoryPath.  It doesn't need to differ based on whether a tool is global or local.

The creation of the ILogger can be moved into the implementation of the method.  Instead of passing an ILogger parameter, a verbosity parameter can be passed.
Remove the packageInstallDir variable in #method:'Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloader.CreateNuGetPackageDownloader':1156-2039 .
Refactor #method:'Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloaderBase.CreateNuGetPackageDownloader':2769-2983 to return #interface:'Microsoft.DotNet.Cli.NuGetPackageDownloader.INuGetPackageDownloader':348-1612 .  The implementation in #class:'Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloader':832-1978 will also need to be updated.
…tion

Copilot couldn't handle this apparently, it was trying to delete a bunch of extra code.
dsplaisted added 3 commits May 1, 2025 16:38
New version uses the base class which is factored so that the mock doesn't have to reimplement a bunch of product logic
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Tools untriaged Request triage from a team member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant