Extract NuGetManager base class with dependency resolution support #31
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR extracts a reusable
NuGetManagerbase class fromNuGetDiff, enabling package management functionality to be used independently without requiring API diffing capabilities.Changes
New
NuGetManagerBase ClassCreated a new base class containing core NuGet package management functionality:
OpenPackageAsync- Opens and downloads NuGet packages from remote sourcesExtractPackageToDirectoryAsync- Extracts packages to a specified directoryExtractCachedPackageAsync- Extracts packages to a cache directory with deduplicationGetCachedPackagePath- Returns the file path for cached packagesGetCachedPackageDirectory- Returns the directory path for cached packagesDependency Resolution
Added new overloads with an
includeDependenciesparameter to extraction methods:When
includeDependenciesistrue, the manager recursively downloads and extracts all package dependencies, making it easier to prepare complete package environments.Refactored
NuGetDiffNuGetManagerUsage Examples
The new base class can be used independently:
And
NuGetDiffretains all functionality:Testing
NuGetManagerfunctionalityBenefits
Fixes the feature request to extract reusable NuGet management functionality into a base class.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
aka.msdotnet build Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.csproj(dns block)dotnet test Mono.ApiTools.NuGetDiff.Tests/Mono.ApiTools.NuGetDiff.Tests.csproj --logger console;verbosity=minimal(dns block)www.nuget.org/usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/Mono.ApiTools.NuGetDiff.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/Mono.ApiTools.NuGetDiff.Tests.deps.json /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/testhost.dll --port 46645 --endpoint 127.0.0.1:046645 --role client --parentprocessid 3879 --telemetryoptedin false(dns block)/usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/Mono.ApiTools.NuGetDiff.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/Mono.ApiTools.NuGetDiff.Tests.deps.json /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/testhost.dll --port 33309 --endpoint 127.0.0.1:033309 --role client --parentprocessid 4344 --telemetryoptedin false(dns block)/usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/Mono.ApiTools.NuGetDiff.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/Mono.ApiTools.NuGetDiff.Tests.deps.json /home/REDACTED/work/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff/Mono.ApiTools.NuGetDiff.Tests/bin/Debug/net8.0/testhost.dll --port 46211 --endpoint 127.0.0.1:046211 --role client --parentprocessid 4676 --telemetryoptedin false(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.