You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nmaven-commits@incubator.apache.org by si...@apache.org on 2007/03/21 07:55:12 UTC

svn commit: r520789 - in /incubator/nmaven/branches/SI_IDE: assemblies/NMaven.Plugin.Settings/ assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/ components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/ components...

Author: sisbell
Date: Wed Mar 21 00:55:10 2007
New Revision: 520789

URL: http://svn.apache.org/viewvc?view=rev&rev=520789
Log:
Implementation for nmaven-24. The sdkInstallRoot is now set so that programs like xsd and wsdl no longer require there location on the path. This allows easy switching (by chaning the nmaven-settings.xml file) between Mono and MS on Windows. Still need to verify everything working on Linux.

Modified:
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/nmaven-settings.xsd
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/pom.xml
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/SettingsGenerator.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/nmavenSettings.cs
    incubator/nmaven/branches/SI_IDE/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/ArtifactInstallerImpl.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/ExecutableConfig.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/CSharpCompilerForProfile.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DefaultCompiler.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DotGNUCompiler.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/NemerleCompiler.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/PhpCompiler.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultNetExecutable.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultRepositoryNetExecutable.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/NetExecutableFactoryImpl.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/ThreadedNetExecutable.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfo.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java
    incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java
    incubator/nmaven/branches/SI_IDE/plugins/maven-xsd-plugin/src/main/java/org/apache/maven/dotnet/plugin/xsd/XsdGeneratorMojo.java

Modified: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/nmaven-settings.xsd
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/nmaven-settings.xsd?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/nmaven-settings.xsd (original)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/nmaven-settings.xsd Wed Mar 21 00:55:10 2007
@@ -32,6 +32,7 @@
                               <xs:sequence>
                                 <xs:element name="frameworkVersion" type="xs:string" minOccurs="0" maxOccurs="1"/>
                                 <xs:element name="installRoot" type="xs:string" minOccurs="0" maxOccurs="1"/>
+                                <xs:element name="sdkInstallRoot" type="xs:string" minOccurs="0" maxOccurs="1"/>
                                 <xs:element name="executablePaths" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                      <xs:sequence>

Modified: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/pom.xml?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/pom.xml (original)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/pom.xml Wed Mar 21 00:55:10 2007
@@ -47,7 +47,7 @@
               </execution>
             </executions>
             <configuration>
-              <xsdFile>${basedir}/nmaven-settings.xsd</xsdFile>
+              <xsdFile>nmaven-settings.xsd</xsdFile>
               <frameworkVersion>1.1.4322</frameworkVersion>
             </configuration>
           </plugin>

Modified: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/SettingsGenerator.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/SettingsGenerator.cs?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/SettingsGenerator.cs (original)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/SettingsGenerator.cs Wed Mar 21 00:55:10 2007
@@ -45,7 +45,7 @@
             settings.defaultSetup = GetDefaultSetup(defaultMonoCLR,
                 (string) microsoftRegistryKey.GetValue("InstallRoot"));
 
-            nmavenSettingsVendor[] microsoftVendors = null;
+            nmavenSettingsVendorsVendor[] microsoftVendors = null;
             try
             {
                 microsoftVendors = GetVendorsForMicrosoft(microsoftRegistryKey);
@@ -55,7 +55,7 @@
                 Console.WriteLine(e.ToString());
             }
 
-            nmavenSettingsVendor[] monoVendors = null;
+            nmavenSettingsVendorsVendor[] monoVendors = null;
             try
             {
                 monoVendors = GetVendorsForMono(monoRegistryKey, defaultMonoCLR);
@@ -65,7 +65,7 @@
                 Console.WriteLine(e.ToString());
             }
 
-            nmavenSettingsVendor dotGnuVendor = null;
+            nmavenSettingsVendorsVendor dotGnuVendor = null;
             try
             {
                 dotGnuVendor = GetVendorForGnu(Environment.GetEnvironmentVariable("CSCC_LIB_PATH"));
@@ -78,8 +78,8 @@
             int dotGnuVendorLength = (dotGnuVendor == null) ? 0: 1;
             int microsoftVendorsLength = (microsoftVendors == null) ? 0: microsoftVendors.Length;
 
-            nmavenSettingsVendor[] vendors =
-                new nmavenSettingsVendor[microsoftVendorsLength + monoVendorsLength + dotGnuVendorLength];
+            nmavenSettingsVendorsVendor[] vendors =
+                new nmavenSettingsVendorsVendor[microsoftVendorsLength + monoVendorsLength + dotGnuVendorLength];
 
             int copyLocation = 0;
             if(microsoftVendors != null)
@@ -153,7 +153,7 @@
             return null;
         }
 
-        protected nmavenSettingsVendor GetVendorForGnu(String libPath)
+        protected nmavenSettingsVendorsVendor GetVendorForGnu(String libPath)
         {
             if(libPath == null)
                 throw new ExecutionException("NMAVEN-9011-000: No CSCC_LIB_PATH Found");
@@ -169,11 +169,12 @@
                         vendorVersion + ", Root = " + installR);
                 }
 
-                nmavenSettingsVendor vendor = new nmavenSettingsVendor();
+                nmavenSettingsVendorsVendor vendor = new nmavenSettingsVendorsVendor();
                 vendor.vendorName = "DotGNU";
                 vendor.vendorVersion = vendorVersion;
-                nmavenSettingsVendorFramework[] vendorFrameworks = new nmavenSettingsVendorFramework[1];
-                nmavenSettingsVendorFramework vf = new nmavenSettingsVendorFramework();
+                nmavenSettingsVendorsVendorFrameworksFramework[] vendorFrameworks 
+                	= new nmavenSettingsVendorsVendorFrameworksFramework[1];
+                nmavenSettingsVendorsVendorFrameworksFramework vf = new nmavenSettingsVendorsVendorFrameworksFramework();
                 vf.installRoot = Path.Combine(installR, "bin");
                 vf.frameworkVersion = "2.0.50727";//doesn't matter
                 vendorFrameworks[0] = vf;                                                    ;
@@ -183,54 +184,65 @@
             throw new ExecutionException("NMAVEN-9011-002: CSCC_LIB_PATH found but could not determine vendor information");
         }
 
-        private nmavenSettingsVendor[] GetVendorsForMicrosoft(RegistryKey microsoftRegistryKey)
+        private nmavenSettingsVendorsVendor[] GetVendorsForMicrosoft(RegistryKey microsoftRegistryKey)
         {
             if(microsoftRegistryKey == null)
                 throw new ExecutionException("NMAVEN-9011-006: Microsoft installation could not be found.");
             string installRoot = (string) microsoftRegistryKey.GetValue("InstallRoot");
+            string sdkInstallRoot11 = (string) microsoftRegistryKey.GetValue("sdkInstallRootv1.1");
+            string sdkInstallRoot20 = (string) microsoftRegistryKey.GetValue("sdkInstallRootv2.0");
+            
             if(installRoot == null) throw new ExecutionException("NMAVEN-9011-005");
 
-            nmavenSettingsVendor[] vendors = new nmavenSettingsVendor[3];
+            nmavenSettingsVendorsVendor[] vendors = new nmavenSettingsVendorsVendor[3];
             DirectoryInfo dirInfo11 = new DirectoryInfo(Path.Combine(installRoot, "v1.1.4322"));
             DirectoryInfo dirInfo20 = new DirectoryInfo(Path.Combine(installRoot, "v2.0.50727"));
             DirectoryInfo dirInfo30 = new DirectoryInfo(Path.Combine(installRoot, "v3.0"));
             int vendorCounter = 0;
             if (dirInfo11.Exists)
             {
-                nmavenSettingsVendor vendor = new nmavenSettingsVendor();
+                nmavenSettingsVendorsVendor vendor = new nmavenSettingsVendorsVendor();
                 vendor.vendorName = "MICROSOFT";
                 vendor.vendorVersion = "1.1.4322";
-                nmavenSettingsVendorFramework[] vendorFrameworks = new nmavenSettingsVendorFramework[1];
-                nmavenSettingsVendorFramework vf11 = new nmavenSettingsVendorFramework();
+                nmavenSettingsVendorsVendorFrameworksFramework[] vendorFrameworks 
+                	= new nmavenSettingsVendorsVendorFrameworksFramework[1];
+                nmavenSettingsVendorsVendorFrameworksFramework vf11 
+                	= new nmavenSettingsVendorsVendorFrameworksFramework();
                 vf11.installRoot = dirInfo11.FullName;
                 vf11.frameworkVersion = "1.1.4322";
+                
                 vendorFrameworks[0] = vf11;
+                vf11.sdkInstallRoot = sdkInstallRoot11;
                 vendor.frameworks = vendorFrameworks;
+                
                 vendors[vendorCounter++] = vendor;
             }
             if (dirInfo20.Exists)
             {
-                nmavenSettingsVendor vendor = new nmavenSettingsVendor();
+                nmavenSettingsVendorsVendor vendor = new nmavenSettingsVendorsVendor();
                 vendor.vendorName = "MICROSOFT";
                 vendor.vendorVersion = "2.0.50727";
-                nmavenSettingsVendorFramework[] vendorFrameworks = new nmavenSettingsVendorFramework[1];
-                nmavenSettingsVendorFramework vf11 = new nmavenSettingsVendorFramework();
+                nmavenSettingsVendorsVendorFrameworksFramework[] vendorFrameworks 
+                	= new nmavenSettingsVendorsVendorFrameworksFramework[1];
+                nmavenSettingsVendorsVendorFrameworksFramework vf11 = new nmavenSettingsVendorsVendorFrameworksFramework();
                 vf11.installRoot = dirInfo20.FullName;
                 vf11.frameworkVersion = "2.0.50727";
                 vendorFrameworks[0] = vf11;
+                vf11.sdkInstallRoot = sdkInstallRoot20;
                 vendor.frameworks = vendorFrameworks;
                 vendors[vendorCounter++] = vendor;
             }
             if (dirInfo30.Exists)
             {
-                nmavenSettingsVendor vendor = new nmavenSettingsVendor();
+                nmavenSettingsVendorsVendor vendor = new nmavenSettingsVendorsVendor();
                 vendor.vendorName = "MICROSOFT";
                 vendor.vendorVersion = "3.0";
-                nmavenSettingsVendorFramework[] vendorFrameworks = new nmavenSettingsVendorFramework[1];
-                nmavenSettingsVendorFramework vf11 = new nmavenSettingsVendorFramework();
+                nmavenSettingsVendorsVendorFrameworksFramework[] vendorFrameworks = new nmavenSettingsVendorsVendorFrameworksFramework[1];
+                nmavenSettingsVendorsVendorFrameworksFramework vf11 = new nmavenSettingsVendorsVendorFrameworksFramework();
                 vf11.installRoot = dirInfo30.FullName;
                 vf11.frameworkVersion = "3.0";
                 vendorFrameworks[0] = vf11;
+                vf11.sdkInstallRoot = sdkInstallRoot20;
                 vendor.frameworks = vendorFrameworks;
                 vendors[vendorCounter++] = vendor;
             }
@@ -238,11 +250,11 @@
             return vendors;
         }
 
-        private nmavenSettingsVendor[] GetVendorsForMono(RegistryKey monoRegistryKey, string defaultMonoCLR)
+        private nmavenSettingsVendorsVendor[] GetVendorsForMono(RegistryKey monoRegistryKey, string defaultMonoCLR)
         {
             if(monoRegistryKey == null)
                 throw new ExecutionException("NMAVEN-9011-007: Mono installation could not be found.");
-            nmavenSettingsVendor[] vendors = new nmavenSettingsVendor[monoRegistryKey.SubKeyCount];
+            nmavenSettingsVendorsVendor[] vendors = new nmavenSettingsVendorsVendor[monoRegistryKey.SubKeyCount];
             int i = 0;
             foreach (string keyName in monoRegistryKey.GetSubKeyNames())
             {
@@ -250,18 +262,18 @@
                 if(sdkInstallRoot == null)
                     throw new ExecutionException("NMAVEN-9011-004: Could not find install root key for mono");
                 string installRoot = Path.Combine(sdkInstallRoot, "bin");
-                nmavenSettingsVendorFramework[] vendorFrameworks = new nmavenSettingsVendorFramework[2];
-                nmavenSettingsVendorFramework vf11 = new nmavenSettingsVendorFramework();
+                nmavenSettingsVendorsVendorFrameworksFramework[] vendorFrameworks = new nmavenSettingsVendorsVendorFrameworksFramework[2];
+                nmavenSettingsVendorsVendorFrameworksFramework vf11 = new nmavenSettingsVendorsVendorFrameworksFramework();
                 vf11.installRoot = installRoot;
                 vf11.frameworkVersion = "1.1.4322";
                 vendorFrameworks[0] = vf11;
 
-                nmavenSettingsVendorFramework vf20 = new nmavenSettingsVendorFramework();
+                nmavenSettingsVendorsVendorFrameworksFramework vf20 = new nmavenSettingsVendorsVendorFrameworksFramework();
                 vf20.installRoot = installRoot;
                 vf20.frameworkVersion = "2.0.50727";
                 vendorFrameworks[1] = vf20;
 
-                nmavenSettingsVendor vendor = new nmavenSettingsVendor();
+                nmavenSettingsVendorsVendor vendor = new nmavenSettingsVendorsVendor();
                 vendor.vendorName = "MONO";
                 vendor.vendorVersion = keyName;
                 vendor.frameworks = vendorFrameworks;

Modified: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/nmavenSettings.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/nmavenSettings.cs?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/nmavenSettings.cs (original)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Plugin.Settings/src/main/csharp/Plugin/Settings/nmavenSettings.cs Wed Mar 21 00:55:10 2007
@@ -1,261 +1,89 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.42
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-using System.Xml.Serialization;
-
-// 
-// This source code was auto-generated by xsd, Version=2.0.50727.42.
-// 
-
-
-/// <remarks/>
-[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
-[System.SerializableAttribute()]
-[System.Diagnostics.DebuggerStepThroughAttribute()]
-[System.ComponentModel.DesignerCategoryAttribute("code")]
-[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
-public partial class nmavenSettings {
-    
-    private string operatingSystemField;
-    
-    private string architectureField;
-    
-    private nmavenSettingsDefaultSetup defaultSetupField;
-    
-    private nmavenSettingsVendor[] vendorsField;
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string operatingSystem {
-        get {
-            return this.operatingSystemField;
-        }
-        set {
-            this.operatingSystemField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string architecture {
-        get {
-            return this.architectureField;
-        }
-        set {
-            this.architectureField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public nmavenSettingsDefaultSetup defaultSetup {
-        get {
-            return this.defaultSetupField;
-        }
-        set {
-            this.defaultSetupField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    [System.Xml.Serialization.XmlArrayItemAttribute("vendor", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
-    public nmavenSettingsVendor[] vendors {
-        get {
-            return this.vendorsField;
-        }
-        set {
-            this.vendorsField = value;
-        }
-    }
-}
-
-/// <remarks/>
-[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
-[System.SerializableAttribute()]
-[System.Diagnostics.DebuggerStepThroughAttribute()]
-[System.ComponentModel.DesignerCategoryAttribute("code")]
-[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-public partial class nmavenSettingsDefaultSetup {
-    
-    private string vendorNameField;
-    
-    private string vendorVersionField;
-    
-    private string frameworkVersionField;
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string vendorName {
-        get {
-            return this.vendorNameField;
-        }
-        set {
-            this.vendorNameField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string vendorVersion {
-        get {
-            return this.vendorVersionField;
-        }
-        set {
-            this.vendorVersionField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string frameworkVersion {
-        get {
-            return this.frameworkVersionField;
-        }
-        set {
-            this.frameworkVersionField = value;
-        }
-    }
-}
-
-/// <remarks/>
-[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
-[System.SerializableAttribute()]
-[System.Diagnostics.DebuggerStepThroughAttribute()]
-[System.ComponentModel.DesignerCategoryAttribute("code")]
-[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-public partial class nmavenSettingsVendor {
-    
-    private string vendorNameField;
-    
-    private string vendorVersionField;
-    
-    private string isDefaultField;
-    
-    private nmavenSettingsVendorFramework[] frameworksField;
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string vendorName {
-        get {
-            return this.vendorNameField;
-        }
-        set {
-            this.vendorNameField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string vendorVersion {
-        get {
-            return this.vendorVersionField;
-        }
-        set {
-            this.vendorVersionField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string isDefault {
-        get {
-            return this.isDefaultField;
-        }
-        set {
-            this.isDefaultField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    [System.Xml.Serialization.XmlArrayItemAttribute("framework", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
-    public nmavenSettingsVendorFramework[] frameworks {
-        get {
-            return this.frameworksField;
-        }
-        set {
-            this.frameworksField = value;
-        }
-    }
-}
-
-/// <remarks/>
-[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
-[System.SerializableAttribute()]
-[System.Diagnostics.DebuggerStepThroughAttribute()]
-[System.ComponentModel.DesignerCategoryAttribute("code")]
-[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-public partial class nmavenSettingsVendorFramework {
-    
-    private string frameworkVersionField;
-    
-    private string installRootField;
-    
-    private string[] executablePathsField;
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string frameworkVersion {
-        get {
-            return this.frameworkVersionField;
-        }
-        set {
-            this.frameworkVersionField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    public string installRoot {
-        get {
-            return this.installRootField;
-        }
-        set {
-            this.installRootField = value;
-        }
-    }
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
-    [System.Xml.Serialization.XmlArrayItemAttribute("executablePath", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
-    public string[] executablePaths {
-        get {
-            return this.executablePathsField;
-        }
-        set {
-            this.executablePathsField = value;
-        }
-    }
-}
-
-/// <remarks/>
-[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
-[System.SerializableAttribute()]
-[System.Diagnostics.DebuggerStepThroughAttribute()]
-[System.ComponentModel.DesignerCategoryAttribute("code")]
-[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
-public partial class NewDataSet {
-    
-    private nmavenSettings[] itemsField;
-    
-    /// <remarks/>
-    [System.Xml.Serialization.XmlElementAttribute("nmavenSettings")]
-    public nmavenSettings[] Items {
-        get {
-            return this.itemsField;
-        }
-        set {
-            this.itemsField = value;
-        }
-    }
-}
+// ------------------------------------------------------------------------------
+//  <autogenerated>
+//      This code was generated by a tool.
+//      Mono Runtime Version: 1.1.4322.2032
+// 
+//      Changes to this file may cause incorrect behavior and will be lost if 
+//      the code is regenerated.
+//  </autogenerated>
+// ------------------------------------------------------------------------------
+
+// 
+//This source code was auto-generated by MonoXSD
+//
+namespace NMaven.Plugin.Settings {
+    
+    
+    /// <remarks/>
+    public class nmavenSettings {
+        
+        /// <remarks/>
+        public string operatingSystem;
+        
+        /// <remarks/>
+        public string architecture;
+        
+        /// <remarks/>
+        public nmavenSettingsDefaultSetup defaultSetup;
+        
+        /// <remarks/>
+        [System.Xml.Serialization.XmlArrayItem(ElementName="vendor", IsNullable=false)]
+        public nmavenSettingsVendorsVendor[] vendors;
+    }
+    
+    /// <remarks/>
+    public class nmavenSettingsDefaultSetup {
+        
+        /// <remarks/>
+        public string vendorName;
+        
+        /// <remarks/>
+        public string vendorVersion;
+        
+        /// <remarks/>
+        public string frameworkVersion;
+    }
+    
+    /// <remarks/>
+    public class nmavenSettingsVendorsVendor {
+        
+        /// <remarks/>
+        public string vendorName;
+        
+        /// <remarks/>
+        public string vendorVersion;
+        
+        /// <remarks/>
+        public string isDefault;
+        
+        /// <remarks/>
+        [System.Xml.Serialization.XmlArrayItem(ElementName="framework", IsNullable=false)]
+        public nmavenSettingsVendorsVendorFrameworksFramework[] frameworks;
+    }
+    
+    /// <remarks/>
+    public class nmavenSettingsVendorsVendorFrameworksFramework {
+        
+        /// <remarks/>
+        public string frameworkVersion;
+        
+        /// <remarks/>
+        public string installRoot;
+        
+        /// <remarks/>
+        public string sdkInstallRoot;
+        
+        /// <remarks/>
+        [System.Xml.Serialization.XmlArrayItem(ElementName="executablePath", IsNullable=false)]
+        public string[] executablePaths;
+    }
+    
+    /// <remarks/>
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
+    public class NewDataSet {
+        
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute()]
+        public nmavenSettings[] nmavenSettings;
+    }
+}

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/ArtifactInstallerImpl.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/ArtifactInstallerImpl.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/ArtifactInstallerImpl.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/ArtifactInstallerImpl.java Wed Mar 21 00:55:10 2007
@@ -298,7 +298,7 @@
                 .append( dependency.getVersion() ).append( File.separator );
             String extension = ArtifactType.getArtifactTypeForName( dependency.getType() ).getExtension();
             File file =
-                new File( depPath.toString() + dependency.getArtifactId() + "." + extension ); //TODO: other types
+                new File( depPath.toString() + dependency.getArtifactId() + "." + extension );
 
             try
             {

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/ExecutableConfig.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/ExecutableConfig.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/ExecutableConfig.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/ExecutableConfig.java Wed Mar 21 00:55:10 2007
@@ -54,14 +54,14 @@
      *
      * @return the execution path of the executable
      */
-    String getExecutionPath();
+    List<String> getExecutionPaths();
 
     /**
      * Sets the executation path of the executable.
      *
-     * @param executionPath
+     * @param executionPaths the execution paths
      */
-    void setExecutionPath( String executionPath );
+    void setExecutionPaths( List<String> executionPaths );
 
     public static class Factory
     {
@@ -85,7 +85,7 @@
 
                 private List<String> commands;
 
-                private String executionPath;
+                private List<String> executionPaths;
 
                 private ArtifactType artifactType;
 
@@ -103,14 +103,14 @@
                     this.commands = commands;
                 }
 
-                public String getExecutionPath()
+                public List<String> getExecutionPaths()
                 {
-                    return executionPath;
+                    return executionPaths;
                 }
 
-                public void setExecutionPath( String executionPath )
+                public void setExecutionPaths( List<String> executionPaths )
                 {
-                    this.executionPath = executionPath;
+                    this.executionPaths = executionPaths;
                 }
 
                 public ArtifactType getArtifactType()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/CSharpCompilerForProfile.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/CSharpCompilerForProfile.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/CSharpCompilerForProfile.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/CSharpCompilerForProfile.java Wed Mar 21 00:55:10 2007
@@ -63,8 +63,28 @@
 
     public File getExecutionPath()
     {
-        return ( compilerContext.getNetCompilerConfig().getExecutionPath() != null ) ? new File(
-            compilerContext.getNetCompilerConfig().getExecutionPath() ) : null;
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = compilerContext.getNetCompilerConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator +  executable);
+                if ( exe.exists() )
+                {
+                    return new File(executablePath);
+                }
+            }
+        }
+        return null;
     }
 
     public void execute()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DefaultCompiler.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DefaultCompiler.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DefaultCompiler.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DefaultCompiler.java Wed Mar 21 00:55:10 2007
@@ -69,8 +69,28 @@
 
     public File getExecutionPath()
     {
-        return ( compilerContext.getNetCompilerConfig().getExecutionPath() != null ) ? new File(
-            compilerContext.getNetCompilerConfig().getExecutionPath() ) : null;
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = compilerContext.getNetCompilerConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator +  executable);
+                if ( exe.exists() )
+                {
+                    return new File(executablePath);
+                }
+            }
+        }
+        return null;
     }
 
     public List<String> getCommands()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DotGNUCompiler.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DotGNUCompiler.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DotGNUCompiler.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/DotGNUCompiler.java Wed Mar 21 00:55:10 2007
@@ -67,8 +67,28 @@
 
     public File getExecutionPath()
     {
-        return ( compilerContext.getNetCompilerConfig().getExecutionPath() != null ) ? new File(
-            compilerContext.getNetCompilerConfig().getExecutionPath() ) : null;
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = compilerContext.getNetCompilerConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator +  executable);
+                if ( exe.exists() )
+                {
+                    return new File(executablePath);
+                }
+            }
+        }
+        return null;
     }
 
     public List<String> getCommands()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/NemerleCompiler.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/NemerleCompiler.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/NemerleCompiler.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/NemerleCompiler.java Wed Mar 21 00:55:10 2007
@@ -55,8 +55,28 @@
 
     public File getExecutionPath()
     {
-        return ( compilerContext.getNetCompilerConfig().getExecutionPath() != null ) ? new File(
-            compilerContext.getNetCompilerConfig().getExecutionPath() ) : null;
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = compilerContext.getNetCompilerConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator +  executable);
+                if ( exe.exists() )
+                {
+                    return new File(executablePath);
+                }
+            }
+        }
+        return null;
     }
 
     public File getCompiledArtifact()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/PhpCompiler.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/PhpCompiler.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/PhpCompiler.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/compiler/impl/PhpCompiler.java Wed Mar 21 00:55:10 2007
@@ -51,7 +51,28 @@
 
     public File getExecutionPath()
     {
-        return new File( compilerContext.getNetCompilerConfig().getExecutionPath() );
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = compilerContext.getNetCompilerConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator +  executable);
+                if ( exe.exists() )
+                {
+                    return new File(executablePath);
+                }
+            }
+        }
+        return null;
     }
 
     public List<String> getCommands()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultNetExecutable.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultNetExecutable.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultNetExecutable.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultNetExecutable.java Wed Mar 21 00:55:10 2007
@@ -49,8 +49,28 @@
 
     public File getExecutionPath()
     {
-        return ( executableContext.getExecutableConfig().getExecutionPath() != null ) ? new File(
-            executableContext.getExecutableConfig().getExecutionPath() ) : null;
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = executableContext.getExecutableConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator +  executable);
+                if ( exe.exists() )
+                {
+                    return new File(executablePath);
+                }
+            }
+        }
+        return null;
     }
 
     public void execute()
@@ -74,7 +94,6 @@
         }
     }
 
-
     public String getExecutable()
         throws ExecutionException
     {
@@ -83,12 +102,7 @@
             throw new ExecutionException( "NMAVEN-063-002: Executable has not been initialized with a context" );
         }
         return executableContext.getExecutableCapability().getExecutable();
-        // String executionPath = executableContext.getExecutableConfig().getExecutionPath();
-        // return (executionPath != null && !executionPath.trim().equals("")) ? executionPath
-        //         + executableContext.getExecutableCapability().getExecutable()
-        //         : executableContext.getExecutableCapability().getExecutable();
     }
-
 
     public void init( NMavenContext nmavenContext )
     {

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultRepositoryNetExecutable.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultRepositoryNetExecutable.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultRepositoryNetExecutable.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/DefaultRepositoryNetExecutable.java Wed Mar 21 00:55:10 2007
@@ -29,7 +29,6 @@
 import java.io.File;
 
 /**
- *
  * @author Shane Isbell
  */
 public class DefaultRepositoryNetExecutable
@@ -50,6 +49,23 @@
 
     public File getExecutionPath()
     {
+        if ( executableContext == null )
+        {
+            logger.info( "NMAVEN-063-002: Executable has not been initialized with a context" );
+            return null;
+        }
+        List<String> executablePaths = executableContext.getExecutableConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath );
+                if ( exe.exists() )
+                {
+                    return new File( executablePath ).getParentFile();
+                }
+            }
+        }
         return null;
     }
 
@@ -59,20 +75,20 @@
         List<String> commands = getCommands();
 
         CommandExecutor commandExecutor = CommandExecutor.Factory.createDefaultCommmandExecutor();
-        File executable = new File( getExecutable() );
-        String exe = executable.getName();
         try
         {
             commandExecutor.setLogger( logger );
-            commandExecutor.executeCommand( exe, getCommands(), executable.getParentFile(), true );
+            commandExecutor.executeCommand( getExecutable(), getCommands(), getExecutionPath(), true );
         }
         catch ( ExecutionException e )
         {
-            throw new ExecutionException( "NMAVEN-063-000: Executable = " + exe + ", Command = " + commands, e );
+            throw new ExecutionException( "NMAVEN-063-000: Executable = " + getExecutable() + ", Command = " + commands,
+                                          e );
         }
         if ( commandExecutor.getStandardOut().contains( "error" ) )
         {
-            throw new ExecutionException( "NMAVEN-063-001: Executable = " + exe + ",Command = " + commands );
+            throw new ExecutionException(
+                "NMAVEN-063-001: Executable = " + getExecutable() + ",Command = " + commands );
         }
     }
 
@@ -84,13 +100,20 @@
         {
             throw new ExecutionException( "NMAVEN-063-002: Executable has not been initialized with a context" );
         }
-
-        String executionPath = executableContext.getExecutableConfig().getExecutionPath();
-        if ( executionPath == null || executionPath.trim().equals( "" ) )
+        
+        List<String> executablePaths = executableContext.getExecutableConfig().getExecutionPaths();
+        if ( executablePaths != null )
         {
-            throw new ExecutionException( "NMAVEN-063-002: Executable path has not been set" );
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath );
+                if ( exe.exists() )
+                {
+                    return new File( executablePath ).getName();
+                }
+            }
         }
-        return executionPath;
+        throw new ExecutionException( "NMAVEN-063-003: Executable path has not been set" );
     }
 
 

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/NetExecutableFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/NetExecutableFactoryImpl.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/NetExecutableFactoryImpl.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/NetExecutableFactoryImpl.java Wed Mar 21 00:55:10 2007
@@ -37,6 +37,7 @@
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.io.File;
 
 /**
@@ -105,11 +106,26 @@
 
         if ( vendorInfoRepository != null && vendorInfoRepository.exists() )
         {
+            File sdkInstallRoot = null;
+            try
+            {
+                sdkInstallRoot = vendorInfoRepository.getSdkInstallRootFor( vendorInfo );
+            }
+            catch ( PlatformUnsupportedException e )
+            {
+                logger.debug( "NMAVEN-066-017: Did not find an SDK install root: " + vendorInfo, e);
+            }
             File installRoot = vendorInfoRepository.getInstallRootFor( vendorInfo );
+            List<String> executionPaths = new ArrayList<String>();
             if ( installRoot != null )
             {
-                compilerConfig.setExecutionPath( installRoot.getAbsolutePath() );
+                executionPaths.add( installRoot.getAbsolutePath() );
+            }
+            if ( sdkInstallRoot != null )
+            {
+                executionPaths.add( sdkInstallRoot.getAbsolutePath() );
             }
+            compilerConfig.setExecutionPaths( executionPaths );
         }
 
         compilerContext.init( compilerRequirement, compilerConfig, project, capabilityMatcher );
@@ -132,7 +148,6 @@
                                                          List<String> commands )
         throws PlatformUnsupportedException
     {
-
         if ( commands == null )
         {
             commands = new ArrayList<String>();
@@ -152,18 +167,30 @@
         AssemblyRepositoryLayout layout = new AssemblyRepositoryLayout();
         File artifactPath = new File( localRepository + File.separator + layout.pathOf( artifact ) );
         List<String> modifiedCommands = new ArrayList<String>();
-        String exe;
+        String exe = null;
         if ( vendorInfo.getVendor().equals( Vendor.MONO ) )
         {
-            if ( vendorInfo.getExecutablePath() != null && !vendorInfo.getExecutablePath().exists() )
+            List<File> executablePaths = vendorInfo.getExecutablePaths();
+            if ( executablePaths != null )
+            {
+                for ( File executablePath : executablePaths )
+                {
+                    File monoExe = new File( executablePath.getAbsolutePath() + File.separator + "mono.exe" );
+                    if ( monoExe.exists() )
+                    {
+                        exe = monoExe.getAbsolutePath();
+                        break;
+                    }
+                }
+            }
+
+            if ( exe == null )
             {
                 logger.info(
                     "NMAVEN-066-005: Executable path for mono does not exist. Will attempt to execute MONO using" +
-                        " the main PATH variable: Bad Executable Path = " +
-                        vendorInfo.getExecutablePath().getAbsolutePath() );
+                        " the main PATH variable." );
+                exe = "mono.exe";
             }
-            exe = ( vendorInfo.getExecutablePath() != null && vendorInfo.getExecutablePath().exists() ) ?
-                vendorInfo.getExecutablePath().getAbsolutePath() + File.separator + "mono" : "mono";
             modifiedCommands.add( artifactPath.getAbsolutePath() );
             for ( String command : commands )
             {
@@ -175,9 +202,10 @@
             exe = artifactPath.getAbsolutePath();
             modifiedCommands = commands;
         }
+        //TODO: DotGNU on Linux?
 
         ExecutableConfig executableConfig = ExecutableConfig.Factory.createDefaultExecutableConfig();
-        executableConfig.setExecutionPath( exe );
+        executableConfig.setExecutionPaths( Arrays.asList( exe) );
         executableConfig.setCommands( modifiedCommands );
 
         try
@@ -233,22 +261,28 @@
         ExecutableConfig executableConfig = ExecutableConfig.Factory.createDefaultExecutableConfig();
         executableConfig.setCommands( commands );
 
-        if ( netHome != null )
+        List<String> executablePaths = new ArrayList<String>();
+        if ( netHome != null && netHome.exists() )
         {
             logger.info( "NMAVEN-066-014: Found executable path: Path = " + netHome.getAbsolutePath() );
-            executableConfig.setExecutionPath( netHome.getAbsolutePath() );
+            executablePaths.add( netHome.getAbsolutePath() );
         }
-        else if ( vendorInfo.getExecutablePath() != null && vendorInfo.getExecutablePath().exists() )
+        else if ( vendorInfo.getExecutablePaths() != null )
         {
-            logger.info(
-                "NMAVEN-066-015: Found executable path: Path = " + vendorInfo.getExecutablePath().getAbsolutePath() );
-            executableConfig.setExecutionPath( vendorInfo.getExecutablePath().getAbsolutePath() );
+            for ( File path : vendorInfo.getExecutablePaths() )
+            {
+                if ( path.exists() )
+                {
+                    logger.info( "NMAVEN-066-015: Found executable path: Path = " + path.getAbsolutePath() );
+                    executablePaths.add( path.getAbsolutePath() );
+                }
+            }
         }
         else
         {
-            logger.info( "NMAVEN-066-016: Did not find executable path, will try system path: Executable Path = " +
-                vendorInfo.getExecutablePath() );
+            logger.info( "NMAVEN-066-016: Did not find executable path, will try system path" );
         }
+        executableConfig.setExecutionPaths( executablePaths );
         executableContext.init( executableRequirement, executableConfig, project, capabilityMatcher );
 
         try

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/ThreadedNetExecutable.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/ThreadedNetExecutable.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/ThreadedNetExecutable.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-executable/src/main/java/org/apache/maven/dotnet/executable/impl/ThreadedNetExecutable.java Wed Mar 21 00:55:10 2007
@@ -32,11 +32,11 @@
         }
         catch ( ExecutionException e )
         {
-          //  throw new ExecutionException( "NMAVEN-063-000: Command = " + commands, e );
+            //  throw new ExecutionException( "NMAVEN-063-000: Command = " + commands, e );
         }
         if ( commandExecutor.getStandardOut().contains( "error" ) )
         {
-         //   t/w new ExecutionException( "NMAVEN-063-001: Command = " + commands );
+            //   t/w new ExecutionException( "NMAVEN-063-001: Command = " + commands );
         }
     }
 
@@ -49,8 +49,28 @@
 
     public File getExecutionPath()
     {
-        return ( executableContext.getExecutableConfig().getExecutionPath() != null ) ? new File(
-            executableContext.getExecutableConfig().getExecutionPath() ) : null;
+        String executable;
+        try
+        {
+            executable = getExecutable();
+        }
+        catch ( ExecutionException e )
+        {
+            return null;
+        }
+        List<String> executablePaths = executableContext.getExecutableConfig().getExecutionPaths();
+        if ( executablePaths != null )
+        {
+            for ( String executablePath : executablePaths )
+            {
+                File exe = new File( executablePath + File.separator + executable );
+                if ( exe.exists() )
+                {
+                    return new File( executablePath );
+                }
+            }
+        }
+        return null;
     }
 
     public void execute()

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfo.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfo.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfo.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfo.java Wed Mar 21 00:55:10 2007
@@ -19,6 +19,7 @@
 package org.apache.maven.dotnet.vendor;
 
 import java.io.File;
+import java.util.List;
 
 /**
  * Provides accessors for obtaining information about a vendor. 
@@ -73,14 +74,14 @@
      *
      * @return the path where the executable lives
      */
-    File getExecutablePath();
+    List<File> getExecutablePaths();
 
     /**
      * Sets the path where the executable lives.
      *
-     * @param executablePath the path where the executable lives
+     * @param executablePaths the path where the executable lives
      */
-    void setExecutablePath( File executablePath );
+    void setExecutablePaths( List<File> executablePaths );
 
     /**
      * If the vendor information is the default (or preferred) value for a given vendor, returns true,
@@ -126,7 +127,7 @@
 
                 private String frameworkVersion;
 
-                private File executablePath;
+                private List<File> executablePaths;
 
                 private boolean isDefault;
 
@@ -140,14 +141,14 @@
                     isDefault = aDefault;
                 }
 
-                public File getExecutablePath()
+                public List<File> getExecutablePaths()
                 {
-                    return executablePath;
+                    return executablePaths;
                 }
 
-                public void setExecutablePath( File executablePath )
+                public void setExecutablePaths( List<File> executablePaths )
                 {
-                    this.executablePath = executablePath;
+                    this.executablePaths = executablePaths;
                 }
 
                 public Vendor getVendor()
@@ -183,8 +184,8 @@
                 public String toString()
                 {
                     return "Vendor = " + vendor + ", Vendor Version = " + vendorVersion + ", Framework Version = " +
-                        frameworkVersion + ", Executable Path = " +
-                        ( ( executablePath != null ) ? executablePath.getAbsolutePath() : "" );
+                        frameworkVersion + ", Executable Paths = " +
+                        ( ( executablePaths != null ) ? executablePaths : "" );
                 }
             };
         }

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java Wed Mar 21 00:55:10 2007
@@ -92,6 +92,9 @@
     File getInstallRootFor( VendorInfo vendorInfo )
         throws PlatformUnsupportedException;
 
+    File getSdkInstallRootFor( VendorInfo vendorInfo )
+        throws PlatformUnsupportedException;
+
     /**
      * Returns true if this repository exists (and can be used), otherwise returns false.
      *

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java Wed Mar 21 00:55:10 2007
@@ -99,7 +99,13 @@
             {
                 VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
                 vendorInfo.setVendorVersion( v.getVendorVersion() );
-                vendorInfo.setExecutablePath( new File( framework.getInstallRoot() ) );
+                List<File> executablePaths = new ArrayList<File>();
+                executablePaths.add(new File( framework.getInstallRoot() ));
+                if(framework.getSdkInstallRoot() != null)
+                {
+                    executablePaths.add( new File(framework.getSdkInstallRoot()));
+                }
+                vendorInfo.setExecutablePaths( executablePaths );
                 vendorInfo.setFrameworkVersion( framework.getFrameworkVersion() );
                 try
                 {
@@ -131,6 +137,33 @@
     List<VendorInfo> getVendorInfos()
     {
         return vendorInfos;
+    }
+
+    File getSdkInstallRootFor( String vendor, String vendorVersion, String frameworkVersion )
+        throws PlatformUnsupportedException
+    {
+        if ( vendor == null || vendorVersion == null || frameworkVersion == null )
+        {
+            throw new PlatformUnsupportedException( "NMAVEN-104-001: One of more of the parameters is null: Vendor = " +
+                vendor + ", Vendor Version = " + vendorVersion + ", Framework Version = " + frameworkVersion );
+        }
+        for ( Vendor v : vendors )
+        {
+            if ( vendor.equals( v.getVendorName().trim() ) && vendorVersion.equals( v.getVendorVersion().trim() ) )
+            {
+                List<Framework> frameworks = v.getFrameworks();
+                for ( Framework framework : frameworks )
+                {
+                    if ( frameworkVersion.equals( framework.getFrameworkVersion().trim() ) )
+                    {
+                         String sdkRoot = framework.getSdkInstallRoot();
+                         if(sdkRoot != null) return new File(sdkRoot );
+                    }
+                }
+            }
+        }
+        throw new PlatformUnsupportedException( "NMAVEN-104-003: Unable to find install root: Vendor = " + vendor +
+            ", Vendor Version = " + vendorVersion + ", Framework Version = " + frameworkVersion );
     }
 
     /**

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java Wed Mar 21 00:55:10 2007
@@ -87,6 +87,14 @@
                                                      vendorInfo.getVendorVersion(), vendorInfo.getFrameworkVersion() );
     }
 
+    public File getSdkInstallRootFor( VendorInfo vendorInfo )
+        throws PlatformUnsupportedException
+    {
+        SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "nmaven-settings" );
+        return settingsRepository.getSdkInstallRootFor( vendorInfo.getVendor().getVendorName(),
+                                                     vendorInfo.getVendorVersion(), vendorInfo.getFrameworkVersion() );
+    }
+
     /**
      * @see org.apache.maven.dotnet.vendor.VendorInfoRepository#getVendorInfos()
      */
@@ -159,7 +167,7 @@
      * Returns true if the specified vendor info matches <i>all</i> of the specified match policies, otherwise returns
      * false.
      *
-     * @param vendorInfo the vendor info to match against the match policies
+     * @param vendorInfo    the vendor info to match against the match policies
      * @param matchPolicies the match policies
      * @return true if the specified vendor info matches <i>all</i> of the specified match policies, otherwise returns
      *         false

Modified: incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java (original)
+++ incubator/nmaven/branches/SI_IDE/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java Wed Mar 21 00:55:10 2007
@@ -26,6 +26,7 @@
 import java.util.List;
 import java.util.Set;
 import java.util.HashSet;
+import java.util.ArrayList;
 import java.io.File;
 
 import org.codehaus.plexus.logging.Logger;
@@ -126,11 +127,26 @@
             public VendorInfoState process( VendorInfo vendorInfo )
             {
                 logger.debug( "NMAVEN-103-034: Entering State = Post Process" );
-                if ( vendorInfo.getExecutablePath() == null )
+                if ( vendorInfo.getExecutablePaths() == null || vendorInfo.getExecutablePaths().size() == 0 )
                 {
+                    File sdkInstallRoot = null;
                     try
                     {
-                        vendorInfo.setExecutablePath( vendorInfoRepository.getInstallRootFor( vendorInfo ) );
+                        sdkInstallRoot = vendorInfoRepository.getSdkInstallRootFor( vendorInfo );
+                    }
+                    catch ( PlatformUnsupportedException e )
+                    {
+                        logger.debug( "NMAVEN-103-36: Failed to resolve install sdk root." );
+                    }
+                    try
+                    {
+                        List<File> executablePaths = new ArrayList<File>();
+                        executablePaths.add( vendorInfoRepository.getInstallRootFor( vendorInfo ) );
+                        if ( sdkInstallRoot != null )
+                        {
+                            executablePaths.add( sdkInstallRoot );
+                        }
+                        vendorInfo.setExecutablePaths( executablePaths );
                     }
                     catch ( PlatformUnsupportedException e )
                     {
@@ -695,20 +711,34 @@
                 logger.debug( "NMAVEN-103-021: Entering State = MFF" );
                 File v1 = new File( "C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322" );
                 File v2 = new File( "C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727" );
+                File v3 = new File( "C:\\Program Files\\Microsoft.NET\\SDK\\v1.1" );
+                File v4 = new File( "C:\\Program Files\\Microsoft.NET\\SDK\\v2.0" );
+                List<File> executablePaths = new ArrayList<File>();
+
                 if ( v2.exists() )
                 {
                     vendorInfo.setFrameworkVersion( "2.0.50727" );
-                    vendorInfo.setExecutablePath( v2 );
+                    executablePaths.add( v2 );
+                    if ( v4.exists() )
+                    {
+                        executablePaths.add( v4 );
+                    }
                 }
                 else if ( v1.exists() )
                 {
                     vendorInfo.setFrameworkVersion( "1.1.4322" );
-                    vendorInfo.setExecutablePath( v1 );
+                    executablePaths.add( v1 );
+                    if ( v3.exists() )
+                    {
+                        executablePaths.add( v3 );
+                    }
                 }
                 else
                 {
                     vendorInfo.setFrameworkVersion( "2.0.50727" );
                 }
+
+                vendorInfo.setExecutablePaths( executablePaths );
                 return VendorInfoState.MFT;
             }
         };

Modified: incubator/nmaven/branches/SI_IDE/plugins/maven-xsd-plugin/src/main/java/org/apache/maven/dotnet/plugin/xsd/XsdGeneratorMojo.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/plugins/maven-xsd-plugin/src/main/java/org/apache/maven/dotnet/plugin/xsd/XsdGeneratorMojo.java?view=diff&rev=520789&r1=520788&r2=520789
==============================================================================
--- incubator/nmaven/branches/SI_IDE/plugins/maven-xsd-plugin/src/main/java/org/apache/maven/dotnet/plugin/xsd/XsdGeneratorMojo.java (original)
+++ incubator/nmaven/branches/SI_IDE/plugins/maven-xsd-plugin/src/main/java/org/apache/maven/dotnet/plugin/xsd/XsdGeneratorMojo.java Wed Mar 21 00:55:10 2007
@@ -42,8 +42,6 @@
 public class XsdGeneratorMojo
     extends AbstractMojo
 {
-
-
     /**
      * The directory to place the generated binding classes.
      *