在Azure DevOps中构建.sln,在同一解决方案文件中同时具有.Net Framework和.Net Core项目

时间:2019-06-11 15:14:49

标签: .net .net-core azure-devops

在Azure DevOps Pipelines中构建具有两个都针对.NET Core和.NET Framework的项目的.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还原和dotnet构建,而不能像在Visual Studio Build任务中那样对整个.sln文件进行构建。

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

1 个答案:

答案 0 :(得分:1)

  

在Azure DevOps中构建.sln,在同一解决方案文件中同时具有.Net Framework和.Net Core项目

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

因此,要解决此问题,我们可以Migrate from packages.config to PackageReference或仅在.netframework项目中使用packagereference,然后可以使用任务dotnet restore来还原.sln文件在Azure DevOps中。

此外,对于构建而言,即使dotnet build应该能够构建许多经典的.NET Framework项目,但由于基础构建任务是要在{{1}上运行的,所以许多功能可能无法正常工作},并且行为可能不同,或者在.NET Framework版本的MSBuild中完全不受支持,因此,建议使用.NET Core.sln构建Visual Studio Build task文件。

希望这会有所帮助。