.NET Core - MSBuild和project.json

.NET Core决定放弃project.json并返回MSBuild和* .csproj.这是刚刚发布的.Net Core 2.0 preview1工具中已经发生的事情.这是相当令人失望的,因为project.json是一股清新的空气.然而,它是可以理解的并且也有许多优点.

现在让我们讨论一下变化带来的好处和减去;

  • 这将使现有的Visual Studio解决方案直接转换为.NET Core.

  • 这是一个巨大的变化,它还可以利用基于MSBuild的CI/RM中的现有投资.

  • 在MSBuild构建期间,我们可以考虑增量编译,解决构建时间依赖关系,配置管理等.

  • 要按时发布dotnet cli需要做很多工作,因为它不再仅仅是关于ASP.NET Core,还有控制台应用程序,UWP应用程序等.

以下是MSBuild中的更改和* .csproj :

  • Project.json文件(* .xproj)将被MSBuild(* .csproj)取代.

  • project.json中的功能将开始合并回到th e.* .csproj.

  • 目前尚不清楚他们将如何处理包列表,但有人提到他们可能会将其保存为json在 nuget.json 下或将其合并到 * .csproj .

  • 据说转换应该是如果使用Visual Studio,则流畅且可能自动.

MSBuild的优点

  • MSBuild是开源的,可以在GitHub上使用,并且必将成为完全跨平台.

  • MSBuild将大大简化和修剪 * .csproj 的结构.

  • 微软还推出了一个新的项目系统,可以实现很多场景需要Visual Studio,并在此URL上提供详细信息 https://github.com/dotnet/roslyn-project-system/.

  • 目标是即使使用构建和项目的MSBuild设置将在Visual Studio IDE中与其外部一样无缝.

MSBuild vs project.json

现在让我们通过执行以下命令创建一个带有.NET Core preview2工具的新控制台项目.

 dotnet new -t console

要查看在此项目中创建的所有文件,请运行 dir 命令.

运行目录

您可以看到创建了两个文件,程序. cs project.json 文件.

现在让我们通过执行以下命令创建一个带有.NET Core 2 preview1工具的控制台应用程序./p>

 dotnet new console

查看在此项目中创建的所有文件,运行 dir 命令.您可以看到创建了三个文件, Program.cs,NuGet.config MSBuild.csproj 而不是project.json文件.

Console

现在让我们比较 project.json MSBuild .csproj 文件并排.

比较

在左边,我们有json格式的文件,而在右边,文件是XML格式.您可以在project.json文件中看到,在依赖项部分中,有 netcoreapp1.0 ,而在MSBuild.csproj文件中,您将看到 netcoreapp2.0