PanoramicData.NugetManagement
1.0.7
dotnet add package PanoramicData.NugetManagement --version 1.0.7
NuGet\Install-Package PanoramicData.NugetManagement -Version 1.0.7
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PanoramicData.NugetManagement" Version="1.0.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PanoramicData.NugetManagement" Version="1.0.7" />
<PackageReference Include="PanoramicData.NugetManagement" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PanoramicData.NugetManagement --version 1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PanoramicData.NugetManagement, 1.0.7"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PanoramicData.NugetManagement@1.0.7
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PanoramicData.NugetManagement&version=1.0.7
#tool nuget:?package=PanoramicData.NugetManagement&version=1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PanoramicData.NugetManagement
Opinionated assessment of NuGet packages in a GitHub organization for best practices compliance.
Overview
PanoramicData.NugetManagement connects to a GitHub organization, examines each repository, and evaluates it against a comprehensive set of opinionated best practice rules covering:
- CI/CD — CI workflow structure, checkout depth, action versions
- Versioning — Nerdbank.GitVersioning, global.json SDK pinning
- Central Package Management — CPM enabled, no inline versions
- NuGet Hygiene — snupkg symbols, GeneratePackageOnBuild, PackageReadmeFile
- Target Framework — Latest .NET version
- Build Quality — TreatWarningsAsErrors, Nullable, ImplicitUsings
- Code Quality — .editorconfig, file-scoped namespaces, Codacy, CodeQL
- Testing — Test project existence, xUnit v3, coverlet
- Serialization — System.Text.Json preferred over Newtonsoft
- HTTP Clients — Refit preferred
- Licensing — MIT LICENSE, PackageLicenseExpression, Copyright
- README & Badges — Codacy, NuGet, License badges
- Repository Hygiene — .gitignore, NeutralResourcesLanguage
- Project Metadata — PackageId, RepositoryUrl, Authors, PackageIcon
- Community Health — SECURITY.md, CONTRIBUTING.md
- Dependency Automation — Dependabot or Renovate
Installation
dotnet add package PanoramicData.NugetManagement
Quick Start
using Octokit;
using Microsoft.Extensions.Logging;
using PanoramicData.NugetManagement.Models;
using PanoramicData.NugetManagement.Services;
// Create an authenticated GitHub client
var github = new GitHubClient(new ProductHeaderValue("MyApp"))
{
Credentials = new Credentials("your-github-token")
};
// Configure assessment options
var options = new AssessmentOptions
{
OrganizationName = "your-org",
RepositoryOptions = new Dictionary<string, RepoOptions>
{
["legacy-repo"] = new() { Exclude = true },
["web-app"] = new() { IsPackable = false }
}
};
// Run the assessment
using var loggerFactory = LoggerFactory.Create(b => b.AddConsole());
var assessor = new OrganizationAssessor(
github,
loggerFactory.CreateLogger<OrganizationAssessor>(),
loggerFactory.CreateLogger<RepositoryContextBuilder>());
var result = await assessor.AssessAsync(options);
// Report results
Console.WriteLine($"Organization: {result.OrganizationName}");
Console.WriteLine($"Repositories: {result.RepositoryCount}");
Console.WriteLine($"Compliant: {result.CompliantCount}");
Console.WriteLine($"Non-compliant: {result.NonCompliantCount}");
foreach (var repo in result.RepositoryAssessments)
{
Console.WriteLine($"\n{repo.RepositoryFullName}: {repo.PassedCount}/{repo.RuleResults.Count} passed");
foreach (var failure in repo.RuleResults.Where(r => !r.Passed))
{
Console.WriteLine($" [{failure.Severity}] {failure.RuleId}: {failure.Message}");
if (failure.Remediation is not null)
{
Console.WriteLine($" Fix: {failure.Remediation}");
}
}
}
Per-Repository Options
var repoOptions = new RepoOptions
{
Exclude = false, // Set true to skip entirely
IsPackable = true, // Set false for apps/tools (skips NuGet rules)
EnforceRequiredProperties = true, // Configurable 'required' keyword enforcement
SuppressedRules = ["HTTP-01"] // Suppress specific rules by ID
};
Available Rules
Use RuleRegistry.Rules to enumerate all discovered rules at runtime.
Contributing
See CONTRIBUTING.md.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Codacy.Api (>= 3.0.22)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
- NuGet.Protocol (>= 6.13.2)
- Octokit (>= 14.0.0)
- Refit (>= 10.1.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.7 | 31 | 3/31/2026 |
| 1.0.6-gac22da8522 | 31 | 3/31/2026 |