diff --git a/indra/develop.py b/indra/develop.py
index 2dd7b394105e6a98869fcdccf339290942f874d3..928165e765f3e2519b1eb537f3f2d824951b036b 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -543,14 +543,26 @@ def run_cmake(self, args=[]):
         '''Override to add the vstool.exe call after running cmake.'''
         PlatformSetup.run_cmake(self, args)
         if self.unattended == 'OFF':
-            for build_dir in self.build_dirs():
-                vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') +
-                              ' --solution ' +
-                              os.path.join(build_dir,'SecondLife.sln') +
-                              ' --config ' + self.build_type +
-                              ' --startup secondlife-bin')
-                print 'Running %r in %r' % (vstool_cmd, getcwd())
-                self.run(vstool_cmd)        
+            self.run_vstool()
+
+    def run_vstool(self):
+        for build_dir in self.build_dirs():
+            stamp = os.path.join(build_dir, 'vstool.txt')
+            try:
+                prev_build = open(stamp).read().strip()
+            except IOError:
+                prev_build = ''
+            if prev_build == self.build_type:
+                # Only run vstool if the build type has changed.
+                continue
+            vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') +
+                          ' --solution ' +
+                          os.path.join(build_dir,'SecondLife.sln') +
+                          ' --config ' + self.build_type +
+                          ' --startup secondlife-bin')
+            print 'Running %r in %r' % (vstool_cmd, getcwd())
+            self.run(vstool_cmd)        
+            print >> open(stamp, 'w'), self.build_type
         
     def run_build(self, opts, targets):
         cwd = getcwd()