Fallout.Migrate.Analyzers 10.3.45

Prefix Reserved
dotnet add package Fallout.Migrate.Analyzers --version 10.3.45
                    
NuGet\Install-Package Fallout.Migrate.Analyzers -Version 10.3.45
                    
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.Migrate.Analyzers" Version="10.3.45">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Fallout.Migrate.Analyzers" Version="10.3.45" />
                    
Directory.Packages.props
<PackageReference Include="Fallout.Migrate.Analyzers">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
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.Migrate.Analyzers --version 10.3.45
                    
#r "nuget: Fallout.Migrate.Analyzers, 10.3.45"
                    
#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.Migrate.Analyzers@10.3.45
                    
#: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.Migrate.Analyzers&version=10.3.45
                    
Install as a Cake Addin
#tool nuget:?package=Fallout.Migrate.Analyzers&version=10.3.45
                    
Install as a Cake Tool

Fallout.Migrate.Analyzers

Roslyn analyzer + codefix that rewrites legacy Nuke.* references to Fallout.* in C# source. Install it temporarily while migrating; uninstall once you're done.

What it does

Emits a single diagnostic, FALLOUT004 (severity: Warning), at each of:

  • using Nuke.<X>; directives
  • using static Nuke.<X>.<Y>.<Type>; directives
  • Fully-qualified type references like Nuke.Common.AbsolutePath
  • Bare type names NukeBuild and INukeBuild

The codefix rewrites all of those to their Fallout.* equivalents in a single edit (Migrate to Fallout.*), including the type renames (NukeBuild → FalloutBuild, INukeBuild → IFalloutBuild). Fix all in Document / Project / Solution is supported.

How to use

dotnet add build/_build.csproj package Fallout.Migrate.Analyzers

Open your build project in an IDE that supports Roslyn analyzers (Visual Studio, Rider, VS Code with C# Dev Kit). Each FALLOUT004 site becomes a lightbulb / quick-fix; apply individually or Fix all in Solution.

When the diagnostic count drops to zero:

dotnet remove build/_build.csproj package Fallout.Migrate.Analyzers

What it does not do

  • It does not update PackageReference items in your _build.csproj — that's outside Roslyn's domain. Once the source is migrated, swap Nuke.Common for Fallout.Common (and friends) in your project file by hand.
  • It does not touch bootstrap scripts (build.ps1, build.sh, build.cmd). Those keep their names.
  • It does not fire on pure-NUKE projects (no Fallout.* reference present). The diagnostic is guarded by Compilation.ReferencedAssemblyNames — you have to be partway into the migration before warnings appear.

Alternative: bulk rewrite via CLI

If you want to migrate an entire repo in one shot from the command line, use the fallout-migrate global tool instead. It does the same rewrites plus updates PackageReferences and bootstrap scripts.

Deprecation

This package will be removed alongside the Nuke.Common transition shim. Track the shim's deprecation timeline in docs/rebrand-plan.md. Plan: ship through the 11.x line, remove in 12.0.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

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
10.3.45 0 5/27/2026
10.3.44 0 5/27/2026
10.3.42 0 5/27/2026
10.3.41 0 5/27/2026
10.3.40 0 5/27/2026
10.3.38 0 5/26/2026
10.3.37 0 5/26/2026
10.3.36 0 5/26/2026
10.3.29 49 5/25/2026
10.3.28 41 5/25/2026
10.3.27 45 5/25/2026
10.3.26 50 5/25/2026
10.3.25 47 5/25/2026
10.3.24 45 5/25/2026
10.3.23 45 5/24/2026
10.3.22 44 5/24/2026
10.3.21 46 5/24/2026
10.3.20 44 5/24/2026
10.3.19 44 5/24/2026
10.3.18 45 5/24/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