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

标签 .net .net-core azure-devops

在具有针对.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 restoredotnet 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/

相关文章:

c# - 如何在 Asp.net C# 代码中删除之前在 JavaScript 弹出窗口中添加记录名称

.net - 在多项目解决方案中使用 autofac

azure-devops - Azure Devops azure pipeline代理TCP连接失败

c# - 方法重载中的 Expression<Func<T,bool>> 与 Func<T,bool>

c# - SkiaSharp Tiff 支持

c# - 如何在c#中解析json字符串

c# - 构建 : error MSB4062 Microsoft. Build.Tasks.ResolveComReference 时出现 .NET Core 错误

azure-devops - 有没有办法(永久)链接 Azure DevOps wiki 页面中的源代码片段?

azure-devops - TFS/VSTS vNext 构建和发布日志位置

.net - WPF中的win32窗口