dotnet / standard

This repo is building the .NET Standard
3.06k stars 427 forks source link

mono and .NET5+ #1785

Closed tmds closed 3 years ago

tmds commented 3 years ago

hi @migueldeicaza @terrajobst

Will there be a version of mono that supports net5.0? Or is mono skipping net5.0, and is it a goal to support net6.0?

akoeplinger commented 3 years ago

The version of Mono produced out of the https://github.com/mono/mono repository will not support net5.0 or later versions, it will stay compatible with the net4.x releases. You can think of it the same way as ".NET Framework" vs. ".NET Core".

The Mono runtime is now part of the unified https://github.com/dotnet/runtime repository so it'll be available as an option there and is used today for WebAssembly target and iOS/Android with .NET 6.

tmds commented 3 years ago

Do you plan to build versions of mono from dotnet/runtime repo that support net5.0 or later? Or is ".NET 5+" the successor of mono, in the same way it is succeeding ".NET Framework"?

akoeplinger commented 3 years ago

Do you plan to build versions of mono from dotnet/runtime repo that support net5.0 or later?

The versions of mono built from the dotnet/runtime repo already support net5.0 or later, but it's important to understand that this is quite different from the traditional mono in that the mono runtime is used together with the unified BCL libraries and the dotnet host (similar to CoreCLR, just a different runtime).

Or is ".NET 5+" the successor of mono, in the same way it is succeeding ".NET Framework"?

I think that's a fair way to put it.

tmds commented 3 years ago

The versions of mono built from the dotnet/runtime repo already support net5.0 or later

That's nice. Do you intend to release such builds (like what is now available on https://www.mono-project.com/download/stable/)?

akoeplinger commented 3 years ago

@tmds we publish runtime packs for Mono to the usual feeds, e.g. https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet6&package=Microsoft.NETCore.App.Runtime.Mono.linux-x64&protocolType=NuGet&version=6.0.0-alpha.1.20612.4

You can use it by adding this to your .csproj which overrides the runtime pack name from the SDK (we'll likely simplify it in the future):

  <ItemGroup>
    <KnownFrameworkReference Update="Microsoft.NETCore.App">
      <RuntimePackNamePatterns>Microsoft.NETCore.App.Runtime.Mono.**RID**</RuntimePackNamePatterns>
    </KnownFrameworkReference>
  </ItemGroup>

And then publish a self-contained app via dotnet publish -r linux-x64, this only works with the 6.0 nightly dotnet SDK right now.

tmds commented 3 years ago

I will definitely try that out.

Do you plan to distribute these runtime packages with .NET 6 release via nuget.org? For linux-x64? And other architectures that mono works on?

akoeplinger commented 3 years ago

Yes anything that is on that Azure DevOps feed will automatically flow to nuget.org for each (preview)release: https://www.nuget.org/packages/Microsoft.NETCore.App.Runtime.Mono.linux-x64/

tmds commented 3 years ago

Thanks @akoeplinger , it is more clear to me how mono fits in the .NET6+ picture.