diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm
index 4f7faae..28e3230 100644
--- a/src/tools/msvc/Install.pm
+++ b/src/tools/msvc/Install.pm
@@ -299,6 +299,16 @@ sub CopyContribFiles
         $mf =~ s{\\s*[\r\n]+}{}mg;
         my $flist = '';
         if ($mf =~ /^DATA_built\s*=\s*(.*)$/m) {$flist .= $1}
+        if ($mf =~ /^PLUGINS\s*=\s*(.*)$/mg) 
+        {
+            mkdir($target . '/lib/plugins') if ( ! -e $target . '/lib/plugins' );
+            foreach my $mod (split /\s+/, $1)
+            {
+                my $lib_name="$mod".'.dll';
+                print "$target\\lib\\$lib_name\n";
+                move("$target\\lib\\$lib_name","$target\\lib\\plugins\\$lib_name") or print "\nunable to find $lib_name\n";
+            }
+        }
         if ($mf =~ /^DATA\s*=\s*(.*)$/m) {$flist .= " $1"}
         $flist =~ s/^\s*//; # Remove leading spaces if we had only DATA_built
 
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 0d86967..cdf1bac 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -393,6 +393,16 @@ sub AddContrib
     my $n = shift;
     my $mf = Project::read_file('contrib\\' . $n . '\Makefile');
 
+    if ($mf =~ /^PLUGINS\s*=\s*(.*)$/mg)
+    {
+        foreach my $mod (split /\s+/, $1)
+        {
+            my $proj = $solution->AddProject($mod, 'dll', 'contrib' );
+            $proj->AddFile('contrib\\' . $n . '\\' . $mod . '.c');
+            $proj->AddReference($postgres);
+            AdjustContribProj($proj);
+        }
+    }	
     if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg)
     {
         my $dn = $1;
@@ -449,6 +459,7 @@ sub AddContrib
         }
         AdjustContribProj($proj);
     }
+    elsif ($mf =~ /^PLUGINS\s*=\s*(.*)$/mg){} 
     else
     {
         croak "Could not determine contrib module type for $n\n";
