diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx
index ef9487d635fb333521a8e0c3a46ecef35914e9ae..ad31d5a2a15aa90be7cc87cfde29a0337bda2db5 100644
--- a/Source/cmGlobalVisualStudio71Generator.cxx
+++ b/Source/cmGlobalVisualStudio71Generator.cxx
@@ -56,6 +56,9 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
   bool doneCheckBuild = false;
   bool doneRunTests = false;
   bool doneInstall  = false;
+  bool doneEditCache = false;
+  bool doneRebuildCache = false;
+  bool donePackage = false;
   
   // For each cmMakefile, create a VCProj for it, and
   // add it to this SLN file
@@ -176,6 +179,39 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
               doneRunTests = true;
               }
             }
+          if(l->first == "EDIT_CACHE")
+            {
+            if(doneEditCache)
+              {
+              skip = true;
+              }
+            else
+              {
+              doneEditCache = true;
+              }
+            }
+          if(l->first == "REBUILD_CACHE")
+            {
+            if(doneRebuildCache)
+              {
+              skip = true;
+              }
+            else
+              {
+              doneRebuildCache = true;
+              }
+            }
+          if(l->first == "PACKAGE")
+            {
+            if(donePackage)
+              {
+              skip = true;
+              }
+            else
+              {
+              donePackage = true;
+              }
+            }
           if(!skip)
             {
             this->WriteProject(fout, si->c_str(), dir.c_str(),l->second);