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 @@
There are several different ways of building PostgreSQL on
Windows. The simplest way to build with
- Microsoft tools is to install Visual Studio Express 2015
+ Microsoft tools is to install Visual Studio Express 2017
for Windows Desktop and use the included
compiler. It is also possible to build with the full
- Microsoft Visual C++ 2005 to 2015.
+ Microsoft Visual C++ 2005 to 2017.
In some cases that requires the installation of the
Windows SDK in addition to the compiler.
@@ -69,19 +69,19 @@
Visual Studio Express or some versions of the
Microsoft Windows SDK. If you do not already have a
Visual Studio environment set up, the easiest
- ways are to use the compilers from Visual Studio Express 2015
+ ways are to use the compilers from Visual Studio Express 2017
for Windows Desktop or those in the Windows SDK
- 7.1, which are both free downloads from Microsoft.
+ 8.1, which are both free downloads from Microsoft.
Both 32-bit and 64-bit builds are possible with the Microsoft Compiler suite.
32-bit PostgreSQL builds are possible with
Visual Studio 2005 to
- Visual Studio 2015 (including Express editions),
- as well as standalone Windows SDK releases 6.0 to 7.1.
+ Visual Studio 2017 (including Express editions),
+ as well as standalone Windows SDK releases 6.0 to 8.1.
64-bit PostgreSQL builds are supported with
- Microsoft Windows SDK version 6.0a to 7.1 or
+ Microsoft Windows SDK version 6.0a to 8.1 or
Visual Studio 2008 and above. Compilation
is supported down to Windows XP and
Windows Server 2003> when building with
@@ -89,6 +89,8 @@
Visual Studio 2013. Building with
Visual Studio 2015 is supported down to
Windows Vista> and Windows Server 2008>.
+ Building with Visual Studio 2017 is supported
+ down to Windows 7 SP1> and Windows Server 2012 R2>.
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.";