在同一解決方案文件中同時具有 .NET Framework 和 .NET Core 項目的 Azure DevOps 中建構 .sln
在 Azure DevOps Pipelines 中建構一個 .sln 文件的最佳做法是什麼,該文件同時具有面向 .NET Core 和 .NET Framework 的項目?
我曾嘗試對 .sln 文件使用 NuGet 還原任務,但在某些與 .NET Core 2.1 不兼容的包上會出錯。它還在執行建構時的任務描述中說明了這一點:
還原、打包或推送 NuGet 包,或執行 NuGet 命令。它支持 NuGet.org 和 Azure Artifacts 和 MyGet 等經過身份驗證的源。它使用 NuGet.exe 並與 .NET Framework 應用程序一起使用。對於 .NET Core 和 .NET Standard 應用程序,請使用 .NET Core 任務。
如果我使用 .NET Core 任務,我只能對特定的 .csproj 文件執行
dotnet restore和dotnet build操作,而不是像使用 Visual Studio Build 任務那樣對整個 .sln 文件執行操作。如何在 Azure DevOps 中建構具有 .NET Core 和 .NET Framework 項目並且還需要還原包的 .sln 文件的最佳做法是什麼?
在同一解決方案文件中同時具有 .NET Framework 和 .NET Core 項目的 Azure DevOps 中建構 .sln
預設情況下,.NET Framework 項目使用
packages.config文件作為 NuGet 引用。只有nuget.exe命令行nuget restore才能恢復這些類型的項目。使用項目引用 NuGet 包的 .NET Core 項目PackageReference可以通過dotnet restore. 這意味著dotnet restore無法恢復packages.config基於項目的項目。所以,為了解決這個問題,我們可以從 packages.config 遷移到 PackageReference或者只在項目中使用 packagereference
.netframework,然後我們可以使用任務dotnet restore來恢復.slnAzure DevOps 中的文件。此外,對於建構,即使
dotnet build應該能夠建構許多經典的 .NET Framework 項目,但許多功能可能無法正常工作,因為底層建構任務是在 .NET Framework 上執行的,並且可能表現不同或在 .NET Framework 上完全不受支持。 NET Core 版本的 MSBuild,因此要建構.sln文件,我們建議使用 Visual Studio Build 任務或 MSBuild 任務。