.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 中的功能将开始合并回到 *.csproj 中。

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

  • 据推测,如果使用 Visual Studio,过渡应该是平滑的,并且可能是自动的。

MSBuild 的优点

  • MSBuild 是开源的,可在 GitHub 上获取,并且势必会完全跨平台。

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

  • Microsoft 还引入了一个新的项目系统,它可以在不需要 Visual Studio 的情况下启用很多场景,详细信息在这个 Url https://github.com/dotnet/roslyn-project-system/ 上给出。

  • 目标是即使使用 MSBuild 设置,在 Visual Studio IDE 中与外部一样无缝地处理构建和项目。


MSBuild 与 project.json

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

dotnet new -t console 

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

运行 Dir

您可以看到创建了两个文件,Program.csproject.json 文件。

现在让我们通过执行以下命令使用 .NET Core 2 preview1 工具创建一个控制台应用程序。

dotnet new console 

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

控制台

现在让我们并排比较 project.jsonMSBuild.csproj 文件。

对比

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