Skip to main content
net10.0

Fluent builders and recipes for dotnet CLI commands (pack, nuget push, package search).

Published
Apr 5, 2026
6mo ago
Total Downloads
1.7K
1,706

Install

dotnet add package FileBasedApp.Toolkit.Dotnet --version 0.18.0-rc-01
ProductVersions
.NET
net10.0

README

FilebasedApp.Toolkit.Dotnet

Fluent builders and recipes for common dotnet CLI commands.

Features

  • DotnetBaseRunner<TSelf> — abstract base class providing shared --configuration and --verbosity options
  • DotnetPackSimpleRunner — fluent wrapper around dotnet pack with options for output directory, symbols, versioning, runtime, and more
  • DotnetNugetPushSimpleRunner — fluent wrapper around dotnet nuget push with options for source, API key, skip-duplicate, timeout, and more
  • DotnetRecipes — higher-level helpers that compose dotnet CLI commands into common workflows
  • PackageRequest / SearchResult / Package — records for deserializing dotnet package search --format json output
  • PackageRequestExtension — helpers for flattening and querying package search results

Examples

Packing a project

using FilebasedApp.Toolkit.Dotnet;
using TruePath;

var output = AbsolutePath.Create("/artifacts");

await DotnetPackSimpleRunner.Init()
    .WithProject(AbsolutePath.Create("/src/MyProject.csproj"))
    .WithConfiguration("Release")
    .WithOutput(output)
    .WithVersionSuffix("beta-01")
    .RunAsync();

Pushing a NuGet package

using FilebasedApp.Toolkit.Dotnet;
using TruePath;

await DotnetNugetPushSimpleRunner.Init()
    .WithPackage(AbsolutePath.Create("/artifacts/MyPackage.1.0.0.nupkg"))
    .WithSource("https://api.nuget.org/v3/index.json")
    .WithApiKey(apiKey)
    .WithSkipDuplicate()
    .RunAsync();

Searching for a NuGet package

using FilebasedApp.Toolkit.Dotnet;

var result = await DotnetRecipes.GetPackageInformation("Newtonsoft.Json", includePrerelease: false);

// Get the highest version of a specific package
var package = result.GetHighestVersion("Newtonsoft.Json");
Console.WriteLine($"{package.Id} {package.LatestVersion}");

// Flatten all packages across all sources
foreach (var (sourceName, pkg) in result.FlattenedPackages)
{
    Console.WriteLine($"[{sourceName}] {pkg.Id} {pkg.LatestVersion}");
}

Bugs or things missing

Feel free to create an issue or submit a pull request.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

This version is marked prerelease. Validate its API and upgrade path before production use.Compatibility metadata lists 1 target framework; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.