diff options
author | Tim Emiola <tbetbetbe@users.noreply.github.com> | 2015-05-15 15:03:51 -0700 |
---|---|---|
committer | Tim Emiola <tbetbetbe@users.noreply.github.com> | 2015-05-15 15:03:51 -0700 |
commit | ac25e00dbd2fe62bf63ee4e32803410be99e304d (patch) | |
tree | 7644fa9fcbbf6c297bb6d8973b727d9c24200e7c /src | |
parent | 9aaa1b61e7bd6a1173d6d7fb4b68ca8ae74bcabe (diff) | |
parent | c6d43ec02d4b3d806081bd0c02c5517192db9564 (diff) |
Merge pull request #1624 from jtattermusch/csharp_readme_updates
Update readme for C#
Diffstat (limited to 'src')
-rw-r--r-- | src/csharp/README.md | 111 |
1 files changed, 77 insertions, 34 deletions
diff --git a/src/csharp/README.md b/src/csharp/README.md index 21aab52118..37aa2ecddc 100644 --- a/src/csharp/README.md +++ b/src/csharp/README.md @@ -4,74 +4,117 @@ gRPC C# A C# implementation of gRPC. Status ------------------ +------ -**This gRPC C# implementation is work-in-progress and is not expected to work yet.** +Ready for early adopters. -- The implementation is a wrapper around gRPC C core library -- Code only runs under mono currently, building gRPC C core library under Windows - is in progress. -- It is very possible that some parts of the code will be heavily refactored or - completely rewritten. +Usage: Windows +-------------- +- Prerequisites: .NET Framework 4.5+, Visual Studio 2013 with NuGet extension installed (VS2015 should work). -INSTALLATION AND USAGE: WINDOWS -------------------------------- +- Open Visual Studio and start a new project/solution. -- Open Grpc.sln using Visual Studio 2013. NuGet dependencies will be restored - upon build. +- Add NuGet package `Grpc` as a dependency (Project options -> Manage NuGet Packages). + That will also pull all the transitive dependencies (including the native libraries that + gRPC C# is internally using). +- TODO: link to Helloworld example -INSTALLATION AND USAGE: LINUX & MONO ------------------------------------- +Usage: Linux (Mono) +-------------- -- Compile and install the gRPC C# extension library (that will be used via - P/Invoke from C#). +- Prerequisites: Mono framework, MonoDevelop 5.9 with NuGet add-in installed. + +- Install gRPC C Core using instructions in https://github.com/grpc/homebrew-grpc + +- TODO: explain using LD_LIBRARY_PATH or installation to /usr/local + +- Open MonoDevelop and start a new project/solution. + +- Add NuGet package `Grpc` as a dependency (Project -> Add NuGet packages). + +- TODO: link to Helloworld example + +Building: Windows +----------------- + +You only need to go through these steps if you are planning to develop gRPC C#. +If you are a user of gRPC C#, go to Usage section above. + +- Prerequisites for development: NET Framework 4.5+, Visual Studio 2013 (with NuGet and NUnit extensions installed). + +- The grpc_csharp_ext native library needs to be built so you can build the Grpc C# solution. You can + either build the native solution in `vsprojects/grpc.sln` from Visual Studio manually, or you can use + a convenience batch script that builds everything for you. ``` -make grpc_csharp_ext -sudo make install_grpc_csharp_ext +buildall.bat ``` -- Prerequisites for development: Mono framework, MonoDevelop (IDE) +- Open Grpc.sln using Visual Studio 2013. NuGet dependencies will be restored + upon build (you need to have NuGet add-in installed). + + +Building: Linux & Mono +---------------------- + +You only need to go through these steps if you are planning to develop gRPC C#. +If you are a user of gRPC C#, go to Usage section above. + +- Prerequisites for development: Mono framework, MonoDevelop 5.9 with NuGet and Nunit add-ins installed. ``` sudo apt-get install mono-devel -sudo apt-get install monodevelop monodevelop-nunit sudo apt-get install nunit nunit-console ``` -- NuGet is used to manage project's dependencies. Prior opening Grpc.sln, - download dependencies using NuGet restore command: +You can use older versions of MonoDevelop, but then you might need to restore +NuGet dependencies manually (by `nuget restore`), because older versions of MonoDevelop +don't support NuGet add-in. +- Compile and install the gRPC C# extension library (that will be used via + P/Invoke from C#). ``` -# Import needed certicates into Mono certificate store: -mozroots --import --sync - -# Download NuGet.exe http://nuget.codeplex.com/releases/ -# Restore the nuget packages with Grpc C# dependencies -mono ~/Downloads/NuGet.exe restore Grpc.sln +make grpc_csharp_ext +sudo make install_grpc_csharp_ext ``` -- Use MonoDevelop to open the solution Grpc.sln (you can also run unit tests - from there). +- Use MonoDevelop to open the solution Grpc.sln + +- Build the solution & run all the tests from test view. + +Tests +----- -- After building the solution with MonoDevelop, you can use - nunit-console to run the unit tests (currently only running one by - one will make them pass. +gRPC C# is using NUnit as the testing framework. + +Under Visual Studio, make sure NUnit test adapter is installed (under "Extensions and Updates"). +Then you should be able to run all the tests using Test Explorer. + +Under Monodevelop, make sure you installed "NUnit support" in Add-in manager. +Then you should be able to run all the test from the Test View. + +After building the solution, you can also run the tests from command line +using nunit-console tool. ``` +# from Grpc.Core.Test/bin/Debug directory nunit-console Grpc.Core.Tests.dll ``` -CONTENTS +Contents -------- - ext: The extension library that wraps C API to be more digestible by C#. +- Grpc.Auth: + gRPC OAuth2 support. - Grpc.Core: The main gRPC C# library. - Grpc.Examples: API examples for math.proto - Grpc.Examples.MathClient: An example client that sends some requests to math server. +- Grpc.Examples.MathServer: + An example client that sends some requests to math server. - Grpc.IntegrationTesting: - Client for cross-language gRPC implementation testing (interop testing). + Cross-language gRPC implementation testing (interop testing). |