Net4x.Project2015To2017.Migrate2019.Library
4.2.0.26262
dotnet add package Net4x.Project2015To2017.Migrate2019.Library --version 4.2.0.26262
NuGet\Install-Package Net4x.Project2015To2017.Migrate2019.Library -Version 4.2.0.26262
<PackageReference Include="Net4x.Project2015To2017.Migrate2019.Library" Version="4.2.0.26262" />
<PackageVersion Include="Net4x.Project2015To2017.Migrate2019.Library" Version="4.2.0.26262" />
<PackageReference Include="Net4x.Project2015To2017.Migrate2019.Library" />
paket add Net4x.Project2015To2017.Migrate2019.Library --version 4.2.0.26262
#r "nuget: Net4x.Project2015To2017.Migrate2019.Library, 4.2.0.26262"
#:package Net4x.Project2015To2017.Migrate2019.Library@4.2.0.26262
#addin nuget:?package=Net4x.Project2015To2017.Migrate2019.Library&version=4.2.0.26262
#tool nuget:?package=Net4x.Project2015To2017.Migrate2019.Library&version=4.2.0.26262
Net4x.Project2015To2017.Migrate2019.Library
VS2019 (VS16) transformation and diagnostic sets for CsprojToVs2017 — the tool that converts legacy (VS2015-era) MSBuild project files to the modern SDK-style format.
This is the recommended library package. It layers VS2019-era behaviour on top of
Net4x.Project2015To2017.Migrate2017.Library, most notably proper SDK selection for desktop and
mobile projects.
Installation
dotnet add package Net4x.Project2015To2017.Migrate2019.Library
Target frameworks: netstandard2.0, net461
Usage
using Project2015To2017;
using Project2015To2017.Analysis;
using Project2015To2017.Migrate2019.Library;
using Project2015To2017.Writing;
using Serilog;
using Serilog.Extensions.Logging;
var serilog = new LoggerConfiguration()
.Enrich.FromLogContext()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
var logger = new SerilogLoggerProvider(serilog).CreateLogger(nameof(Serilog));
var facility = new MigrationFacility(logger);
facility.ExecuteMigrate(
new[] { @"C:\full-path-to-solution-or-project-file.sln" },
Vs16TransformationSet.Instance, // the default set of project file transformations
// The rest are optional and fall back to sane defaults
new ConversionOptions(), // target frameworks, AssemblyInfo treatment
new ProjectWriteOptions(), // backup creation and custom source control logic
new AnalysisOptions(Vs16DiagnosticSet.All));
Transformation sets
| Set | Contents |
|---|---|
Vs16TransformationSet.Instance |
The full migration pipeline: reading, generic simplification for VS 16.0, then the VS16 transformations. Pass this to ExecuteMigrate. |
Vs16TransformationSet.TrueInstance |
Only the VS16-specific transformations, for composing your own chain. |
Vs16ModernizationTransformationSet.Instance |
Cleanups for projects that are already SDK-style; currently the VS15 modernization transformations, chained. |
Vs16TransformationSet.TargetVisualStudioVersion is 16.0.
What VS16 changes over VS15
Vs16FrameworkReferencesTransformation replaces the VS15 FrameworkReferencesTransformation. It
picks the right project SDK instead of stuffing everything into Microsoft.NET.Sdk:
- WPF and Windows Forms projects get
Microsoft.NET.Sdk.WindowsDesktopwithUseWPF/UseWindowsForms - Xamarin.Android, Xamarin.iOS and UAP projects (detected by project type GUID) get
MSBuild.Sdk.Extrasand the corresponding target framework
Everything else — the assembly reference filters, FileTransformation, XamlPagesTransformation,
TestProjectPackageReferenceTransformation, BrokenHookTargetsTransformation — is inherited from the
VS15 set.
Diagnostics
Vs16DiagnosticSet.All is currently the whole of Vs15DiagnosticSet.All: the core diagnostics
(W001, W002, W010, W011) plus W020–W021 and W030–W034. See the
Net4x.Project2015To2017.Migrate2017.Library readme for the table.
Custom transformations
var customTransforms = new BasicTransformationSet(
// Implement ITransformationWithTargetMoment to run before or after
// the majority of standard transforms; implement ITransformationWithDependencies
// to always run after a specific other transformation.
new MyCustomPreTransform(),
new MyCustomPostTransform());
// The correct order is resolved from the dependency graph within each
// execution moment (early, normal, late).
var resultTransforms = new ChainTransformationSet(
Vs16TransformationSet.Instance,
customTransforms);
facility.ExecuteMigrate(new[] { @"C:\path\to\Solution.sln" }, resultTransforms);
Related packages
Net4x.Project2015To2017.Core— project model, readers, writer, transformation and analysis engineNet4x.Project2015To2017.Base—MigrationFacility, the high-level orchestration entry pointNet4x.Project2015To2017.Migrate2017.Library— VS2017 (VS15) sets, which this package builds onNet4x.Project2015To2017.Migrate2019.Tool—dotnet migrate-2019global toolNet4x.Project2015To2017.Mcp.Server— MCP server exposing migration to AI agents
License
MIT. Copyright Hans van Bakel. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.1
- Net4x.Project2015To2017.Core (>= 4.2.0.26262)
- Net4x.Project2015To2017.Migrate2017.Library (>= 4.2.0.26262)
-
.NETStandard 2.0
- Net4x.Project2015To2017.Core (>= 4.2.0.26262)
- Net4x.Project2015To2017.Migrate2017.Library (>= 4.2.0.26262)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Net4x.Project2015To2017.Migrate2019.Library:
| Package | Downloads |
|---|---|
|
Net4x.Project2015To2017.Migrate2019.Tool
Tool for converting a MSBuild project file to VS2017 format and beyond. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.2.0.26262 | 175 | 9/19/2026 |