2016-04-27 13 views
0

In meiner Firma haben wir bereits ein Java-Projekt (erstellt von Maven), das Proto-Dateien in Java über maven-protoc-plugin kompiliert. Im Moment versuchen wir dasselbe für C# (MSbuild + NuGet) zu tun.Protobuf toolchain/plugin für C#

Mein Problem ist, dass ich keine Toolchain für MSbuild finden kann, die Proto in C# -Klassen kompiliert. Ich habe bereits Google Protobuf for .NET 4.0 über NuGet installiert.

Ich möchte protobuf 2 mit Visual Studio 2013

PS Meine Haupt Programmiersprache Java zu verwenden ist, und ich saugen wirklich an C#, so wenden Sie sich bitte mit mir sprechen sehr langsam;).

Antwort

0

Sie möchten protobuf-net! Es wird alles tun, was Sie brauchen!

Im Ernst, es wird Ihnen erlauben, die Verwendung von .proto-Dateien zu vermeiden, indem Sie eine Klasse/Eigenschaft mit Attributen markieren. Es ist jedoch auch mit einem Pre-Compiler ausgestattet, um Ihre vorhandenen .proto-Dateien in C# -Klassen zu verarbeiten. Wir verwenden es in einem großen Projekt und es funktioniert wirklich gut.

+0

Aber ich möchte .proto Dateien verwenden (sie werden immer noch in Java und Java App verwendet). Zweitens, wie kann ich Proto -> C# mit diesem Protobuf-Netz kompilieren? – MAGx2

+0

@ MAGx2 Am Ende des Links gibt es einen Abschnitt über die Verwendung des Pre-Compiler. – Sean

1

Ich stimme mit der Empfehlung von protobuf-net
Das Werkzeug für die Klassen aus .proto Datei erstellt wird Protogen genannt.

Protogen -i: test2.proto -o: test2.cs

Typischerweise würde ein Pre-Build-Build-Ereignis in VS definieren, die die Erholung der Klassen vor der eigentlichen Erstellung auslösen.

+0

Ich ging in Projekt -> Eigenschaften -> Pre Build Event-Befehl, fügte dann Befehl * Protogen -i: ... -o: ... *, aber wenn ich Projekt erstellen, bekomme ich Fehler (mit Code 1 beendet). – MAGx2

+0

Wie haben Sie Protobuf-net - Nuget installiert? Ich schätze, Sie müssen relative Pfade innerhalb des Pre-Build-Ereignisses verwenden – weismat

+0

Bevor Sie das Ereignis hinzufügen, sollten Sie es mit der Befehlszeile versuchen. – weismat