diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index f5dfb91..540c945 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -19,10 +19,10 @@
  <para>
   There are several different ways of building PostgreSQL on
   <productname>Windows</productname>. The simplest way to build with
-  Microsoft tools is to install <productname>Visual Studio Express 2015
+  Microsoft tools is to install <productname>Visual Studio Express 2017
   for Windows Desktop</productname> and use the included
   compiler. It is also possible to build with the full
-  <productname>Microsoft Visual C++ 2005 to 2015</productname>.
+  <productname>Microsoft Visual C++ 2005 to 2017</productname>.
   In some cases that requires the installation of the
   <productname>Windows SDK</productname> in addition to the compiler.
  </para>
@@ -69,19 +69,19 @@
   <productname>Visual Studio Express</productname> or some versions of the
   <productname>Microsoft Windows SDK</productname>. If you do not already have a
   <productname>Visual Studio</productname> environment set up, the easiest
-  ways are to use the compilers from <productname>Visual Studio Express 2015
+  ways are to use the compilers from <productname>Visual Studio Express 2017
   for Windows Desktop</productname> or those in the <productname>Windows SDK
-  7.1</productname>, which are both free downloads from Microsoft.
+  8.1</productname>, which are both free downloads from Microsoft.
  </para>
 
  <para>
   Both 32-bit and 64-bit builds are possible with the Microsoft Compiler suite.
   32-bit PostgreSQL builds are possible with
   <productname>Visual Studio 2005</productname> to
-  <productname>Visual Studio 2015</productname> (including Express editions),
-  as well as standalone Windows SDK releases 6.0 to 7.1.
+  <productname>Visual Studio 2017</productname> (including Express editions),
+  as well as standalone Windows SDK releases 6.0 to 8.1.
   64-bit PostgreSQL builds are supported with
-  <productname>Microsoft Windows SDK</productname> version 6.0a to 7.1 or
+  <productname>Microsoft Windows SDK</productname> version 6.0a to 8.1 or
   <productname>Visual Studio 2008</productname> and above. Compilation
   is supported down to <productname>Windows XP</productname> and
   <productname>Windows Server 2003</> when building with
@@ -89,6 +89,8 @@
   <productname>Visual Studio 2013</productname>. Building with
   <productname>Visual Studio 2015</productname> is supported down to
   <productname>Windows Vista</> and <productname>Windows Server 2008</>.
+   Building with <productname>Visual Studio 2017</productname> is supported
+   down to <productname>Windows 7 SP1</> and <productname>Windows Server 2012 R2</>.
  </para>
 
  <para>
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index d7638b4..074c77e 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -488,4 +488,27 @@ sub new
 	return $self;
 }
 
+package VC2017Project;
+
+#
+# Package that encapsulates a Visual C++ 2017 project file
+#
+
+use strict;
+use warnings;
+use base qw(VC2012Project);
+
+sub new
+{
+	my $classname = shift;
+	my $self      = $classname->SUPER::_new(@_);
+	bless($self, $classname);
+
+	$self->{vcver}           = '14.10';
+	$self->{PlatformToolset} = 'v141';
+	$self->{ToolsVersion}    = '14.1';
+
+	return $self;
+}
+
 1;
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 7d6275e..909771b 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -817,6 +817,32 @@ sub new
 	return $self;
 }
 
+package VS2017Solution;
+
+#
+# Package that encapsulates a Visual Studio 2017 solution file
+#
+
+use Carp;
+use strict;
+use warnings;
+use base qw(Solution);
+
+sub new
+{
+	my $classname = shift;
+	my $self      = $classname->SUPER::_new(@_);
+	bless($self, $classname);
+
+	$self->{solutionFileVersion}        = '12.00';
+	$self->{vcver}                      = '14.10';
+	$self->{visualStudioName}           = 'Visual Studio 2017';
+	$self->{VisualStudioVersion}        = '14.10.25019.0';
+	$self->{MinimumVisualStudioVersion} = '10.0.40219.1';
+
+	return $self;
+}
+
 sub GetAdditionalHeaders
 {
 	my ($self, $f) = @_;
diff --git a/src/tools/msvc/VSObjectFactory.pm b/src/tools/msvc/VSObjectFactory.pm
index 4190ada..eb1095b 100644
--- a/src/tools/msvc/VSObjectFactory.pm
+++ b/src/tools/msvc/VSObjectFactory.pm
@@ -53,8 +53,13 @@ sub CreateSolution
 	{
 		return new VS2015Solution(@_);
 	}
+	elsif ($visualStudioVersion eq '14.10')
+	{
+		return new VS2017Solution(@_);
+	}
 	else
 	{
+		croak $visualStudioVersion;
 		croak "The requested Visual Studio version is not supported.";
 	}
 }
@@ -92,6 +97,10 @@ sub CreateProject
 	{
 		return new VC2015Project(@_);
 	}
+	elsif ($visualStudioVersion eq '14.10')
+	{
+		return new VC2017Project(@_);
+	}
 	else
 	{
 		croak "The requested Visual Studio version is not supported.";
