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
<PackageReference Include="Fallout.Migrate.Analyzers" Version="10.3.45"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="Fallout.Migrate.Analyzers" Version="10.3.45" />
<PackageReference Include="Fallout.Migrate.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add Fallout.Migrate.Analyzers --version 10.3.45
#r "nuget: Fallout.Migrate.Analyzers, 10.3.45"
#:package Fallout.Migrate.Analyzers@10.3.45
#addin nuget:?package=Fallout.Migrate.Analyzers&version=10.3.45
#tool nuget:?package=Fallout.Migrate.Analyzers&version=10.3.45
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>;directivesusing static Nuke.<X>.<Y>.<Type>;directives- Fully-qualified type references like
Nuke.Common.AbsolutePath - Bare type names
NukeBuildandINukeBuild
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
PackageReferenceitems in your_build.csproj— that's outside Roslyn's domain. Once the source is migrated, swapNuke.CommonforFallout.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 byCompilation.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.
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 |
### 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