diff --git a/Makefile.am b/Makefile.am
index 6e6b6ec2..a0c3e9cf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -178,4 +178,12 @@ EXTRA_DIST += \
scripts/generator/cpp/utils.py \
scripts/generator/gmock_gen.py
-# TODO(wan@google.com): add the MSVC projects to EXTRA_DIST.
+# Microsoft Visual Studio 2005 projects.
+EXTRA_DIST += \
+ msvc/gmock.sln \
+ msvc/gmock.vcproj \
+ msvc/gmock_config.vsprops \
+ msvc/gmock_link_test.vcproj \
+ msvc/gmock_main.vcproj \
+ msvc/gmock_output_test_.vcproj \
+ msvc/gmock_test.vcproj
diff --git a/README b/README
index 0f382147..77610e28 100644
--- a/README
+++ b/README
@@ -178,9 +178,39 @@ TODO(chandlerc@google.com): Fixes the above instructions to match the
actual implementation.
### Windows ###
-We don't have the Visual Studio project files for Google Mock ready
-yet. Please see the next two sections on how you can integrate Google
-Mock into your project's build system.
+The msvc/ directory contains VC++ 2005 projects for building Google Mock and
+selected tests. In order to build Google Mock you must have an implementation
+of TR1 tuple. One library that provides such implementation is Boost. If you
+choose to use Boost, download it from www.boost.org and install it on your
+system. After that you have two options: either configure Boost as a system
+library or modify the Google Mock project to point to your copy of Boost. The
+former solution will let all your tests use the same copy of Boost while the
+latter one will let each of your projects use its own copy of Boost. You can
+also use a hybrid solution: your project settings will override the system-wide
+one.
+
+For example, if you unpacked boost v1.36.0 into C:\boost:
+To configure Boost as a system library.
+ * Assuming you are using the Visual Studio 2008 IDE, select Tools |
+ Options | Projects And Solutions | VC++ Directories.
+ * In the "Show directories for" drop-down select Include Files. Add
+ * C:\boost\boost_1_36_0\boost\tr1\tr1 and C:\boost\boost_1_36_0
+ to the list of directories.
+
+To configure your project to point to that version of Boost, replace
+the value of the BoostDir user macro with C:\boost\boost_1_36_0 in the
+msvc/gtest_dep.vsprops file. You can use any text editor to edit that file.
+
+If you want to use a version of Google Test other then the one bundled with
+Google Mock, change the value of the GTestDir macro in gmock_config.vsprop
+to point to the new location.
+
+After configuring Boost, just open msvc/gmock.sln and build the library and
+tests. If you want to create your own project to use with Google Mock, you'll
+have to configure it to use the gmock_config propety sheet. For that:
+ * Open the Property Manager window (View/Other Windows/Property Manager)
+ * Right-click on your project and select "Add Existing Property Sheet..."
+ * Navigate to gmock_config.vsprops and select it.
### Using GNU Make ###
The make/ directory contains a Makefile that you can use to build
diff --git a/msvc/gmock.sln b/msvc/gmock.sln
new file mode 100755
index 00000000..d084ee71
--- /dev/null
+++ b/msvc/gmock.sln
@@ -0,0 +1,44 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "gmock.vcproj", "{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_test", "gmock_test.vcproj", "{F10D22F8-AC7B-4213-8720-608E7D878CD2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_link_test", "gmock_link_test.vcproj", "{ED597847-A714-4327-B569-70029D2311F0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_output_test_", "gmock_output_test_.vcproj", "{EDCE4C87-C2C0-4D22-98AC-7B6466F89A15}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_main", "gmock_main.vcproj", "{E4EF614B-30DF-4954-8C53-580A0BF6B589}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Debug|Win32.Build.0 = Debug|Win32
+ {34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Release|Win32.ActiveCfg = Release|Win32
+ {34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Release|Win32.Build.0 = Release|Win32
+ {F10D22F8-AC7B-4213-8720-608E7D878CD2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F10D22F8-AC7B-4213-8720-608E7D878CD2}.Debug|Win32.Build.0 = Debug|Win32
+ {F10D22F8-AC7B-4213-8720-608E7D878CD2}.Release|Win32.ActiveCfg = Release|Win32
+ {F10D22F8-AC7B-4213-8720-608E7D878CD2}.Release|Win32.Build.0 = Release|Win32
+ {ED597847-A714-4327-B569-70029D2311F0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ED597847-A714-4327-B569-70029D2311F0}.Debug|Win32.Build.0 = Debug|Win32
+ {ED597847-A714-4327-B569-70029D2311F0}.Release|Win32.ActiveCfg = Release|Win32
+ {ED597847-A714-4327-B569-70029D2311F0}.Release|Win32.Build.0 = Release|Win32
+ {EDCE4C87-C2C0-4D22-98AC-7B6466F89A15}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDCE4C87-C2C0-4D22-98AC-7B6466F89A15}.Debug|Win32.Build.0 = Debug|Win32
+ {EDCE4C87-C2C0-4D22-98AC-7B6466F89A15}.Release|Win32.ActiveCfg = Release|Win32
+ {EDCE4C87-C2C0-4D22-98AC-7B6466F89A15}.Release|Win32.Build.0 = Release|Win32
+ {E4EF614B-30DF-4954-8C53-580A0BF6B589}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E4EF614B-30DF-4954-8C53-580A0BF6B589}.Debug|Win32.Build.0 = Debug|Win32
+ {E4EF614B-30DF-4954-8C53-580A0BF6B589}.Release|Win32.ActiveCfg = Release|Win32
+ {E4EF614B-30DF-4954-8C53-580A0BF6B589}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/msvc/gmock.vcproj b/msvc/gmock.vcproj
new file mode 100755
index 00000000..a58ed364
--- /dev/null
+++ b/msvc/gmock.vcproj
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/gmock_config.vsprops b/msvc/gmock_config.vsprops
new file mode 100755
index 00000000..93e28686
--- /dev/null
+++ b/msvc/gmock_config.vsprops
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/msvc/gmock_link_test.vcproj b/msvc/gmock_link_test.vcproj
new file mode 100755
index 00000000..3f2eea1e
--- /dev/null
+++ b/msvc/gmock_link_test.vcproj
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/gmock_main.vcproj b/msvc/gmock_main.vcproj
new file mode 100755
index 00000000..e9581158
--- /dev/null
+++ b/msvc/gmock_main.vcproj
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/gmock_output_test_.vcproj b/msvc/gmock_output_test_.vcproj
new file mode 100755
index 00000000..bcbd96f0
--- /dev/null
+++ b/msvc/gmock_output_test_.vcproj
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/gmock_test.vcproj b/msvc/gmock_test.vcproj
new file mode 100755
index 00000000..5263d867
--- /dev/null
+++ b/msvc/gmock_test.vcproj
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+