在具有针对.NET Core和.NET Framework的项目的Azure DevOps Pipelines中构建.sln文件的最佳实践是什么?
我试图在.sln文件上使用NuGet恢复任务,但是在某些与.NET Core 2.1不兼容的软件包上却出错。它还在运行构建时在任务描述中说明了这一点:
恢复,打包或推送NuGet程序包,或运行NuGet命令。它支持NuGet.org以及经过身份验证的feed,例如Azure Artifacts和MyGet。它使用NuGet.exe并与.NET Framework应用程序一起使用。对于.NET Core和.NET Standard应用程序,请使用.NET Core任务。
如果我使用.NET Core任务,则只能对特定的.csproj文件执行dotnet restore
和dotnet build
,但不能像使用Visual Studio Build任务那样对整个.sln文件进行处理。
如何在具有.NET Core和.NET Framework项目并且还需要还原程序包的Azure DevOps中构建.sln文件的最佳实践是什么?
最佳答案
Building .sln in Azure DevOps that has both .NET Framework and .NET Core projects in the same solution file
默认情况下,.NET Framework项目使用
packages.config
文件作为NuGet引用。只有nuget.exe
命令行nuget restore
可以还原这些类型的项目。使用PackageReference
项引用NuGet包的.NET Core项目可以直接通过dotnet restore
使用。这意味着dotnet restore
无法还原基于packages.config
的项目。因此,要解决此问题,我们可以使用migrate from packages.config to PackageReference或只在
.netframework
项目中使用packagereference,然后可以使用任务dotnet restore
在Azure DevOps中还原.sln
文件。此外,对于构建,即使
dotnet build
应该能够构建许多经典的.NET Framework项目,许多功能也可能无法正常工作,因为基本的构建任务是要在.NET Framework上运行的,并且行为可能不同或完全不受支持。 .NET Core版本的MSBuild,因此建议使用Visual Studio Build任务或MSBuild任务来构建.sln
文件。
关于.net - 在同一解决方案文件中同时具有.NET Framework和.NET Core项目的Azure DevOps中构建.sln,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56546839/