Skip to content

Commit 3906837

Browse files
Add note for .NET tool dependencies (#10020) (#10736)
* Add note for .NET tool dependencies (#10020) * Update message wording based on PR feedback
1 parent 297dbcf commit 3906837

3 files changed

Lines changed: 22 additions & 6 deletions

File tree

src/NuGetGallery/Helpers/ViewModelExtensions/DisplayPackageViewModelFactory.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ private DisplayPackageViewModel SetupInternal(
7474
{
7575
var dependencies = package.Dependencies.ToList();
7676

77-
viewModel.Dependencies = new DependencySetsViewModel(dependencies);
77+
// Check if the package is a .NET Tool to pass to the DependencySetsViewModel
78+
var isDotnetTool = package.PackageTypes.Any(e => e.Name.Equals("DotnetTool", StringComparison.OrdinalIgnoreCase));
79+
80+
viewModel.Dependencies = new DependencySetsViewModel(dependencies, isDotnetTool);
7881

7982
var packageHistory = allVersions
8083
.OrderByDescending(p => new NuGetVersion(p.Version))
@@ -108,7 +111,7 @@ private DisplayPackageViewModel SetupInternal(
108111
viewModel.DownloadsPerDayLabel = viewModel.DownloadsPerDay < 1 ? "<1" : viewModel.DownloadsPerDay.ToNuGetNumberString();
109112

110113
// Lazily load the package types from the database.
111-
viewModel.IsDotnetToolPackageType = package.PackageTypes.Any(e => e.Name.Equals("DotnetTool", StringComparison.OrdinalIgnoreCase));
114+
viewModel.IsDotnetToolPackageType = isDotnetTool;
112115
viewModel.IsDotnetNewTemplatePackageType = package.PackageTypes.Any(e => e.Name.Equals("Template", StringComparison.OrdinalIgnoreCase));
113116
viewModel.IsMSBuildSdkPackageType = package.PackageTypes.Any(e => e.Name.Equals("MSBuildSdk", StringComparison.OrdinalIgnoreCase));
114117
viewModel.IsMcpServerPackageType = package.PackageTypes.Any(e => e.Name.Equals(McpHelper.McpServerPackageTypeName, StringComparison.OrdinalIgnoreCase));

src/NuGetGallery/ViewModels/DependencySetsViewModel.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ namespace NuGetGallery
1414
{
1515
public class DependencySetsViewModel
1616
{
17-
public DependencySetsViewModel(IEnumerable<PackageDependency> packageDependencies)
17+
public DependencySetsViewModel(IEnumerable<PackageDependency> packageDependencies, bool isDotnetTool = false)
1818
{
19+
IsDotnetTool = isDotnetTool;
20+
1921
try
2022
{
2123
DependencySets = new Dictionary<string, IEnumerable<DependencyViewModel>>();
@@ -50,6 +52,7 @@ public DependencySetsViewModel(IEnumerable<PackageDependency> packageDependencie
5052

5153
public IDictionary<string, IEnumerable<DependencyViewModel>> DependencySets { get; private set; }
5254
public bool OnlyHasAllFrameworks { get; private set; }
55+
public bool IsDotnetTool { get; private set; }
5356

5457
public class DependencyViewModel
5558
{
@@ -73,4 +76,4 @@ public DependencyViewModel(string id, string versionSpec)
7376
public string PackageUrl { get; private set; }
7477
}
7578
}
76-
}
79+
}

src/NuGetGallery/Views/Packages/_PackageDependencies.cshtml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
{
1414
dependencySetTitle = "Portable Class Library";
1515
}
16-
16+
1717
<li>
1818
@if (!Model.OnlyHasAllFrameworks)
1919
{
@@ -41,5 +41,15 @@
4141
}
4242
else
4343
{
44-
<p>This package has no dependencies.</p>
44+
if (Model.IsDotnetTool)
45+
{
46+
<p>
47+
.NET tools have dependencies embedded in the package.
48+
Join the <a href="https://github.com/NuGet/NuGetGallery/issues/10020">discussion</a> on improving this experience.
49+
</p>
50+
}
51+
else
52+
{
53+
<p>This package has no dependencies.</p>
54+
}
4555
}

0 commit comments

Comments
 (0)