在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的最佳实践是什么?
答案 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
文件。
希望这会有所帮助。