
- .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**。