- .NET Core 教程
- .NET Core - 首页
- .NET Core - 概述
- .NET Core - 预备条件
- .NET Core - 环境设置
- .NET Core - 开始
- .NET Core - 数值计算
- .NET Core - 垃圾回收
- .NET Core - 代码执行
- .NET Core - 模块化
- .NET Core - 项目文件
- .NET Core - 包引用
- 使用 .NET Core 创建 UWP 应用
- .NET Core - MSBuild
- .NET Core - 元包
- Windows 运行时和扩展 SDK
- 创建 .NET Standard 库
- .NET Core - 可移植类库
- 添加库引用
- 共享 .NET Core 库
- 创建 Xamarin.Forms 项目
- .NET Core - PCL 故障排除
- .NET Core - 创建测试项目
- 在 Visual Studio 中运行测试
- .NET Core - 测试库
- 托管可扩展性框架 (Managed Extensibility Framework)
- .NET Core - SDK
- .NET Core - MSBuild 和 project.json
- 恢复和构建以及 MSBuild
- .NET Core - 迁移
- .NET Core 有用资源
- .NET Core - 快速指南
- .NET Core - 有用资源
- .NET Core - 讨论
.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** 命令。
您可以看到创建了两个文件,**Program.cs** 和 **project.json** 文件。
现在让我们使用 .NET Core 2 预览版 1 工具创建一个控制台应用,方法是执行以下命令。
dotnet new console
要查看在此项目中创建的所有文件,请运行 **dir** 命令。您可以看到创建了三个文件,**Program.cs、NuGet.config** 和 **MSBuild.csproj**,而不是 project.json 文件。
现在让我们并排比较 **project.json** 和 **MSBuild.csproj** 文件。
左边是 json 格式的文件,右边是 XML 格式的文件。您可以看到在 project.json 文件中的 dependencies 部分中,有 **netcoreapp1.0**,而在 MSBuild.csproj 文件中,您将看到 **netcoreapp2.0**。