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 );