Net4x.Project2015To2017.Core
4.2.0.26262
dotnet add package Net4x.Project2015To2017.Core --version 4.2.0.26262
NuGet\Install-Package Net4x.Project2015To2017.Core -Version 4.2.0.26262
<PackageReference Include="Net4x.Project2015To2017.Core" Version="4.2.0.26262" />
<PackageVersion Include="Net4x.Project2015To2017.Core" Version="4.2.0.26262" />
<PackageReference Include="Net4x.Project2015To2017.Core" />
paket add Net4x.Project2015To2017.Core --version 4.2.0.26262
#r "nuget: Net4x.Project2015To2017.Core, 4.2.0.26262"
#:package Net4x.Project2015To2017.Core@4.2.0.26262
#addin nuget:?package=Net4x.Project2015To2017.Core&version=4.2.0.26262
#tool nuget:?package=Net4x.Project2015To2017.Core&version=4.2.0.26262
Net4x.Project2015To2017.Core
Core object model and engine behind CsprojToVs2017 — the tool that converts legacy (VS2015-era) MSBuild project files to the modern SDK-style format.
This package contains no migration policy of its own. It provides the project model, the readers,
the writer, the transformation pipeline and the analysis infrastructure. The actual sets of
transformations for a given Visual Studio generation live in
Net4x.Project2015To2017.Migrate2017.Library and Net4x.Project2015To2017.Migrate2019.Library.
Installation
dotnet add package Net4x.Project2015To2017.Core
Target frameworks: netstandard2.0, net461, net8.0
What's in it
| Area | Types |
|---|---|
| Project model | Project, Solution, AssemblyAttributes, PackageConfiguration, AssemblyReference, PackageReference, ProjectReference, ApplicationType |
| Reading | ProjectReader, SolutionReader, ProjectPropertiesReader, AssemblyInfoReader, NuSpecReader, plus a conditional-expression evaluator for MSBuild Condition attributes |
| Writing | ProjectWriter, ProjectWriteOptions (backup creation, custom source-control hooks) |
| Transformation pipeline | ITransformation, ITransformationSet, ITransformationWithDependencies, ITransformationWithTargetMoment, BasicTransformationSet, ChainTransformationSet, NoopTransformationSet |
| Built-in transforms | AssemblyAttributeTransformation, NuGetPackageTransformation, PropertySimplificationTransformation, PropertyDeduplicationTransformation, TargetFrameworkReplaceTransformation, ServiceFilterTransformation, EmptyGroupRemoveTransformation, and the BasicReadTransformationSet / BasicSimplifyTransformationSet bundles |
| Analysis | Analyzer<,>, AnalysisOptions, DiagnosticSet, DiagnosticBase, IReporter<>, LoggerReporter, and the baseline diagnostics W001 (illegal project type), W002 (missing project file), W010 (configurations mismatch), W011 (unsupported conditional) |
| Conversion control | ProjectConverter, ConversionOptions, UnsupportedProjectTypes, UnsupportedProjectReason |
| Caching | IProjectCache, DefaultProjectCache, NoProjectCache |
Transformation execution order
Transformations do not run in declaration order. Each one may declare:
- an execution moment (
TargetTransformationExecutionMoment:Early,Normal,Late) viaITransformationWithTargetMoment, and - dependencies on other transformations via
ITransformationWithDependencies.
The engine performs a topological sort within each moment, so custom transformations can be mixed freely with the standard ones and still land in the right place.
Writing a custom transformation
using System.Linq;
using Project2015To2017;
using Project2015To2017.Definition;
using Project2015To2017.Transforms;
public sealed class RemoveObsoletePropertyTransformation : ITransformation
{
public void Transform(Project definition)
{
foreach (var property in definition.PropertyGroups.ElementsAnyNamespace("MyObsoleteProperty").ToList())
{
property.Remove();
}
}
}
Bundle it into a set and chain it with a standard set:
var set = new ChainTransformationSet(
Vs16TransformationSet.Instance, // from the Migrate2019 library package
new BasicTransformationSet(new RemoveObsoletePropertyTransformation()));
Logging
Every entry point takes a Microsoft.Extensions.Logging.ILogger. Pass NoopLogger.Instance if you
want the pipeline to stay silent.
Dependencies
Microsoft.CodeAnalysis.CSharp, NuGet.Configuration, Microsoft.Extensions.Logging.Abstractions,
System.Memory.
Related packages
Net4x.Project2015To2017.Base—MigrationFacility, the high-level orchestration entry pointNet4x.Project2015To2017.Migrate2017.Library— VS2017 (VS15) transformation and diagnostic setsNet4x.Project2015To2017.Migrate2019.Library— VS2019 (VS16) transformation and diagnostic setsNet4x.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 is compatible. 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
- Microsoft.CodeAnalysis.CSharp (>= 5.9.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- NuGet.Configuration (>= 6.14.3)
- System.Memory (>= 4.6.3)
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 5.9.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- NuGet.Configuration (>= 6.14.3)
- System.Memory (>= 4.6.3)
-
net8.0
- Microsoft.CodeAnalysis.CSharp (>= 5.9.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- NuGet.Configuration (>= 7.9.0)
- System.Memory (>= 4.6.3)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Net4x.Project2015To2017.Core:
| Package | Downloads |
|---|---|
|
Net4x.Project2015To2017.Migrate2017.Library
Tool for converting a MSBuild project file to VS2017 format and beyond. |
|
|
Net4x.Project2015To2017.Base
Tool for converting a MSBuild project file to VS2017 format and beyond. |
|
|
Net4x.Project2015To2017.Migrate2019.Tool
Tool for converting a MSBuild project file to VS2017 format and beyond. |
|
|
Net4x.Project2015To2017.Migrate2019.Library
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 | 267 | 9/19/2026 |