diff options
Diffstat (limited to 'csharp/mono/readme.txt')
-rw-r--r-- | csharp/mono/readme.txt | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/csharp/mono/readme.txt b/csharp/mono/readme.txt new file mode 100644 index 00000000..ad873a58 --- /dev/null +++ b/csharp/mono/readme.txt @@ -0,0 +1,91 @@ +Getting started with Protocol Buffers on Mono +--------------------------------------------- + +Prerequisites: + +o Mono 2.4 or higher. Earlier versions of Mono had too + many issues with the weird and wonderful generic type + relationships in Protocol Buffers. (Even Mono 2.4 *did* + have a few compile-time problems, but I've worked round them.) + +o Some sort of Linux/Unix system + You can try running with Bash on Windows via MINGW32 or + something similar, but you're on your own :) It's easier + to build and test everything with .NET if you're on + Windows. + +o The native Protocol Buffers build for your system. + Get it from http://code.google.com/p/protobuf/ + After building it, copy the executable protoc + file into this directory. + +o The NUnit binaries from http://nunit.org + I generally just download the latest version, which + may not be the one which goes with nunit.framework.dll + in ../lib, but I've never found this to be a problem. + +Building the code with current sources +-------------------------------------- + +1) Edit buildall.sh to tell it where to find nunit-console.exe + (and possibly change other options) + +2) Run buildall.sh from this directory. It should build the + main library code + tests and ProtoGen code + tests, running + each set of tests after building it. + +Note that currently one test is ignored in ServiceTest.cs. This +made the Mono VM blow up - I suspect it's some interaction with +Rhino which doesn't quite work on Mono 2.4. If you want to see a +truly nasty stack trace, just comment out the Ignore attribute in +ServiceTest.cs and rerun. + +The binaries will be produced in a bin directory under this one. The +build currently starts from scratch each time, cleaning out the bin +directory first. Once I've decided on a full NAnt or xbuild +strategy, I'll do something a little cleaner. + +Rebuilding sources for generated code +------------------------------------- + +1) Build the current code first. The bootstrapping issue is why + the generated source code is in the source repository :) See + the steps above. + +2) Run generatesource.sh from this directory. This will create a + temporary directory, compile the .proto files into a binary + format, then run ProtoGen to generate .cs files from the binary + format. It will copy these files to the right places in the tree, + and finally delete the temporary directory. + +3) Rebuild to test that your newly generated sources work. (Optionally + regenerate as well, and hash the generated files to check that + the new build generates the same code as the old build :) + +Running the code +---------------- + +Once you've built the binaries, you should be able to use them just +as if you'd built them with .NET. (And indeed, you should be able to +use binaries built with .NET as if you'd built them with Mono :) + +See the getting started guide for more information: +http://code.google.com/p/protobuf-csharp-port/wiki/GettingStarted + +FAQ (Frequently Anticipated Questions) +-------------------------------------- + +Q) This build process sucks! Why aren't you doing X, Y, Z? +A) My Mono skills are limited. My NAnt skills are limited. My + MSBuild/xbuild skils are limited. My shell script skills are + limited. Any help is *very* welcome! + +Q) Why doesn't it build ProtoBench etc? +A) This is a first initial "release" I'll add more bits to + the build script. I'll be interested to see the results + of benchmarking it on Mono :) + +Any further questions or suggestions? Please email skeet@pobox.com +or leave a request at +http://code.google.com/p/protobuf-csharp-port/issues/list + |