C# 如何使用混合框架构建sln

C# 如何使用混合框架构建sln,c#,.net,docker,.net-core,C#,.net,Docker,.net Core,我有一个解决方案文件,其中包含针对混合框架的项目: MySolution.sln MySolution.Library.csproj MySolution.Library.Tests.csproj (更多库和测试项目) 所有非测试项目都以.NET标准2.0为目标,设置如下: netstandard2.0 所有测试项目都以.NET Framework 4.7.2和.NET Core 3.1为目标: net472;netcoreapp3.1 我们有一个Dockerfile,它将解决

我有一个解决方案文件,其中包含针对混合框架的项目:

  • MySolution.sln
    • MySolution.Library.csproj
    • MySolution.Library.Tests.csproj
    • (更多库和测试项目)
所有非测试项目都以.NET标准2.0为目标,设置如下:


netstandard2.0
所有测试项目都以.NET Framework 4.7.2和.NET Core 3.1为目标:


net472;netcoreapp3.1
我们有一个Dockerfile,它将解决方案(通过
dotnet build MySolution.sln
)构建到一个映像中。然而,这是在Linux上运行的,因此显然我们只想针对.NET Core 3.1进行构建,因为.NET Framework不适用于Linux

我试过:

  • dotnet build-f netcoreapp3.1 MySolution.sln
    (由于库项目不针对.NET Core 3.1,因此不起作用)
  • dotnet build-f netstandard2.0 MySolution.sln
    (由于测试项目不针对.NET标准2.0,因此不起作用)
错误NETSDK1005:Assets文件“/blah/project.Assets.json”没有“.NETStandard,Version=v2.0”的目标。确保已运行还原,并且已在项目的TargetFrameworks中包含“netstandard2.0”


如何使其在Linux上构建?

为什么不单独编译它们?visual studio中的默认docker支持将在脚本调用
dotnet build“MyProject.csproj”
的每个项目中添加一个
Dockerfile
。如果您希望所有组件一起构建,您可以创建一个
docker compose
文件,并在此基础上调用
docker compose build
。这是一个选项,但我想知道是否有一种更简单的方法不必构建两次。