Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-2422

C#: Target .NET Standard 2.0 only



    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.9.1
    • Component/s: csharp
    • Labels:
    • Release Note:
      Target .NET Standard primarily and build NuGet packages on Linux


      Update the main Avro C# project to target .NET Standard only. I will lay out a couple reasons below, but first let's start with a little context.

      You can see the different frameworks that the C# project currently targets here in the README. We updated the main Avro library to target .NET Standard with the release of v1.9.0. However, we continue to target the .NET Framework v4.0 as well. This allows users that are targeting .NET Framework versions between 4.0 and 4.6.1 to still use the library. As you can see in this table on .NET Standard compatibility, as long as you are targeting .NET Framework 4.6.1 or later OR .NET Core 2.0 or later, you can use a library that targets .NET Standard.

      To be clear, we are not dropping support for all of .NET Framework. We would drop support for for any version of .NET Framework before v4.6.1.

      This change will simplify our release process. At this time, we can only build a NuGet package that contains both .NET Framework and .NET Standard binaries on Windows. This means that after the "official" release is created and deployed, I have to rebuild the project on my Windows machine before publishing the package to nuget.org. With this change, we would only create .NET Standard binaries, which means that we could build the NuGet package on a Linux machine. Then, we could publish the NuGet directly from the "official" build to nuget.org. No more side channel builds.

      This change will also simplify development, particularly when developing on non-Windows platforms. I think it's still a good idea to run our unit tests on .NET Framework in addition to Core, but we could make it so that those are only run when run on Windows.


          Issue Links



              • Assignee:
                blachniet Brian Lachniet
                blachniet Brian Lachniet
              • Votes:
                0 Vote for this issue
                3 Start watching this issue


                • Created: