.NET Core – MSBuild 和 project.json
.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。
-
目前尚不清楚他们将如何处理包列表,但有人提到他们可能会将其保留为nuget.json下的 json或将其合并到*.csproj 中。
-
如果使用 Visual Studio,该转换应该是平滑的并且可能是自动的。
MSBuild 的优势
-
MSBuild 是开源的,可在 GitHub 上获得,并且必将成为完全跨平台的。
-
MSBuild 将极大地简化和修剪*.csproj的结构。
-
微软还推出了一个新的项目系统,它可以在不需要 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命令。
可以看到创建了两个文件,Program.cs和project.json文件。
现在让我们通过执行以下命令,使用 .NET Core 2 preview1 工具创建一个控制台应用程序。
dotnet new console
要查看此项目中创建的所有文件,请运行dir命令。您可以看到创建了三个文件,Program.cs、NuGet.config和MSBuild.csproj,而不是 project.json 文件。
现在让我们并排比较project.json和MSBuild.csproj文件。
左边是 json 格式的文件,右边是 XML 格式的文件。您可以看到在 project.json 文件的依赖项部分中,有netcoreapp1.0,而在 MSBuild.csproj 文件中,您将看到netcoreapp2.0。