diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index b09872e018..085f48f984 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -830,36 +830,48 @@ EOF
 		close($chs);
 	}
 
-	if (IsNewer(
-			'src/backend/nodes/node-support-stamp',
-			'src/backend/nodes/gen_node_support.pl'))
-	{
-		# XXX duplicates node_headers list in src/backend/nodes/Makefile
-		my @node_headers = qw(
-		  nodes/nodes.h
-		  nodes/primnodes.h
-		  nodes/parsenodes.h
-		  nodes/pathnodes.h
-		  nodes/plannodes.h
-		  nodes/execnodes.h
-		  access/amapi.h
-		  access/sdir.h
-		  access/tableam.h
-		  access/tsmapi.h
-		  commands/event_trigger.h
-		  commands/trigger.h
-		  executor/tuptable.h
-		  foreign/fdwapi.h
-		  nodes/extensible.h
-		  nodes/lockoptions.h
-		  nodes/replnodes.h
-		  nodes/supportnodes.h
-		  nodes/value.h
-		  utils/rel.h
+	# XXX duplicates node_headers list in src/backend/nodes/Makefile
+	my @node_headers = qw(
+		nodes/nodes.h
+		nodes/primnodes.h
+		nodes/parsenodes.h
+		nodes/pathnodes.h
+		nodes/plannodes.h
+		nodes/execnodes.h
+		access/amapi.h
+		access/sdir.h
+		access/tableam.h
+		access/tsmapi.h
+		commands/event_trigger.h
+		commands/trigger.h
+		executor/tuptable.h
+		foreign/fdwapi.h
+		nodes/extensible.h
+		nodes/lockoptions.h
+		nodes/replnodes.h
+		nodes/supportnodes.h
+		nodes/value.h
+		utils/rel.h
 		);
 
-		my @node_files = map { "src/include/$_" } @node_headers;
+	my @node_files = map { "src/include/$_" } @node_headers;
 
+	my $need_node_support = 0;
+	foreach my $nodefile (@node_files)
+	{
+		if (IsNewer('src/backend/nodes/node-support-stamp', $nodefile))
+		{
+			$need_node_support = 1;
+			last;
+		}
+	}
+	$need_node_support = 1
+	  if IsNewer(
+		'src/backend/nodes/node-support-stamp',
+		'src/backend/nodes/gen_node_support.pl');
+
+	if ($need_node_support)
+	{
 		system("perl src/backend/nodes/gen_node_support.pl --outdir src/backend/nodes @node_files");
 		open(my $f, '>', 'src/backend/nodes/node-support-stamp')
 		  || confess "Could not touch node-support-stamp";
