.NET Core - MSBuild 和 project.json



.NET Core 决定放弃 project.json,并返回到 MSBuild 和 *.csproj。这在刚刚发布的 .NET Core 2.0 预览版 1 工具中已经发生了。这相当令人失望,因为 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** 的结构。

  • Microsoft 还引入了一个新的项目系统,它将能够在无需 Visual Studio 的情况下实现许多场景,详细信息在此网址中给出 https://github.com/dotnet/roslyn-project-system/

  • 目标是即使使用 MSBuild 设置,在 Visual Studio IDE 中和 IDE 外部使用构建和项目都将同样无缝。

MSBuild 与 project.json 的比较

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

dotnet new -t console 

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

Run Dir

您可以看到创建了两个文件,**Program.cs** 和 **project.json** 文件。

现在让我们使用 .NET Core 2 预览版 1 工具创建一个控制台应用,方法是执行以下命令。

dotnet new console 

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

Console

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

Compare

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

广告