   (dorun (map #(replace-in-file! % pat new-val) files)))
 
 (defn fix-output-file-tags!
-  "Fix the dll output path specified in all vcproj files."
+  "Fix the dll output path specified in all vcxproj files."
   []
-  (replace-in-files! (device-vcproj-files)
+  (replace-in-files! (device-vcxproj-files)
                     #"\$\(OutDir\)/.+?\.dll" "\\$(OutDir)/mmgr_dal_\\$(ProjectName).dll"))
     
-(defn find-copy-step [vcproj]
-  (re-find #"\"copy .+?\"" (slurp vcproj)))
-
-(defn bad-copy-step [vcproj]
-  (not (.contains (or (find-copy-step vcproj) "PlatformName") "PlatformName")))
+(defn find-copy-step [vcxproj]
+  (re-find #"\"copy .+?\"" (slurp vcxproj)))
+
+(defn bad-copy-step [vcxproj]
+  (not (.contains (or (find-copy-step vcxproj) "PlatformName") "PlatformName")))
 
 (defn all-bad-copy-steps
-  "Find all vcproj files with a bad post-build copy step"
+  "Find all vcxproj files with a bad post-build copy step"
   []
-  (filter bad-copy-step (device-vcproj-files)))
-
-(defn find-pdb [vcproj]
-  (re-find #"\".*?\.pdb\"" (slurp vcproj)))
+  (filter bad-copy-step (device-vcxproj-files)))
+
+(defn find-pdb [vcxproj]
+  (re-find #"\".*?\.pdb\"" (slurp vcxproj)))
 
 (defn fix-pdb-file-tags!
-  "Fix the pdb file path specified in all vcproj files."
+  "Fix the pdb file path specified in all vcxproj files."
   []
-  (replace-in-files! (device-vcproj-files)
+  (replace-in-files! (device-vcxproj-files)
                     #"\".*?\.pdb\"" "\"\\$(OutDir)/\\$(ProjectName).pdb\""))
 
 

(defn get-dll-names [bits]
  (map dll-name (device-adapter-dlls (dll-dir bits))))

(def helper-vcprojs #{"DEClientLib" "DEMessaging"})

(defn missing-device-adapters [bits]
  (let [dll-names (get-dll-names bits)
        project-names (map project-name (filter #(not (.. % getAbsolutePath (contains "_ATTIC")))
                                          (device-vcproj-files)))]
    (sort (clojure.set/difference (set project-names)
                                  #{nil}
                                  (set dll-names)
                                  (do-not-build)
                                  helper-vcprojs))))

(defn all-devices []
  (let [dll-names (get-dll-names 32)]
        (clojure.set/difference
          (clojure.set/union (set non-windows-device-adapters)
                             (missing-vcproj)
                             (set dll-names))
          (do-not-build))))


    (filter #(.. % getName (endsWith ending))
            (mapcat file-seq parent-dirs))))

(defn missing-vcxproj []
  (let [device-adapter-dirs (device-adapter-dirs)
        directories-without-vcxproj
        (filter identity
                (for [device-adapter-dir device-adapter-dirs]
                  (when (empty? (filter #(.. % getName (endsWith ".vcxproj"))
                                        (file-seq device-adapter-dir)))
                    device-adapter-dir)))]
        (sort
          (clojure.set/difference
            (set (map #(.getName %) directories-without-vcxproj))
            (do-not-build)
            non-windows-device-adapters))))

(defn device-vcxproj-files []
    (filter #(.. % getName (endsWith ".vcxproj"))
