Fallout.Common 11.0.1

Prefix Reserved
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Fallout.Common --version 11.0.1
                    
NuGet\Install-Package Fallout.Common -Version 11.0.1
                    
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="Fallout.Common" Version="11.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Fallout.Common" Version="11.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Fallout.Common" />
                    
Project file
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 Fallout.Common --version 11.0.1
                    
#r "nuget: Fallout.Common, 11.0.1"
                    
#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 Fallout.Common@11.0.1
                    
#: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=Fallout.Common&version=11.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Fallout.Common&version=11.0.1
                    
Install as a Cake Tool

<p align="center"> <img width="320" src=".assets/fallout-logo.svg" alt="Fallout β€” .NET build system" /> </p>

<p align="center"> <strong>πŸ“– Documentation: <a href="https://docs.fallout.build/">docs.fallout.build</a></strong> </p>

πŸ“¦ Fallout is the successor to NUKE. Migrating from NUKE β†’

Fallout

Build automation for C#/.NET β€” the hard-fork successor to NUKE.

Docs CI NuGet NuGet downloads Latest release GitHub last commit .NET 10 License: MIT Open issues Open PRs GitHub Sponsors

Rebrand in progress + v11/v12 roadmap published. This repository is being renamed from NUKE to Fallout as part of a hard fork. URLs, package names, and namespaces are migrating in stages.

What's next: v11 finishes the rebrand and lays the internal foundation for a plugin architecture; v12 ships the public Fallout.Plugin.Sdk. The full plan is in docs/roadmap.md. Five RFCs are open now to shape the SDK β€” your input matters most before v12 firms up.

Track v11 in milestone #6 and v12 in milestone #7.

Based on NUKE

Fallout is the successor to NUKE, originally created by Matthias Koch (@matkoch) and many contributors. Fallout continues NUKE's mission as a C#-first build automation framework for .NET β€” under new maintenance, with an enterprise-CI/CD focus.

The original NUKE code is preserved here under the MIT License with attribution. Major version 10.x was the last NUKE release; everything from this fork forward carries the Fallout identity.

Migrating from NUKE

If you maintain a NUKE-based build, docs/migration/from-nuke.md walks you through it. The short version:

dotnet tool install -g Fallout.Migrate
cd path/to/your-nuke-repo
fallout-migrate

Install

dotnet tool install -g Fallout.Cli

The CLI installs as fallout. Verify with fallout --help.

Upgrading from Fallout.GlobalTool? The package was renamed to Fallout.Cli for install ergonomics β€” same fallout command, friendlier ID. Uninstall the old one first so you don't end up with two tools claiming the same command:

dotnet tool uninstall -g Fallout.GlobalTool

For per-repo manifest pinning (.config/dotnet-tools.json), project setup, and shell completion, see the Installation guide on docs.fallout.build.

Table of Contents

Elevator Pitch

Solid and scalable CI/CD pipelines are an essential pillar for being competitive and creating a great product. But why are most of us a little afraid of touching YAML files and don't even dare to look at build scripts? Much of this is because C# developers are spoiled with a great language and smart IDEs, and they don't like missing their buddy for code-completion, ease of debugging, refactorings, and code formatting.

Fallout (NUKE's successor) brings your build automation to an even level with every other .NET project. How? It's a regular console application allowing all the OOP goodness! Besides, it solves many common problems in build automation, like parameter injection, path separator abstraction, access to solution and project models, and build step sharing across repositories. Fallout can also generate CI/CD configurations (YAML, etc.) that automatically parallelize build steps on multiple agents to optimize throughput!

Build Status

CI runs on every push to non-main branches and every PR targeting main across ubuntu-latest (with windows-latest and macos-latest as post-merge validation). Releases publish from main to nuget.org under the reserved Fallout.* prefix, via .github/workflows/release.yml. Docs-only pushes (docs/**, .assets/**, **/*.md) skip the release workflow.

Build Server Status Platform Configuration
GitHub Actions GitHub Actions Win / Ubuntu / macOS .github/workflows/

Multi-provider CI support (Azure Pipelines, GitLab, TeamCity, AppVeyor) was removed during the takeover and is being revived demand-driven β€” see #8.

Activity

Repobeats analytics image

Generated by Repobeats β€” 30-day rolling view of commits, issues, PRs, and contributor activity.

Sponsorship

Fallout is volunteer-run. There's no donation channel yet, but we want to be transparent about what running the project costs β€” see costs.md for the full list. If you or your organisation would like to help offset those costs, open an issue and we'll work out the details.

Credits

If you maintained or contributed to NUKE and want to be credited differently here, please open an issue.

Product 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.

NuGet packages (11)

Showing the top 5 NuGet packages that depend on Fallout.Common:

Package Downloads
Fallout.Components

Build automation for C#/.NET β€” the hard-fork successor to NUKE.

Candoumbe.Pipelines

A Stater development kit to script your CI/CD using [Nuke](https://nuke.build).

DotCov.Fallout

Fallout build component that merges Cobertura reports, writes a job summary, and fails the build below your line and branch coverage thresholds. Add ICoverageReport and go.

StageKit.Fallout

Reusable .NET build pipeline for self-contained publishing, runtime manifests, portable archives, installers, macOS bundles, and Linux distribution packages.

Candoumbe.Pipelines.Components.AzureDevOps

Set of [Nuke](https://nuke.build) components that help integrating with [Azure DevOps](https://dev.azure.com/) ecosystem..

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Fallout.Common:

Repository Stars
Fallout-build/Fallout
☒️ Fallout β€” The C#/.NET Build System
Version Downloads Last Updated
10.5.0-rc.3 130 10/23/2026
10.4.0 143,409 8/7/2026
10.4.0-rc.5 150 7/29/2026
10.4.0-rc.4 284 7/26/2026
10.3.49 38,949 5/29/2026
Loading failed

### Breaking changes
β€’ **Last-mile Newtonsoft removal β€” closes the #83 migration tree*β€’ (#119 STJ-6, #115 STJ-2 tail). Every Fallout source file is STJ-native; Newtonsoft.Json.dll survives in the closure only as a transitive of NuGet.Packaging and Serilog.Formatting.Compact.Reader. The Newtonsoft.Json PackageVersion is gone from Directory.Packages.props entirely.
 β€’ **GitHubActions.GitHubEvent is now JsonObject*β€’ (was Newtonsoft JObject). Consumers that introspect the event payload need to swap using Newtonsoft.Json.Linq β†’ using System.Text.Json.Nodes and update accessors ([key].Value<T>() β†’ [key].GetValue<T>(), Property(name) β†’ indexer, etc.).
 β€’ **Fallout.Utilities.Net HttpRequestExtensions.WithJsonContent / HttpResponseExtensions.GetBodyAsJson defaults are STJ.*β€’ The [Obsolete]-marked Newtonsoft overloads (JsonSerializerSettings parameter, JObject return) are gone. JsonSerializerOptions overloads remain for explicit configuration; the parameterless default uses STJ with default options. GetBodyAsJsonObject returns System.Text.Json.Nodes.JsonObject.
 β€’ **SlackMessageActionButton.Type / TeamsMessage.Type / TeamsMessage.Context**: hand-written [JsonProperty(...)] attributes swapped to [JsonPropertyName(...)]. Consumer impact only if you subclass these types and added [JsonProperty]-style attributes β€” switch to [JsonPropertyName].
 β€’ **TwitterTasks**: internal error-parsing path swapped from JObject.Parse to JsonNode.Parse. No public-API change.
 β€’ **ArgumentsFromParametersFileAttribute*β€’ (#115 STJ-2 tail): parameters.json reading swapped from JObject to JsonObject. Behaviour identical for valid input; STJ may be slightly stricter about malformed JSON.
β€’ **SchemaUtility rewritten on System.Text.Json β€” NJsonSchema gone*β€’ (#114, STJ-1 of #83). The build-parameter schema generator (which emits .fallout/build.schema.json for editor autocomplete) no longer goes through NJsonSchema. It now hand-rolls the draft-04 schema using JsonNode/JsonObject directly β€” same output shape, no Rico-entanglement.
 β€’ **Dropped packages**: NJsonSchema, NJsonSchema.NewtonsoftJson, NJsonSchema.Annotations, Namotion.Reflection β€” four packages and ~12 transitive dependencies gone from Fallout.Build. Newtonsoft.Json stays in the closure only via Fallout.Common's *Tasks.cs (Slack/Twitter/Teams) until #119 lands.
 β€’ **API**: SchemaUtility.GetJsonString(IFalloutBuild) and GetJsonDocument(IFalloutBuild) unchanged for consumers.
 β€’ **Behavior preserved**: well-known definitions in canonical order (Host, ExecutableTarget, Verbosity, FalloutBuild), allOf:[user, base] envelope, [CustomParameter] subclasses render as plain string (not recursive), value-type Nullable<T> β†’ [T, null], reference-type nullables β†’ [null, T] for primitives / oneOf [null, $ref] for refs, [TypeConverter]-attributed types (AbsolutePath, Solution, etc.) render as string.
β€’ **Fallout.Tooling engine migrated to System.Text.Json*β€’ (#117 STJ-4, #118 STJ-5). The tool-options ↔ JSON layer that powers every tool wrapper is now STJ-native:
 β€’ Options.InternalOptions is now System.Text.Json.Nodes.JsonObject (was Newtonsoft JObject). Options.JsonSerializer and Options.JsonSerializerSettings are gone β€” use Options.SerializerOptions (JsonSerializerOptions) instead.
 β€’ The Optionsβ†’InternalOptions converter is now a JsonConverterFactory registered on SerializerOptions.Converters (STJ doesn't inherit class-level [JsonConverter] attributes onto subclasses). LookupTable<,> round-trips through a parallel ObjectFromFieldConverter factory; Enumeration subclasses go through a new EnumerationJsonConverterFactory that bridges [TypeConverter]-attributed types (which STJ doesn't honour natively).
 β€’ All 62 generated tool wrappers regenerated with [JsonPropertyName] instead of [JsonProperty] (#118). The generator's own JSON model (Fallout.Tooling.Generator) is migrated too β€” Tool / Property / DataClass / Enumeration / Task use [JsonRequired] / [JsonPropertyName] / [JsonIgnore] from System.Text.Json.Serialization.
 β€’ IReadOnlyDictionary<string, object> round-trips deserialize values as JsonElement (not string as Newtonsoft did); DelegateHelper.ParseCollection coerces both shapes back to string.
 β€’ **Newtonsoft.Json PackageReference removed*β€’ from Fallout.Tooling, Fallout.Tooling.Generator, and Fallout.Utilities.Text.Json. Object.ToJObject deleted (closes the residual #116 tail). Fallout.Common still references Newtonsoft for *Tasks.cs files until #119 (STJ-6) lands.
 β€’ Migration for consumers: replace Options.JsonSerializerSettings β†’ Options.SerializerOptions; replace obj.ToJObject(serializer) β†’ JsonSerializer.SerializeToNode(obj, Options.SerializerOptions).AsObject(); tool wrappers using hand-written [JsonProperty] (e.g. SlackMessage.Type) need to switch to [JsonPropertyName].
β€’ **Fallout.Utilities.Text.Json Newtonsoft surface removed*β€’ (#116, STJ-3 of #83). The [Obsolete]-marked Newtonsoft.Json overloads added in 10.3.x are gone:
 β€’ **Deleted types:*β€’ JObjectExtensions (GetChildren/GetPropertyValue/GetPropertyStringValue/GetPropertyValueOrNull on JObject), AllWritableContractResolver, Base64JsonConverter<T>, Object.ToJObject.
 β€’ **JsonExtensions stripped to System.Text.Json only**: DefaultSerializerSettings removed (use DefaultSerializerOptions); the JsonSerializerSettings-taking overloads of ToJson / GetJson / ReadJson / WriteJson / UpdateJson and the JObject-returning GetJson/ReadJson/UpdateJson(Action<JObject>) are gone. Equivalent STJ surface: same method names taking JsonSerializerOptions (now defaulted to DefaultSerializerOptions when omitted), plus GetJsonObject / ReadJsonObject / UpdateJsonObject(Action<JsonObject>) for JsonNode-based access.
 β€’ **Migration**: replace obj.ToJson(settings) with obj.ToJson(JsonExtensions.DefaultSerializerOptions) (or pass your own JsonSerializerOptions); replace content.GetJson<JObject>() with content.GetJsonObject(); replace JObject.GetPropertyValue<T>(name) with JsonObject.GetPropertyValue<T>(name) (same method name, different receiver type via using System.Text.Json.Nodes).
β€’ **Fixed Fallout.SolutionModel 10.2.24–10.2.34 unrestorable*β€’ (#107): the vendored SolutionPersistence wrapper was IsPackable=false, so dotnet pack fell back to emitting the dependency under the *assemblyβ€’ name (Microsoft.VisualStudio.SolutionPersistence) at the Fallout version β€” which doesn't exist on nuget.org. Wrapper now packs as Fallout.VisualStudio.SolutionPersistence (PackageId set explicitly; AssemblyName preserved for drop-in type identity), so Fallout.SolutionModel.nuspec declares the correct transitive dep. Also affected Fallout.Common, Fallout.Build, Fallout.ProjectModel, Fallout.Components β€” all fixed.
β€’ **--skip-duplicate on the publish push*β€’ (#108): release.yml's IPublish.PushSettings now enables skip-duplicate, so a partial publish failure (e.g. one package's API key permission gap) no longer makes reruns error on the already-uploaded versions. Pipeline is idempotent.
β€’ **Fixed build.ps1 bootstrap on PowerShell 7.5+*β€’ (#15): the script now uses Join-Path for SDK resolution so newer PowerShell's stricter path handling doesn't break the launcher.
β€’ **Fixed solution folder names starting with digits*β€’ (#16): StronglyTypedSolutionGenerator prefixes a leading underscore when the folder name would produce an invalid C# identifier.
β€’ **Retired GitVersion.Tool*β€’ (#81) β€” version is now sourced exclusively from Nerdbank.GitVersioning via version.json. MajorMinorPatchVersion and friends in Build.cs read NB.GV's $(Version) MSBuild output.
β€’ **Trimmed unused / replaceable dependencies*β€’ (#75, #78, #79, #80, #82): dropped JetBrains.ReSharper.GlobalTools, the matkoch Spectre.Console fork (swapped for upstream Spectre.Console), Microsoft.ApplicationInsights, Codecov.Tool, and xunit.runner.console. See docs/dependencies.md for the current graph.
β€’ **Bumped Scriban 7.1.0 β†’ 7.2.0*β€’ (#84) to clear NU1903.

Full changelog at https://github.com/ChrisonSimtian/Fallout/blob/main/CHANGELOG.md