在同一解决方案文件中同时包含 .NET Framework 和 .NET Core 项目的 Azure DevOps 中构建 .sln

Oli*_*sen 9 .net .net-core azure-devops

在具有面向 .NET Core 和 .NET Framework 的项目的 Azure DevOps Pipelines 中构建 .sln 文件的最佳实践是什么?

我曾尝试对 .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 restoredotnet build,但不能像使用 Visual Studio Build 任务那样执行整个 .sln 文件。

关于如何在具有 .NET Core 和 .NET Framework 项目并且还需要还原包的 Azure DevOps 中构建 .sln 文件的最佳实践是什么?

Leo*_*SFT 8

在同一解决方案文件中同时包含 .NET Framework 和 .NET Core 项目的 Azure DevOps 中构建 .sln

默认情况下,.NET Framework 项目使用packages.config文件作为 NuGet 引用。只有nuget.exe命令行nuget restore可以恢复这些类型的项目。使用这些PackageReference项引用 NuGet 包的 .NET Core 项目可以直接通过dotnet restore. 这意味着dotnet restore无法恢复packages.config基于项目。

所以,为了解决这个问题,我们可以从packages.config迁移到PackageReference,或者只在.netframework项目中使用packagereference ,然后我们可以使用任务在Azure DevOps中dotnet restore恢复.sln文件。

此外,对于构建,尽管dotnet build应该能够构建许多经典的 .NET Framework 项目,但许多功能可能无法正常工作,因为底层构建任务旨在在 .NET Framework 上运行并且可能表现不同或在 .NET Framework 上完全不受支持。 NET Core 版本的 MSBuild,因此要构建.sln文件,我们建议使用 Visual Studio Build 任务或 MSBuild 任务。