diff --git a/.gitignore b/.gitignore
index 471649d7a04d8cceac6c50214dfbbd0615762329..cc70659661a774cb2c6940cdb09c669a4daf1053 100644
--- a/.gitignore
+++ b/.gitignore
@@ -82,3 +82,6 @@ DerivedData
 # Podfile.lock and the workspace file are tracked, to ease deleting them. That's
 # needed to trigger "pod install" to rerun the preinstall commands.
 Pods/
+
+# Artifacts directory
+artifacts/
diff --git a/tools/run_tests/build_artifact_csharp.bat b/tools/run_tests/build_artifact_csharp.bat
new file mode 100644
index 0000000000000000000000000000000000000000..49a8ada6acbca3f7c1a0b466b24a9939a0605c17
--- /dev/null
+++ b/tools/run_tests/build_artifact_csharp.bat
@@ -0,0 +1,12 @@
+@rem Builds C# artifacts on Windows
+
+@call vsprojects\build_vs2013.bat %* || goto :error
+
+mkdir artifacts
+copy /Y vsprojects\Release\grpc_csharp_ext.dll artifacts || goto :error
+
+goto :EOF
+
+:error
+echo Failed!
+exit /b %errorlevel%
diff --git a/tools/run_tests/build_artifacts.py b/tools/run_tests/build_artifacts.py
index 0d7e3bd56b207dfc4ae0300fa13a46a3793ca4e1..0fd5bc63f37db533bf41af2658859de3377a41ce 100755
--- a/tools/run_tests/build_artifacts.py
+++ b/tools/run_tests/build_artifacts.py
@@ -45,7 +45,8 @@ import time
 import uuid
 
 # Docker doesn't clean up after itself, so we do it on exit.
-atexit.register(lambda: subprocess.call(['stty', 'echo']))
+if jobset.platform_string() == 'linux':
+  atexit.register(lambda: subprocess.call(['stty', 'echo']))
 
 ROOT = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '../..'))
 os.chdir(ROOT)
@@ -122,7 +123,7 @@ class CSharpExtArtifact:
     if self.platform == 'windows':
       msbuild_platform = 'Win32' if self.arch == 'x86' else self.arch
       return create_jobspec(self.name,
-                            ['vsprojects\\build_vs2013.bat',
+                            ['tools\\run_tests\\build_artifact_csharp.bat',
                              'vsprojects\\grpc_csharp_ext.sln',
                              '/p:Configuration=Release',
                              '/p:PlatformToolset=v120',