There is a user guide for people who wish to use the C# generator. This document is to assist developers working on the the SBE C# generator itself.
Java and gradlew are used to build the generator.
git bash and shell scripts are used for scripting.
The C# code was originally built using Visual Studio Community 2017.
The code, samples, tests and nuget package can be built/run using the dotnet core sdk:
- On windows, having the legacy .NET Framework installed as part of the OS, only the dotnet sdk needs to be installed to allow for compiling the SDK style projects
- On Mac/Linux, the Mono framework is also required for producing release nuget packages / .NET Framework compatible DLLs.
- Fix nuget package name (back to sbe-tool)
- Many build system improvements
- Better inlining support
- Issue #660 Add Length() and GetBytes() methods for VarStrings
- Add csharp code-gen time property that allows squashing of namespace
C# Span support has been added to the code generation, and a set of corresponding utilities added to sbe-dll DirectBuffer
. It is now possible to copy to/from a Span<byte>
where previously only byte[]
types were supported. This introduces a dependency on the System.Memory
nuget package both for sbe-dll and generated code produced by sbe-tool.
First beta release of the new SBE C# bindings and supporting sbe-tool / sbe-dll nuget packages.
The Java code that performs the generation of C# code is here.
$ ./gradlew # Will build sbe-tool jar
$ ./gradlew generateCSharpCodecs # will generate the test, benchmark, and example C# code
The Visual Studio 2017 Community solution provides the projects:
- sbe-dll (for common marshalling and DirectBuffer functionality)
- sbe-generated (containing C# code generated by sbe-tool)
- sbe-tests (an mstest suite for unit testing)
- sbe-benchmarks (for performance testing and tuning)
- sbe-example-car (sample code based on the Car example)
- sbe-example-extension (sample code based on the Car extension)
The project can be built either through the various .NET Core supporting IDEs such as Visual Studio 2017, JetBrains Rider, and Visual Studio Code as well as through the .NET Core SDK, using the dotnet build
/ dotnet test
commands.
The csharp generator is as of March 2018 a beta release. The current roadmap contains:
- Improved Documentation
- Testing/bug fixes
- Better nuget Packaging
- Possible changes to make group objects accessible without requiring a linear progression.
The nuget package can be built using ~csharp/.nuget/do-release.sh. It has a dependency on the nuget.exe.
Before release it will probbalty be necessary to copy in changed files for the example contained in the published nuget package. This is a manual process for now.
Once the nuget package is built it can be tested within the example project by adding a local disk path to the nuget file locations and then updating sbe-tool within the example.
For now you can:
- build the SBE csharp generator using
gradlew
- generate the csharp codecs using
gradlew GenerateCSharpCodecs
- Use the bash script build.sh to run the tests
- Use the bash script runtests.sh to run the tests
- Use the bash script pack.sh to create the nuget package