diff --git a/src/compiler/config.h b/src/compiler/config.h
index fea976c31818407a203c0b4b530e6206ae7c1dc1..a31dc24f6de3db816e9808e21b3ed609f748792e 100644
--- a/src/compiler/config.h
+++ b/src/compiler/config.h
@@ -68,6 +68,11 @@
 #define GRPC_CUSTOM_PLUGINMAIN ::google::protobuf::compiler::PluginMain
 #endif
 
+#ifndef GRPC_CUSTOM_PARSEGENERATORPARAMETER
+#include <google/protobuf/compiler/code_generator.h>
+#define GRPC_CUSTOM_PARSEGENERATORPARAMETER ::google::protobuf::compiler::ParseGeneratorParameter
+#endif
+
 namespace grpc {
 namespace protobuf {
 typedef GRPC_CUSTOM_DESCRIPTOR Descriptor;
@@ -81,6 +86,11 @@ static inline int PluginMain(int argc, char* argv[],
                              const CodeGenerator* generator) {
   return GRPC_CUSTOM_PLUGINMAIN(argc, argv, generator);
 }
+static inline void ParseGeneratorParameter(const string& parameter,
+    std::vector<std::pair<string, string> >* options) {
+  GRPC_CUSTOM_PARSEGENERATORPARAMETER(parameter, options);
+}
+
 }  // namespace compiler
 namespace io {
 typedef GRPC_CUSTOM_PRINTER Printer;
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc
index 8b9395f9e2b21af8c5af6e255e27724d14bbbff0..bc86fbd616dd3d63f82d654b16f0e6d29cc0a50d 100644
--- a/src/compiler/csharp_plugin.cc
+++ b/src/compiler/csharp_plugin.cc
@@ -48,6 +48,9 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
                 const grpc::string &parameter,
                 grpc::protobuf::compiler::GeneratorContext *context,
                 grpc::string *error) const {
+    std::vector<std::pair<grpc::string, grpc::string> > options;
+    grpc::protobuf::compiler::ParseGeneratorParameter(parameter, &options);
+
     grpc::string code = grpc_csharp_generator::GetServices(file);
     if (code.size() == 0) {
       return true;  // don't generate a file if there are no services