diff --git a/templates/vsprojects/vs2013/grpc.sln.template b/templates/vsprojects/vs2013/grpc.sln.template
index fe85d03..18dfb1a 100644
--- a/templates/vsprojects/vs2013/grpc.sln.template
+++ b/templates/vsprojects/vs2013/grpc.sln.template
@@ -11,31 +11,13 @@
 ## Visual Studio uses GUIDs for project types
 ## http://msdn.microsoft.com/en-us/library/hb23x61k%28v=vs.80%29.aspx
 cpp_proj_type = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
-
-for lib in libs:
-  lib.is_library = True
-for target in targets:
-  target.is_library = False
-
-projects = []
-projects.extend(libs)
-projects.extend(targets)
-projects = [project for project in projects if project.get('vs_project_guid', None)]
-
-## Exclude C++ projects for now
-projects = [project for project in projects if not project.language == 'c++']
-
-for p in projects:
-  p.deps = p.get('deps',[])
-
-project_dict = dict([(p.name, p) for p in projects])
 %>\
-% for project in projects:
+% for project in vsprojects:
 Project("${cpp_proj_type}") = "${project.name}", "${project.name}.vcxproj", "${project.vs_project_guid}"
-  % if project.deps:
+  % if project.get('deps', None):
 	ProjectSection(ProjectDependencies) = postProject
-    % for dep in project.deps:
-		${project_dict[dep].vs_project_guid} = ${project_dict[dep].vs_project_guid}
+    % for dep in project.get('deps', []):
+		${vsproject_dict[dep].vs_project_guid} = ${vsproject_dict[dep].vs_project_guid}
     % endfor
 	EndProjectSection
   % endif
@@ -51,7 +33,7 @@
 		Release|Win32 = Release|Win32
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-% for project in projects:
+% for project in vsprojects:
 		${project.vs_project_guid}.Debug|Win32.ActiveCfg = Debug|Win32
 		${project.vs_project_guid}.Debug|Win32.Build.0 = Debug|Win32
 		${project.vs_project_guid}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/templates/vsprojects/vs2013/vcxproj_defs.include b/templates/vsprojects/vs2013/vcxproj_defs.include
index ef12c62..e21230a 100644
--- a/templates/vsprojects/vs2013/vcxproj_defs.include
+++ b/templates/vsprojects/vs2013/vcxproj_defs.include
@@ -2,27 +2,7 @@
 <%def name="get_configuration_type(is_library)">${'StaticLibrary' if is_library else 'Application'}</%def>\
 <%def name="get_subsystem(is_library)">${'Windows' if is_library else 'Console'}</%def>\
 <%def name="gen_project(name, libs, targets)">\
-<%
-## TODO(jtattermusch): this code is c&p from the solution template
-for lib in libs:
-  lib.is_library = True
-for target in targets:
-  target.is_library = False
-
-projects = []
-projects.extend(libs)
-projects.extend(targets)
-projects = [project for project in projects if project.get('vs_project_guid', None)]
-
-## Exclude C++ projects for now
-projects = [project for project in projects if not project.get('c++', False)]
-
-for p in projects:
-  p.deps = p.get('deps',[])
-
-project_dict = dict([(p.name, p) for p in projects])
-%>\
-% for project in projects:
+% for project in vsprojects:
   % if project.name == name:
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
@@ -124,7 +104,7 @@
   <ItemGroup>
     % for dep in project.deps:
     <ProjectReference Include="${dep}.vcxproj">
-      <Project>${project_dict[dep].vs_project_guid}</Project>
+      <Project>${vsproject_dict[dep].vs_project_guid}</Project>
     </ProjectReference>
     % endfor
   </ItemGroup>
diff --git a/tools/buildgen/plugins/generate_vsprojects.py b/tools/buildgen/plugins/generate_vsprojects.py
new file mode 100755
index 0000000..021b843
--- /dev/null
+++ b/tools/buildgen/plugins/generate_vsprojects.py
@@ -0,0 +1,38 @@
+"""Buildgen vsprojects plugin.
+
+This parses the list of libraries, and generates globals "vsprojects"
+and "vsproject_dict", to be used by the visual studio generators.
+
+"""
+
+
+import re
+
+
+def mako_plugin(dictionary):
+  """The exported plugin code for generate_vsprojeccts
+
+  We want to help the work of the visual studio generators.
+
+  """
+
+  libs = dictionary.get('libs', [])
+  targets = dictionary.get('targets', [])
+
+  for lib in libs:
+    lib['is_library'] = True
+  for target in targets:
+    target['is_library'] = False
+
+  projects = []
+  projects.extend(libs)
+  projects.extend(targets)
+  projects = [project for project in projects if project.get('vs_project_guid', None)]
+
+  ## Exclude C++ projects for now
+  projects = [project for project in projects if not project.language == 'c++']
+
+  project_dict = dict([(p['name'], p) for p in projects])
+
+  dictionary['vsprojects'] = projects
+  dictionary['vsproject_dict'] = project_dict
