Сборка .NET Core приложения завершается с ошибкой на linux, когда зависимая библиотека имеет несколько TargetFrameworks
Есть веб-приложение WebApp.csproj .Net Core 3.1, которое использует библиотеку классов Lib.csproj, рассчитанную на несколько фреймворков: netstandard 2.0 и net45.
Т.е имется примерно следующая структура проектов:
Lib.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45;</TargetFrameworks>
</PropertyGroup>
//...
</Project>
WebApp.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<OutputPath>bin</OutputPath>
</PropertyGroup>
//...
<ItemGroup>
<ProjectReference Include="Lib.csproj" />
</ItemGroup>
</Project>
При попытке билда этого веб-приложения на Linux-машине появляется ошибка:
##[error]...../dotnet/sdk/3.1.406/Microsoft.Common.CurrentVersion.targets(1177,5): Error MSB3644: The reference assemblies for .NETFramework,Version=v4.5 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks
Т.е. dotnet-cli, как я понял, пытается сбилдать библиотеку Lib.csproj в том числе и для TargetFramework = net45, хотя ему нужен только net standard 2.0. До того, как я добавил для проекта Lib.csproj TargetFramework net45 проект успешно билдался на Linux.
Как можно решить эту проблему? Можно, конечно, каждый проект собирать по отдельности, но это плохой вариант.