diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 51d8d982e2d25d8f9cbfdd1f64e124c41cb601d7..7b497df7f4775edafbac825b104633615737e66f 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -33,6 +33,7 @@
 
 #include <cctype>
 #include <map>
+#include <sstream>
 #include <vector>
 
 #include "src/compiler/csharp_generator.h"
@@ -44,7 +45,6 @@
 using google::protobuf::compiler::csharp::GetFileNamespace;
 using google::protobuf::compiler::csharp::GetClassName;
 using google::protobuf::compiler::csharp::GetUmbrellaClassName;
-using google::protobuf::SimpleItoa;
 using grpc::protobuf::FileDescriptor;
 using grpc::protobuf::Descriptor;
 using grpc::protobuf::ServiceDescriptor;
@@ -228,11 +228,14 @@ void GenerateStaticMethodField(Printer* out, const MethodDescriptor *method) {
 }
 
 void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *service) {
+  std::ostringstream index;
+  index << service->index();
   out->Print("// service descriptor\n");
   out->Print("public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor\n");
   out->Print("{\n");
   out->Print("  get { return $umbrella$.Descriptor.Services[$index$]; }\n",
-             "umbrella", GetUmbrellaClassName(service->file()), "index", SimpleItoa(service->index()));
+             "umbrella", GetUmbrellaClassName(service->file()), "index",
+             index.str());
   out->Print("}\n");
   out->Print("\n");
 }
diff --git a/src/compiler/csharp_generator.h b/src/compiler/csharp_generator.h
index 67e3ee30b54f32f676a467ce6b1a74b054dc3a9a..90eb7e298466d3eda10adb1d912d82045dbcfb36 100644
--- a/src/compiler/csharp_generator.h
+++ b/src/compiler/csharp_generator.h
@@ -36,10 +36,7 @@
 
 #include "src/compiler/config.h"
 
-using namespace std;
-
 #include <google/protobuf/compiler/csharp/csharp_names.h>
-#include <google/protobuf/stubs/strutil.h>
 
 namespace grpc_csharp_generator {