Net4x.Project2015To2017.Base 4.2.0.26262

dotnet add package Net4x.Project2015To2017.Base --version 4.2.0.26262
                    
NuGet\Install-Package Net4x.Project2015To2017.Base -Version 4.2.0.26262
                    
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="Net4x.Project2015To2017.Base" Version="4.2.0.26262" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Net4x.Project2015To2017.Base" Version="4.2.0.26262" />
                    
Directory.Packages.props
<PackageReference Include="Net4x.Project2015To2017.Base" />
                    
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 Net4x.Project2015To2017.Base --version 4.2.0.26262
                    
#r "nuget: Net4x.Project2015To2017.Base, 4.2.0.26262"
                    
#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 Net4x.Project2015To2017.Base@4.2.0.26262
                    
#: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=Net4x.Project2015To2017.Base&version=4.2.0.26262
                    
Install as a Cake Addin
#tool nuget:?package=Net4x.Project2015To2017.Base&version=4.2.0.26262
                    
Install as a Cake Tool

Net4x.Project2015To2017.Base

High-level entry point for CsprojToVs2017 — the tool that converts legacy (VS2015-era) MSBuild project files to the modern SDK-style format.

This package provides MigrationFacility, the façade that ties together file discovery, project and solution parsing, transformation and analysis. It is what the dotnet migrate-2017 / dotnet migrate-2019 global tools and the MCP server are built on, and it is the package to use when you want to drive migration from your own code.

Installation

dotnet add package Net4x.Project2015To2017.Base

Target frameworks: netstandard2.0, net461

This package brings Net4x.Project2015To2017.Core with it and bundles the VS2017 (VS15) diagnostic set, which it uses as the fallback when you do not supply your own AnalysisOptions. To migrate to VS2019 conventions, also add Net4x.Project2015To2017.Migrate2019.Library.

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();

// MigrationFacility takes a Microsoft.Extensions.Logging.ILogger;
// any logging provider will do.
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
    new ConversionOptions(),          // target frameworks, AssemblyInfo treatment, force flags
    new ProjectWriteOptions(),        // backup creation and custom source control logic
    new AnalysisOptions());           // diagnostics to run after migration

Only the first two arguments are required; the option objects fall back to sane defaults.

API

MigrationFacility

Member Purpose
ExecuteMigrate(items, transformations, …) Parse, transform and write the projects. This is the destructive operation; ProjectWriteOptions controls backups.
ExecuteEvaluate(items, …) Dry run — report what migration would produce, plus diagnostics, without writing anything.
ExecuteAnalyze(items, conversionOptions, analysisOptions) Run diagnostics only, no conversion.
ParseProjects(items, transformationSet, conversionOptions) Returns the parsed Project and Solution objects for your own processing.
DoAnalysis(projects, options) Run the analyzer over already-parsed projects.
DoProcessableFileSearch(force) Populate Files by globbing the current working directory for convertible files.

items accepts project files, solution files (.sln, .slnx), directories, and glob patterns such as **\*.

Path resolution and PatternProcessor

Each item passed in is resolved by a chain of PatternProcessor delegates: a file processor, then a directory processor (which auto-discovers the single convertible file in a directory and warns when the choice is ambiguous), then anything you supply:

var facility = new MigrationFacility(logger, myCustomPatternProcessor);

Directory and glob resolution is relative to the current working directory, so prefer absolute paths when calling this from a host process.

ProjectConverterExtensions

ProjectConverter.Convert(string target, ILogger logger = default) — a lower-level extension for converting a single target when you do not need the facility's discovery and reporting.

  • Net4x.Project2015To2017.Core — project model, readers, writer, transformation and analysis engine
  • Net4x.Project2015To2017.Migrate2017.Library — VS2017 (VS15) transformation and diagnostic sets
  • Net4x.Project2015To2017.Migrate2019.Library — VS2019 (VS16) transformation and diagnostic sets
  • Net4x.Project2015To2017.Migrate2019.Tool — dotnet migrate-2019 global tool
  • Net4x.Project2015To2017.Mcp.Server — MCP server exposing migration to AI agents

License

MIT. Copyright Hans van Bakel. See LICENSE.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Net4x.Project2015To2017.Base:

Package Downloads
Net4x.Project2015To2017.Migrate2019.Tool

Tool for converting a MSBuild project file to VS2017 format and beyond.

Net4x.Project2015To2017.Migrate2017.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 196 9/19/2026