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

Publish the Avro C# library to NuGet

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.7.5
    • 1.7.7
    • csharp
    • None

    Description

      ASF's Avro library is currently distributed as a downloadable .tar.gz file from the project web site for C# projects. A more streamline approach would be to distribute the library (and perhaps tools) as NuGet packages so that project repositories using Avro can instead get the l;ibrary from NuGet at build time (very similar to Maven's library dependency resolution).

      How to make a NuGet package:
      http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package

      To be able to run NuGet on Linux (eg: build machine or dev machine): http://monomvc.wordpress.com/2012/03/06/nuget-on-mono/

      The desire to have Avro on NuGet is motivated by two main benefits
      1) Easier integration and lightweight code-repositories for all consumer-projects of the Avro library
      2) Counters the effects of finding an incompatible "Avro" library on NuGet. (Details: Currently searching for Avro on NuGet brings up the Microsoft Hadoop team's Avro library which forces every Avro field to be nullable => alters the schema => breaks wire compatibility in cross-platform environments. Having the official ASF Avro library on NuGet would prevent people from accidentally using that incompatible library)

      For the best flexibility, we can have two NuGet packages:
      1. "Avro" = Library only (this will cover the avro.dll)
      2. "Avro Tools" = The code-gen tools for IDL compiling as well as Schema compiling

      Attachments

        Activity

          People

            Unassigned Unassigned
            user874144 Sid S
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: