// This method works for Windows and Linux but currently // is only called under Linux. private static void AppendDefaultMonoFramework(FrameworkList frameworks) { string monoPrefix = null; string version = null; if (Environment.OSVersion.Platform == PlatformID.Win32NT) { RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Novell\Mono"); if (key != null) { version = key.GetValue("DefaultCLR") as string; if (version != null && version != "") { key = key.OpenSubKey(version); if (key != null) { monoPrefix = key.GetValue("SdkInstallRoot") as string; } } } } else // Assuming we're currently running Mono - change if more runtimes are added { string libMonoDir = Path.GetDirectoryName(typeof(object).Assembly.Location); monoPrefix = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(libMonoDir))); } AppendMonoFramework(frameworks, monoPrefix, version); }
private static void AppendMonoFramework(FrameworkList frameworks, string monoPrefix, string version) { if (monoPrefix != null) { string format = ((version != null) ? ("Mono " + version + " - {0} Profile") : "Mono {0} Profile"); if (File.Exists(Path.Combine(monoPrefix, "lib/mono/1.0/mscorlib.dll"))) { RuntimeFramework runtimeFramework = new RuntimeFramework(RuntimeType.Mono, new Version(1, 1, 4322)); runtimeFramework.displayName = string.Format(format, "1.0"); frameworks.Add(runtimeFramework); } if (File.Exists(Path.Combine(monoPrefix, "lib/mono/2.0/mscorlib.dll"))) { RuntimeFramework runtimeFramework = new RuntimeFramework(RuntimeType.Mono, new Version(2, 0, 50727)); runtimeFramework.displayName = string.Format(format, "2.0"); frameworks.Add(runtimeFramework); } if (File.Exists(Path.Combine(monoPrefix, "lib/mono/4.0/mscorlib.dll"))) { RuntimeFramework runtimeFramework = new RuntimeFramework(RuntimeType.Mono, new Version(4, 0, 30319)); runtimeFramework.displayName = string.Format(format, "4.0"); frameworks.Add(runtimeFramework); } } }
private static void AppendAllMonoFrameworks(FrameworkList frameworks) { // TODO: Find multiple installed Mono versions under Linux if (Environment.OSVersion.Platform == PlatformID.Win32NT) { // Use registry to find alternate versions RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Novell\Mono"); if (key == null) { return; } foreach (string version in key.GetSubKeyNames()) { RegistryKey subKey = key.OpenSubKey(version); string monoPrefix = subKey.GetValue("SdkInstallRoot") as string; AppendMonoFramework(frameworks, monoPrefix, version); } } else { AppendDefaultMonoFramework(frameworks); } }
private static void AppendDefaultMonoFramework(FrameworkList frameworks) { string text = null; string version = null; string directoryName = Path.GetDirectoryName(typeof(object).Assembly.Location); text = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(directoryName))); AppendMonoFramework(frameworks, text, version); }
// This method works for Windows and Linux but currently // is only called under Linux. private static void AppendDefaultMonoFramework(FrameworkList frameworks) { string monoPrefix = null; string version = null; string libMonoDir = Path.GetDirectoryName(typeof(object).Assembly.Location); monoPrefix = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(libMonoDir))); AppendMonoFramework(frameworks, monoPrefix, version); }
public static void Main(string[] args) { var enumerator = new FrameworkEnumerator(); var frameworkList = new FrameworkList <Framework>(enumerator); foreach (var dotNetFrameworkName in frameworkList.DotNetFrameworkNames) { Console.WriteLine(dotNetFrameworkName); } }
private static void AppendMonoFrameworks(FrameworkList frameworks) { if (Environment.OSVersion.Platform == PlatformID.Win32NT) { AppendAllMonoFrameworks(frameworks); } else { AppendDefaultMonoFramework(frameworks); } }
private static void AppendDotNetFrameworks(FrameworkList frameworks) { if (Environment.OSVersion.Platform == PlatformID.Win32NT) { RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\.NETFramework\policy"); if (key != null) { foreach (string name in key.GetSubKeyNames()) { if (name.StartsWith("v")) { RegistryKey key2 = key.OpenSubKey(name); foreach (string build in key2.GetValueNames()) { frameworks.Add(new RuntimeFramework(RuntimeType.Net, new Version(name.Substring(1) + "." + build))); } } } } } }
private static void AppendDotNetFrameworks(FrameworkList frameworks) { }
private static void AppendAllMonoFrameworks(FrameworkList frameworks) { AppendDefaultMonoFramework(frameworks); }