diff --git a/vsprojects/objstore.vcxproj b/vsprojects/objstore.vcxproj
index e04316e79..e9f867eb4 100644
--- a/vsprojects/objstore.vcxproj
+++ b/vsprojects/objstore.vcxproj
@@ -37,6 +37,11 @@
+
+
+ Console
+
+
diff --git a/vsprojects/ray.vcxproj b/vsprojects/ray.vcxproj
index e6c6a3f89..ad64a5ed0 100644
--- a/vsprojects/ray.vcxproj
+++ b/vsprojects/ray.vcxproj
@@ -38,6 +38,11 @@
+
+
+ Console
+
+
@@ -75,22 +80,28 @@
Document
Path $(OutDir);%PATH%
protoc --proto_path="$(SolutionDir)protos" --cpp_out="$(ProjectDir)..\build\generated" "%(FullPath)"
-protoc --proto_path="$(SolutionDir)protos" --plugin=protoc-gen-grpc="$(OutDir)grpc_cpp_plugin.exe" --grpc_out="$(ProjectDir)..\build\generated" "%(FullPath)"
- $(ProjectDir)..\build\generated\%(Filename).pb.h;$(ProjectDir)..\build\generated\%(Filename).pb.cc;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.h;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.cc;%(Outputs)
+protoc --proto_path="$(SolutionDir)protos" --plugin=protoc-gen-grpc="$(OutDir)grpc_cpp_plugin.exe" --grpc_out="$(ProjectDir)..\build\generated" "%(FullPath)"
+protoc --proto_path="$(SolutionDir)protos" --python_out="$(ProjectDir)..\lib\python\ray\internal" "%(FullPath)"
+
+ $(ProjectDir)..\build\generated\%(Filename).pb.h;$(ProjectDir)..\build\generated\%(Filename).pb.cc;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.h;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.cc;$(ProjectDir)..\lib\python\ray\internal\%(Filename)_pb2.py;%(Outputs)
Document
Path $(OutDir);%PATH%
protoc --proto_path="$(SolutionDir)protos" --cpp_out="$(ProjectDir)..\build\generated" "%(FullPath)"
-protoc --proto_path="$(SolutionDir)protos" --plugin=protoc-gen-grpc="$(OutDir)grpc_cpp_plugin.exe" --grpc_out="$(ProjectDir)..\build\generated" "%(FullPath)"
- $(ProjectDir)..\build\generated\%(Filename).pb.h;$(ProjectDir)..\build\generated\%(Filename).pb.cc;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.h;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.cc;%(Outputs)
+protoc --proto_path="$(SolutionDir)protos" --plugin=protoc-gen-grpc="$(OutDir)grpc_cpp_plugin.exe" --grpc_out="$(ProjectDir)..\build\generated" "%(FullPath)"
+protoc --proto_path="$(SolutionDir)protos" --python_out="$(ProjectDir)..\lib\python\ray\internal" "%(FullPath)"
+
+ $(ProjectDir)..\build\generated\%(Filename).pb.h;$(ProjectDir)..\build\generated\%(Filename).pb.cc;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.h;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.cc;$(ProjectDir)..\lib\python\ray\internal\%(Filename)_pb2.py;%(Outputs)
Document
Path $(OutDir);%PATH%
protoc --proto_path="$(SolutionDir)protos" --cpp_out="$(ProjectDir)..\build\generated" "%(FullPath)"
-protoc --proto_path="$(SolutionDir)protos" --plugin=protoc-gen-grpc="$(OutDir)grpc_cpp_plugin.exe" --grpc_out="$(ProjectDir)..\build\generated" "%(FullPath)"
- $(ProjectDir)..\build\generated\%(Filename).pb.h;$(ProjectDir)..\build\generated\%(Filename).pb.cc;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.h;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.cc;%(Outputs)
+protoc --proto_path="$(SolutionDir)protos" --plugin=protoc-gen-grpc="$(OutDir)grpc_cpp_plugin.exe" --grpc_out="$(ProjectDir)..\build\generated" "%(FullPath)"
+protoc --proto_path="$(SolutionDir)protos" --python_out="$(ProjectDir)..\lib\python\ray\internal" "%(FullPath)"
+
+ $(ProjectDir)..\build\generated\%(Filename).pb.h;$(ProjectDir)..\build\generated\%(Filename).pb.cc;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.h;$(ProjectDir)..\build\generated\%(Filename).grpc.pb.cc;$(ProjectDir)..\lib\python\ray\internal\%(Filename)_pb2.py;%(Outputs)
diff --git a/vsprojects/scheduler.vcxproj b/vsprojects/scheduler.vcxproj
index 7c3cc8fe5..a7ca274af 100644
--- a/vsprojects/scheduler.vcxproj
+++ b/vsprojects/scheduler.vcxproj
@@ -37,6 +37,11 @@
+
+
+ Console
+
+