Author: brett
Date: Sat Jul 12 15:50:00 2014
New Revision: 1609950

URL: http://svn.apache.org/r1609950
Log:
handle mismatched msbuild versions with the installed Visual Studio tools

Modified:
    
incubator/npanday/trunk/components/dotnet-msbuild/src/main/java/npanday/msbuild/xdt/XmlDocumentTransformer.java

Modified: 
incubator/npanday/trunk/components/dotnet-msbuild/src/main/java/npanday/msbuild/xdt/XmlDocumentTransformer.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-msbuild/src/main/java/npanday/msbuild/xdt/XmlDocumentTransformer.java?rev=1609950&r1=1609949&r2=1609950&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-msbuild/src/main/java/npanday/msbuild/xdt/XmlDocumentTransformer.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-msbuild/src/main/java/npanday/msbuild/xdt/XmlDocumentTransformer.java
 Sat Jul 12 15:50:00 2014
@@ -30,6 +30,7 @@ import npanday.msbuild.MsbuildException;
 import npanday.msbuild.MsbuildInvocationParameters;
 import npanday.msbuild.MsbuildInvoker;
 import npanday.vendor.VendorRequirement;
+import org.codehaus.plexus.interpolation.os.Os;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -90,6 +91,7 @@ public class XmlDocumentTransformer
         parameters.setProperty( "Source", baseFile.getAbsolutePath() );
         parameters.setProperty( "Transform", 
transformationFile.getAbsolutePath() );
         parameters.setProperty( "Destination", targetFile.getAbsolutePath() );
+        parameters.setProperty( "VisualStudioVersion", findRequiredVSVersion() 
);
 
         targetFile.getParentFile().mkdirs();
 
@@ -106,6 +108,32 @@ public class XmlDocumentTransformer
         }
     }
 
+    private static String findRequiredVSVersion() throws 
XmlDocumentTransformException {
+        if (Os.isArch("amd64")) {
+            return findRequiredVSVersion(System.getenv("PROGRAMFILES(X86)"));
+        }
+        else {
+            return findRequiredVSVersion(System.getenv("PROGRAMFILES"));
+        }
+    }
+
+    private static String findRequiredVSVersion(String programfiles) throws 
XmlDocumentTransformException {
+        File[] dirs = new File( programfiles, "MSBuild/Microsoft/VisualStudio" 
).listFiles();
+        String version = null;
+        if (dirs != null) {
+            for (File dir : dirs) {
+                if (new File(dir, 
"Web/Microsoft.Web.Publishing.Tasks.dll").exists()) {
+                    version = dir.getName().substring(1);
+                }
+            }
+        }
+        if (version == null) {
+            throw new XmlDocumentTransformException("Unable to find required 
tasks file in '" + programfiles +
+                    "\\MSBuild\\Microsoft\\VisualStudio'");
+        }
+        return version;
+    }
+
     private File extractResource( String resourceName ) throws IOException
     {
         final URL resource = Resources.getResource( getClass(), resourceName );


Reply via email to