Author: lcorneliussen
Date: Mon Mar 28 07:40:46 2011
New Revision: 1086145
URL: http://svn.apache.org/viewvc?rev=1086145&view=rev
Log:
[NPANDAY-123] PATH should not have to be set ...
o Improved how SDK paths are found
o Added bin-subfolder to execution paths
Added:
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/DotnetSdkLocator.cs
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/PathUtil.cs
Modified:
incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/
(props changed)
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/SettingsGeneratorMojo.cs
Modified:
incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java?rev=1086145&r1=1086144&r2=1086145&view=diff
==============================================================================
---
incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java
(original)
+++
incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java
Mon Mar 28 07:40:46 2011
@@ -161,11 +161,22 @@ public class VendorInfoRepositoryImpl
VendorInfo vendorInfo =
VendorInfo.Factory.createDefaultVendorInfo();
vendorInfo.setVendorVersion( v.getVendorVersion() );
List<File> executablePaths = new ArrayList<File>();
+
+ // add .NET install root as path
executablePaths.add(new File( framework.getInstallRoot() ));
+
+ // add .NET-SDK install root as path
if(framework.getSdkInstallRoot() != null)
{
executablePaths.add( new
File(framework.getSdkInstallRoot()));
}
+
+ // copy configured additional execution paths
+ if (framework.getExecutablePaths() != null) {
+ for(Object path: framework.getExecutablePaths()) {
+ executablePaths.add( new File((String)path) );
+ }
+ }
vendorInfo.setExecutablePaths( executablePaths );
vendorInfo.setFrameworkVersion(
framework.getFrameworkVersion() );
try
Propchange:
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Mar 28 07:40:46 2011
@@ -0,0 +1,7 @@
+[Bb]in
+obj
+[Dd]ebug
+[Rr]elease
+*.user
+*.aps
+*.eto
Added:
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/DotnetSdkLocator.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/DotnetSdkLocator.cs?rev=1086145&view=auto
==============================================================================
---
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/DotnetSdkLocator.cs
(added)
+++
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/DotnetSdkLocator.cs
Mon Mar 28 07:40:46 2011
@@ -0,0 +1,72 @@
+using Microsoft.Win32;
+
+namespace NPanday.Plugin.Settings
+{
+ public class DotnetSdkLocator
+ {
+ RegistryKey Microsoft_NETFramework =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework");
+ RegistryKey Microsoft_SDKs_NETFramework =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\SDKs\.NETFramework");
+ RegistryKey Microsoft_SDKs_Windows_70 =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft
SDKs\Windows\v7.0");
+ RegistryKey Microsoft_SDKs_Windows_70a =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft
SDKs\Windows\v7.0A");
+
+ public string Find1_1()
+ {
+ return
(string)Microsoft_NETFramework.GetValue("sdkInstallRootv1.1");
+ }
+
+ public string Find2_0()
+ {
+ return PathUtil.FirstExisting(
+ registryFind(Microsoft_NETFramework, "sdkInstallRootv2.0"),
+ registryFind(Microsoft_SDKs_NETFramework, "v2.0",
"InstallationFolder")
+ );
+ }
+
+ public string Find3_5()
+ {
+ return PathUtil.FirstExisting(
+ registryFind(Microsoft_NETFramework, "sdkInstallRootv3.5"),
+ // prefer 32 bit until its made explicit
+ registryFind(Microsoft_SDKs_Windows_70,
"WinSDKNetFx35Tools-x86", "InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70a,
"WinSDK-NetFx35Tools-x86", "InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70, "WinSDKNetFx35Tools",
"InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70a,
"WinSDK-NetFx35Tools", "InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70,
"WinSDKNetFx35Tools-x64", "InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70a,
"WinSDK-NetFx35Tools-x64", "InstallationFolder")
+ );
+ }
+
+ public string Find4_0()
+ {
+ return PathUtil.FirstExisting(
+ registryFind(Microsoft_NETFramework, "sdkInstallRootv4.0"), //
does not exist, I thinkg (lcorneliussen)
+ // prefer 32 bit until its made explicit
+ registryFind(Microsoft_SDKs_Windows_70a,
"WinSDK-NetFx40Tools", "InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70a,
"WinSDK-NetFx40Tools-x86", "InstallationFolder"),
+ registryFind(Microsoft_SDKs_Windows_70a,
"WinSDK-NetFx40Tools-x64", "InstallationFolder")
+ );
+ }
+
+ private string registryFind(RegistryKey root, string valueKey)
+ {
+ return registryFind(root, null, valueKey);
+ }
+
+ private string registryFind(RegistryKey root, string subkey, string
valueKey)
+ {
+ RegistryKey current = root;
+
+ if (current == null)
+ return null;
+
+ if (subkey != null)
+ {
+ current = current.OpenSubKey(subkey);
+ if (current == null)
+ return null;
+ }
+
+ return (string)current.GetValue(valueKey);
+ }
+ }
+}
Added:
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/PathUtil.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/PathUtil.cs?rev=1086145&view=auto
==============================================================================
---
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/PathUtil.cs
(added)
+++
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/PathUtil.cs
Mon Mar 28 07:40:46 2011
@@ -0,0 +1,29 @@
+using System.IO;
+
+namespace NPanday.Plugin.Settings
+{
+ public static class PathUtil
+ {
+ public static string FirstExisting(params string[] probingPaths)
+ {
+ foreach (string dir in probingPaths)
+ {
+ if (Directory.Exists(dir))
+ return dir;
+ }
+
+ return null;
+ }
+
+ public static string FirstContainingFile(string fileToBeContained,
params string[] probingPaths)
+ {
+ foreach (string dir in probingPaths)
+ {
+ if (File.Exists(Path.Combine(dir, fileToBeContained)))
+ return dir;
+ }
+
+ return null;
+ }
+ }
+}
Modified:
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/SettingsGeneratorMojo.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/SettingsGeneratorMojo.cs?rev=1086145&r1=1086144&r2=1086145&view=diff
==============================================================================
---
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/SettingsGeneratorMojo.cs
(original)
+++
incubator/npanday/trunk/plugins/netplugins/NPanday.Plugin.Settings/src/main/csharp/NPanday/Plugin/Settings/SettingsGeneratorMojo.cs
Mon Mar 28 07:40:46 2011
@@ -18,71 +18,70 @@
//
using System;
+using System.Collections.Generic;
using System.IO;
-using System.Collections;
using System.Xml.Serialization;
using Microsoft.Win32;
-using NPanday.Plugin;
namespace NPanday.Plugin.Settings
{
- [Serializable]
+ [Serializable]
[ClassAttribute(Phase = "validate", Goal = "generate-settings")]
- public sealed class SettingsGeneratorMojo : AbstractMojo
+ public sealed class SettingsGeneratorMojo : AbstractMojo
{
public SettingsGeneratorMojo() { }
[FieldAttribute("npandaySettingsPath", Expression =
"${npanday.settings}", Type = "java.lang.String")]
public string npandaySettingsPath;
- public override Type GetMojoImplementationType()
- {
- return this.GetType();
- }
+ public override Type GetMojoImplementationType()
+ {
+ return this.GetType();
+ }
public override void Execute()
{
string outputFile;
- if (String.IsNullOrEmpty( npandaySettingsPath ))
+ if (String.IsNullOrEmpty(npandaySettingsPath))
{
npandaySettingsPath =
Environment.GetEnvironmentVariable("USERPROFILE") + "/.m2";
}
outputFile = npandaySettingsPath + "/npanday-settings.xml";
-
+
XmlSerializer serializer = new
XmlSerializer(typeof(npandaySettings));
- npandaySettings settings = new npandaySettings();
+ npandaySettings settings = new npandaySettings();
settings.operatingSystem = Environment.OSVersion.ToString();
RegistryKey monoRegistryKey =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Novell\Mono");
RegistryKey microsoftRegistryKey =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework");
- string defaultMonoCLR = (monoRegistryKey != null) ? (string)
monoRegistryKey.GetValue("DefaultCLR") : null;
+ string defaultMonoCLR = (monoRegistryKey != null) ?
(string)monoRegistryKey.GetValue("DefaultCLR") : null;
settings.defaultSetup = GetDefaultSetup(defaultMonoCLR,
- (string) microsoftRegistryKey.GetValue("InstallRoot"));
+ (string)microsoftRegistryKey.GetValue("InstallRoot"));
npandaySettingsVendorsVendor[] microsoftVendors = null;
try
{
microsoftVendors =
GetVendorsForMicrosoft(microsoftRegistryKey);
}
- catch(ExecutionException e)
+ catch (ExecutionException e)
{
Console.WriteLine(e.ToString());
}
npandaySettingsVendorsVendor[] monoVendors = null;
npandaySettingsVendorsVendor dotGnuVendor = null;
-
- if ( File.Exists( outputFile ))
+
+ if (File.Exists(outputFile))
{
try
{
monoVendors = GetVendorsForMono(monoRegistryKey,
defaultMonoCLR);
}
- catch(ExecutionException e)
+ catch (ExecutionException e)
{
Console.WriteLine(e.ToString());
}
@@ -91,30 +90,30 @@ namespace NPanday.Plugin.Settings
{
dotGnuVendor =
GetVendorForGnu(Environment.GetEnvironmentVariable("CSCC_LIB_PATH"));
}
- catch(ExecutionException e)
+ catch (ExecutionException e)
{
Console.WriteLine(e.ToString());
}
}
- int monoVendorsLength = (monoVendors == null) ? 0:
monoVendors.Length;
- int dotGnuVendorLength = (dotGnuVendor == null) ? 0: 1;
- int microsoftVendorsLength = (microsoftVendors == null) ? 0:
microsoftVendors.Length;
+ int monoVendorsLength = (monoVendors == null) ? 0 :
monoVendors.Length;
+ int dotGnuVendorLength = (dotGnuVendor == null) ? 0 : 1;
+ int microsoftVendorsLength = (microsoftVendors == null) ? 0 :
microsoftVendors.Length;
npandaySettingsVendorsVendor[] vendors =
new npandaySettingsVendorsVendor[microsoftVendorsLength +
monoVendorsLength + dotGnuVendorLength];
int copyLocation = 0;
- if(microsoftVendors != null)
+ if (microsoftVendors != null)
{
microsoftVendors.CopyTo(vendors, copyLocation);
- copyLocation+=microsoftVendors.Length;
+ copyLocation += microsoftVendors.Length;
}
- if(monoVendors != null)
+ if (monoVendors != null)
{
monoVendors.CopyTo(vendors, copyLocation);
- copyLocation+=monoVendors.Length;
+ copyLocation += monoVendors.Length;
}
- if(dotGnuVendor != null)
+ if (dotGnuVendor != null)
vendors[copyLocation] = dotGnuVendor;
settings.vendors = vendors;
@@ -127,10 +126,11 @@ namespace NPanday.Plugin.Settings
string
installRoot)
{
npandaySettingsDefaultSetup defaultSetup = new
npandaySettingsDefaultSetup();
- if(installRoot == null)
+ if (installRoot == null)
{
defaultSetup.vendorName = "MONO";
defaultSetup.vendorVersion = defaultMonoCLR;
+ defaultSetup.frameworkVersion = "2.0.50727";
return (defaultMonoCLR != null) ? defaultSetup : null;
}
bool dirInfo11 = new DirectoryInfo(Path.Combine(installRoot,
"v1.1.4322")).Exists;
@@ -138,28 +138,19 @@ namespace NPanday.Plugin.Settings
bool dirInfo35 = new DirectoryInfo(Path.Combine(installRoot,
"v3.5")).Exists;
bool dirInfo40 = new DirectoryInfo(Path.Combine(installRoot,
"v4.0.30319")).Exists;
- if(installRoot != null)
- {
- if(!dirInfo11 && !dirInfo20 && !dirInfo35 && !dirInfo40)
- return null;
- defaultSetup.vendorName = "MICROSOFT";
- defaultSetup.vendorVersion = (dirInfo20) ? "2.0.50727" :
((dirInfo35) ? "3.5" : ((dirInfo40) ? "4.0" : "1.1.4322"));
- defaultSetup.frameworkVersion = defaultSetup.vendorVersion;
- return defaultSetup;
- }
- else if(defaultMonoCLR != null)
- {
- defaultSetup.vendorName = "MONO";
- defaultSetup.vendorVersion = defaultMonoCLR;
- defaultSetup.frameworkVersion = "2.0.50727";
- return defaultSetup;
- }
- return null;
+
+ if (!dirInfo11 && !dirInfo20 && !dirInfo35 && !dirInfo40)
+ return null;
+
+ defaultSetup.vendorName = "MICROSOFT";
+ defaultSetup.vendorVersion = (dirInfo20) ? "2.0.50727" :
((dirInfo35) ? "3.5" : ((dirInfo40) ? "4.0" : "1.1.4322"));
+ defaultSetup.frameworkVersion = defaultSetup.vendorVersion;
+ return defaultSetup;
}
protected npandaySettingsVendorsVendor GetVendorForGnu(String libPath)
{
- if(libPath == null)
+ if (libPath == null)
throw new ExecutionException("NPANDAY-9011-000: No
CSCC_LIB_PATH Found");
if (libPath.EndsWith("lib" + Path.DirectorySeparatorChar + "cscc"
+ Path.DirectorySeparatorChar + "lib"))
@@ -176,12 +167,12 @@ namespace NPanday.Plugin.Settings
npandaySettingsVendorsVendor vendor = new
npandaySettingsVendorsVendor();
vendor.vendorName = "DotGNU";
vendor.vendorVersion = vendorVersion;
- npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks
- = new
npandaySettingsVendorsVendorFrameworksFramework[1];
+ npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks
+ = new npandaySettingsVendorsVendorFrameworksFramework[1];
npandaySettingsVendorsVendorFrameworksFramework vf = new
npandaySettingsVendorsVendorFrameworksFramework();
vf.installRoot = Path.Combine(installR, "bin");
vf.frameworkVersion = "2.0.50727";//doesn't matter
- vendorFrameworks[0] = vf;
;
+ vendorFrameworks[0] = vf; ;
vendor.frameworks = vendorFrameworks;
return vendor;
}
@@ -190,55 +181,62 @@ namespace NPanday.Plugin.Settings
private npandaySettingsVendorsVendor[]
GetVendorsForMicrosoft(RegistryKey microsoftRegistryKey)
{
- if(microsoftRegistryKey == null)
+ if (microsoftRegistryKey == null)
throw new ExecutionException("NPANDAY-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");
- string sdkInstallRoot35 = (string)
microsoftRegistryKey.GetValue("sdkInstallRootv3.5");
-
- if(installRoot == null) throw new
ExecutionException("NPANDAY-9011-005");
- npandaySettingsVendorsVendor[] vendors = new
npandaySettingsVendorsVendor[4];
+ string installRoot =
(string)microsoftRegistryKey.GetValue("InstallRoot");
+
+ DotnetSdkLocator sdkLocator = new DotnetSdkLocator();
+
+ string sdkInstallRoot11 = sdkLocator.Find1_1();
+ string sdkInstallRoot20 = sdkLocator.Find2_0();
+ string sdkInstallRoot35 = sdkLocator.Find3_5();
+ string sdkInstallRoot40 = sdkLocator.Find4_0();
+
+ if (installRoot == null) throw new
ExecutionException("NPANDAY-9011-005");
+
+ List<npandaySettingsVendorsVendor> vendors = new
List<npandaySettingsVendorsVendor>();
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"));
DirectoryInfo dirInfo35 = new
DirectoryInfo(Path.Combine(installRoot, "v3.5"));
- DirectoryInfo dirInfo40 = new
DirectoryInfo(Path.Combine(installRoot, "v4.0.30319"));
-
- int vendorCounter = 0;
+ DirectoryInfo dirInfo40 = new
DirectoryInfo(Path.Combine(installRoot, "v4.0.30319"));
+
if (dirInfo11.Exists)
{
npandaySettingsVendorsVendor vendor = new
npandaySettingsVendorsVendor();
vendor.vendorName = "MICROSOFT";
vendor.vendorVersion = "1.1.4322";
- npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks
- = new
npandaySettingsVendorsVendorFrameworksFramework[1];
- npandaySettingsVendorsVendorFrameworksFramework vf11
- = new npandaySettingsVendorsVendorFrameworksFramework();
- vf11.installRoot = dirInfo11.FullName;
- vf11.frameworkVersion = "1.1.4322";
-
- vendorFrameworks[0] = vf11;
- vf11.sdkInstallRoot = sdkInstallRoot11;
+ npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks
+ = new npandaySettingsVendorsVendorFrameworksFramework[1];
+ npandaySettingsVendorsVendorFrameworksFramework vf
+ = new npandaySettingsVendorsVendorFrameworksFramework();
+ vf.installRoot = dirInfo11.FullName;
+ vf.frameworkVersion = "1.1.4322";
+
+ vendorFrameworks[0] = vf;
+ vf.sdkInstallRoot = sdkInstallRoot11;
+ FindAndAssignExecutablePaths(vf);
vendor.frameworks = vendorFrameworks;
-
- vendors[vendorCounter++] = vendor;
+
+ vendors.Add(vendor);
}
if (dirInfo20.Exists)
{
npandaySettingsVendorsVendor vendor = new
npandaySettingsVendorsVendor();
vendor.vendorName = "MICROSOFT";
vendor.vendorVersion = "2.0.50727";
- npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks
- = new
npandaySettingsVendorsVendorFrameworksFramework[1];
- npandaySettingsVendorsVendorFrameworksFramework vf11 = new
npandaySettingsVendorsVendorFrameworksFramework();
- vf11.installRoot = dirInfo20.FullName;
- vf11.frameworkVersion = "2.0.50727";
- vendorFrameworks[0] = vf11;
- vf11.sdkInstallRoot = sdkInstallRoot20;
+ npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks
+ = new npandaySettingsVendorsVendorFrameworksFramework[1];
+ npandaySettingsVendorsVendorFrameworksFramework vf = new
npandaySettingsVendorsVendorFrameworksFramework();
+ vf.installRoot = dirInfo20.FullName;
+ vf.frameworkVersion = "2.0.50727";
+ vendorFrameworks[0] = vf;
+ vf.sdkInstallRoot = sdkInstallRoot20;
+ FindAndAssignExecutablePaths(vf);
+
vendor.frameworks = vendorFrameworks;
- vendors[vendorCounter++] = vendor;
+ vendors.Add(vendor);
}
if (dirInfo30.Exists)
{
@@ -246,27 +244,29 @@ namespace NPanday.Plugin.Settings
vendor.vendorName = "MICROSOFT";
vendor.vendorVersion = "3.0";
npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks = new npandaySettingsVendorsVendorFrameworksFramework[1];
- npandaySettingsVendorsVendorFrameworksFramework vf11 = new
npandaySettingsVendorsVendorFrameworksFramework();
- vf11.installRoot = dirInfo30.FullName;
- vf11.frameworkVersion = "3.0";
- vendorFrameworks[0] = vf11;
- vf11.sdkInstallRoot = sdkInstallRoot20;
+ npandaySettingsVendorsVendorFrameworksFramework vf = new
npandaySettingsVendorsVendorFrameworksFramework();
+ vf.installRoot = dirInfo30.FullName;
+ vf.frameworkVersion = "3.0";
+ vendorFrameworks[0] = vf;
+ vf.sdkInstallRoot = sdkInstallRoot20;
+ FindAndAssignExecutablePaths(vf);
vendor.frameworks = vendorFrameworks;
- vendors[vendorCounter++] = vendor;
+ vendors.Add(vendor);
}
- if (dirInfo35.Exists)
+ if (dirInfo35.Exists)
{
npandaySettingsVendorsVendor vendor = new
npandaySettingsVendorsVendor();
vendor.vendorName = "MICROSOFT";
vendor.vendorVersion = "3.5";
npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks = new npandaySettingsVendorsVendorFrameworksFramework[1];
- npandaySettingsVendorsVendorFrameworksFramework vf11 = new
npandaySettingsVendorsVendorFrameworksFramework();
- vf11.installRoot = dirInfo35.FullName;
- vf11.frameworkVersion = "3.5";
- vendorFrameworks[0] = vf11;
- vf11.sdkInstallRoot = sdkInstallRoot20;
+ npandaySettingsVendorsVendorFrameworksFramework vf = new
npandaySettingsVendorsVendorFrameworksFramework();
+ vf.installRoot = dirInfo35.FullName;
+ vf.frameworkVersion = "3.5";
+ vendorFrameworks[0] = vf;
+ vf.sdkInstallRoot = sdkInstallRoot35;
+ FindAndAssignExecutablePaths(vf);
vendor.frameworks = vendorFrameworks;
- vendors[vendorCounter++] = vendor;
+ vendors.Add(vendor);
}
if (dirInfo40.Exists)
{
@@ -274,28 +274,52 @@ namespace NPanday.Plugin.Settings
vendor.vendorName = "MICROSOFT";
vendor.vendorVersion = "4.0";
npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks = new npandaySettingsVendorsVendorFrameworksFramework[1];
- npandaySettingsVendorsVendorFrameworksFramework vf11 = new
npandaySettingsVendorsVendorFrameworksFramework();
- vf11.installRoot = dirInfo40.FullName;
- vf11.frameworkVersion = "4.0";
- vendorFrameworks[0] = vf11;
- vf11.sdkInstallRoot = sdkInstallRoot20;
+ npandaySettingsVendorsVendorFrameworksFramework vf = new
npandaySettingsVendorsVendorFrameworksFramework();
+ vf.installRoot = dirInfo40.FullName;
+ vf.frameworkVersion = "4.0";
+ vendorFrameworks[0] = vf;
+ vf.sdkInstallRoot = sdkInstallRoot40;
+ FindAndAssignExecutablePaths(vf);
vendor.frameworks = vendorFrameworks;
- vendors[vendorCounter++] = vendor;
- }
-
- return vendors;
+ vendors.Add(vendor);
+ }
+
+ return vendors.ToArray();
+ }
+
+ private void
FindAndAssignExecutablePaths(npandaySettingsVendorsVendorFrameworksFramework x)
+ {
+ if (x.sdkInstallRoot != null)
+ {
+ if (File.Exists(Path.Combine(x.sdkInstallRoot, "xsd.exe")))
+ {
+ return;
+ }
+ string binDir = Path.Combine(x.sdkInstallRoot, "bin");
+ if (File.Exists(Path.Combine(binDir, "xsd.exe")))
+ {
+ if (x.executablePaths == null)
+ x.executablePaths = new string[] { binDir };
+ else
+ {
+ List<string> list = new
List<string>(x.executablePaths);
+ list.Add(binDir);
+ x.executablePaths = list.ToArray();
+ }
+ }
+ }
}
private npandaySettingsVendorsVendor[] GetVendorsForMono(RegistryKey
monoRegistryKey, string defaultMonoCLR)
{
- if(monoRegistryKey == null)
+ if (monoRegistryKey == null)
throw new ExecutionException("NPANDAY-9011-007: Mono
installation czould not be found.");
npandaySettingsVendorsVendor[] vendors = new
npandaySettingsVendorsVendor[monoRegistryKey.SubKeyCount];
int i = 0;
foreach (string keyName in monoRegistryKey.GetSubKeyNames())
{
- string sdkInstallRoot = (string)
monoRegistryKey.OpenSubKey(keyName).GetValue("SdkInstallRoot");
- if(sdkInstallRoot == null)
+ string sdkInstallRoot =
(string)monoRegistryKey.OpenSubKey(keyName).GetValue("SdkInstallRoot");
+ if (sdkInstallRoot == null)
throw new ExecutionException("NPANDAY-9011-004: Could not
find install root key for mono");
string installRoot = Path.Combine(sdkInstallRoot, "bin");
npandaySettingsVendorsVendorFrameworksFramework[]
vendorFrameworks = new npandaySettingsVendorsVendorFrameworksFramework[2];
@@ -313,7 +337,7 @@ namespace NPanday.Plugin.Settings
vf35.installRoot = installRoot;
vf35.frameworkVersion = "3.5";
vendorFrameworks[2] = vf35;
-
+
npandaySettingsVendorsVendorFrameworksFramework vf40 = new
npandaySettingsVendorsVendorFrameworksFramework();
vf40.installRoot = installRoot;
vf40.frameworkVersion = "4.0";
@@ -323,7 +347,7 @@ namespace NPanday.Plugin.Settings
vendor.vendorName = "MONO";
vendor.vendorVersion = keyName;
vendor.frameworks = vendorFrameworks;
- if(defaultMonoCLR.Equals(keyName)) vendor.isDefault = "true";
+ if (defaultMonoCLR.Equals(keyName)) vendor.isDefault = "true";
vendors[i++] = vendor;
}
return vendors;
@@ -334,14 +358,14 @@ namespace NPanday.Plugin.Settings
string[] vendorVersionToken = version.Split('.');
foreach (string token in vendorVersionToken)
{
- try
- {
- Single.Parse(token);
- }
- catch(Exception)
- {
- return false;
- }
+ try
+ {
+ Single.Parse(token);
+ }
+ catch (Exception)
+ {
+ return false;
+ }
}
return true;
}