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

廣告