run_tests.py support for C# on windows
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index bd5959c..6515661 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -234,20 +234,36 @@
 
 
 class CSharpLanguage(object):
+  def __init__(self):
+    if platform.system() == 'Windows':
+      plat = 'windows'
+    else:
+      plat = 'posix'
+    self.platform = plat
+
   def test_specs(self, config, travis):
     assemblies = ['Grpc.Core.Tests',
                   'Grpc.Examples.Tests',
                   'Grpc.IntegrationTesting']
-    return [config.job_spec(['tools/run_tests/run_csharp.sh', assembly],
+    if self.platform == 'windows':
+      cmd = 'tools\\run_tests\\run_csharp.bat'
+    else:
+      cmd = 'tools/run_tests/run_csharp.sh'
+    return [config.job_spec([cmd, assembly],
             None, shortname=assembly,
             environ={'GRPC_TRACE': 'surface,batch'})
             for assembly in assemblies ]
 
   def make_targets(self):
+    # For Windows, this target doesn't really build anything,
+    # everything is build by buildall script later.
     return ['grpc_csharp_ext']
 
   def build_steps(self):
-    return [['tools/run_tests/build_csharp.sh']]
+    if self.platform == 'windows':
+      return [['src\\csharp\\buildall.bat']]
+    else:
+      return [['tools/run_tests/build_csharp.sh']]
 
   def supports_multi_config(self):
     return False