public static void Initialize (bool updateAddinRegistry) { if (initialized) return; Counters.RuntimeInitialization.BeginTiming (); SetupInstrumentation (); // Set a default sync context if (SynchronizationContext.Current == null) SynchronizationContext.SetSynchronizationContext (new SynchronizationContext ()); AddinManager.AddinLoadError += OnLoadError; AddinManager.AddinLoaded += OnLoad; AddinManager.AddinUnloaded += OnUnload; try { Counters.RuntimeInitialization.Trace ("Initializing Addin Manager"); AddinManager.Initialize (MonoDevelop.Core.PropertyService.ConfigPath); AddinManager.InitializeDefaultLocalizer (new DefaultAddinLocalizer ()); if (updateAddinRegistry) AddinManager.Registry.Update (null); setupService = new SetupService (AddinManager.Registry); Counters.RuntimeInitialization.Trace ("Initialized Addin Manager"); RegisterAddinRepositories (); Counters.RuntimeInitialization.Trace ("Initializing Assembly Service"); systemAssemblyService = new SystemAssemblyService (); systemAssemblyService.Initialize (); initialized = true; } catch (Exception ex) { Console.WriteLine (ex); AddinManager.AddinLoadError -= OnLoadError; AddinManager.AddinLoaded -= OnLoad; AddinManager.AddinUnloaded -= OnUnload; } finally { Counters.RuntimeInitialization.EndTiming (); } }
public static void Initialize (bool updateAddinRegistry) { if (initialized) return; Counters.RuntimeInitialization.BeginTiming (); SetupInstrumentation (); AddinManager.AddinLoadError += OnLoadError; AddinManager.AddinLoaded += OnLoad; AddinManager.AddinUnloaded += OnUnload; try { Counters.RuntimeInitialization.Trace ("Initializing Addin Manager"); AddinManager.Initialize (MonoDevelop.Core.PropertyService.ConfigPath); AddinManager.InitializeDefaultLocalizer (new DefaultAddinLocalizer ()); if (updateAddinRegistry) AddinManager.Registry.Update (null); setupService = new SetupService (AddinManager.Registry); Counters.RuntimeInitialization.Trace ("Initialized Addin Manager"); string prefix = string.Empty; if (PropertyService.IsWindows) prefix = "win-"; string mainRep = "http://monodevelop.com/files/addins/" + prefix + AddinManager.CurrentAddin.Version + "/main.mrep"; AddinRepository[] repos = setupService.Repositories.GetRepositories (); foreach (AddinRepository rep in repos) { if (rep.Url.StartsWith ("http://go-mono.com/md/") || (rep.Url.StartsWith ("http://monodevelop.com/files/addins/") && rep.Url != mainRep)) setupService.Repositories.RemoveRepository (rep.Url); } setupService.Repositories.RegisterRepository (null, mainRep, false); Counters.RuntimeInitialization.Trace ("Initializing Assembly Service"); systemAssemblyService = new SystemAssemblyService (); systemAssemblyService.Initialize (); initialized = true; } catch (Exception ex) { Console.WriteLine (ex); AddinManager.AddinLoadError -= OnLoadError; AddinManager.AddinLoaded -= OnLoad; AddinManager.AddinUnloaded -= OnUnload; } finally { Counters.RuntimeInitialization.EndTiming (); } }
public static void Initialize (bool updateAddinRegistry) { if (initialized) return; Counters.RuntimeInitialization.BeginTiming (); SetupInstrumentation (); if (Platform.IsMac) InitMacFoundation (); // Set a default sync context if (SynchronizationContext.Current == null) SynchronizationContext.SetSynchronizationContext (new SynchronizationContext ()); AddinManager.AddinLoadError += OnLoadError; AddinManager.AddinLoaded += OnLoad; AddinManager.AddinUnloaded += OnUnload; //provides a development-time way to load addins that are being developed in a asperate solution var devAddinDir = Environment.GetEnvironmentVariable ("MONODEVELOP_DEV_ADDINS"); if (devAddinDir != null && devAddinDir.Length == 0) devAddinDir = null; try { Counters.RuntimeInitialization.Trace ("Initializing Addin Manager"); AddinManager.Initialize ( UserProfile.Current.ConfigDir, devAddinDir ?? UserProfile.Current.LocalInstallDir.Combine ("Addins"), devAddinDir ?? UserProfile.Current.CacheDir); AddinManager.InitializeDefaultLocalizer (new DefaultAddinLocalizer ()); if (updateAddinRegistry) AddinManager.Registry.Update (null); setupService = new AddinSetupService (AddinManager.Registry); Counters.RuntimeInitialization.Trace ("Initialized Addin Manager"); PropertyService.Initialize (); //have to do this after the addin service and property service have initialized if (UserDataMigrationService.HasSource) { Counters.RuntimeInitialization.Trace ("Migrating User Data from MD " + UserDataMigrationService.SourceVersion); UserDataMigrationService.StartMigration (); } RegisterAddinRepositories (); Counters.RuntimeInitialization.Trace ("Initializing Assembly Service"); systemAssemblyService = new SystemAssemblyService (); systemAssemblyService.Initialize (); initialized = true; } catch (Exception ex) { Console.WriteLine (ex); AddinManager.AddinLoadError -= OnLoadError; AddinManager.AddinLoaded -= OnLoad; AddinManager.AddinUnloaded -= OnUnload; } finally { Counters.RuntimeInitialization.EndTiming (); } }
public static void Initialize (bool updateAddinRegistry) { if (initialized) return; Counters.RuntimeInitialization.BeginTiming (); SetupInstrumentation (); Platform.Initialize (); // Set a default sync context if (SynchronizationContext.Current == null) SynchronizationContext.SetSynchronizationContext (new SynchronizationContext ()); // Hook up the SSL certificate validation codepath System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; if (sender is WebRequest) sender = ((WebRequest)sender).RequestUri.Host; return WebCertificateService.GetIsCertificateTrusted (sender as string, certificate.GetPublicKeyString ()); }; AddinManager.AddinLoadError += OnLoadError; AddinManager.AddinLoaded += OnLoad; AddinManager.AddinUnloaded += OnUnload; try { Counters.RuntimeInitialization.Trace ("Initializing Addin Manager"); string configDir, addinsDir, databaseDir; GetAddinRegistryLocation (out configDir, out addinsDir, out databaseDir); AddinManager.Initialize (configDir, addinsDir, databaseDir); AddinManager.InitializeDefaultLocalizer (new DefaultAddinLocalizer ()); if (updateAddinRegistry) AddinManager.Registry.Update (null); setupService = new AddinSetupService (AddinManager.Registry); Counters.RuntimeInitialization.Trace ("Initialized Addin Manager"); PropertyService.Initialize (); //have to do this after the addin service and property service have initialized if (UserDataMigrationService.HasSource) { Counters.RuntimeInitialization.Trace ("Migrating User Data from MD " + UserDataMigrationService.SourceVersion); UserDataMigrationService.StartMigration (); } RegisterAddinRepositories (); Counters.RuntimeInitialization.Trace ("Initializing Assembly Service"); systemAssemblyService = new SystemAssemblyService (); systemAssemblyService.Initialize (); WebService.Initialize (); initialized = true; } catch (Exception ex) { Console.WriteLine (ex); AddinManager.AddinLoadError -= OnLoadError; AddinManager.AddinLoaded -= OnLoad; AddinManager.AddinUnloaded -= OnUnload; } finally { Counters.RuntimeInitialization.EndTiming (); } }
public static void Initialize (bool updateAddinRegistry) { if (initialized) return; Counters.RuntimeInitialization.BeginTiming (); SetupInstrumentation (); if (Platform.IsMac) InitMacFoundation (); // Set a default sync context if (SynchronizationContext.Current == null) SynchronizationContext.SetSynchronizationContext (new SynchronizationContext ()); AddinManager.AddinLoadError += OnLoadError; AddinManager.AddinLoaded += OnLoad; AddinManager.AddinUnloaded += OnUnload; try { Counters.RuntimeInitialization.Trace ("Initializing Addin Manager"); AddinManager.Initialize ( UserProfile.Current.ConfigDir, UserProfile.Current.LocalInstallDir, UserProfile.Current.CacheDir); AddinManager.InitializeDefaultLocalizer (new DefaultAddinLocalizer ()); if (updateAddinRegistry) AddinManager.Registry.Update (null); setupService = new AddinSetupService (AddinManager.Registry); Counters.RuntimeInitialization.Trace ("Initialized Addin Manager"); //have to do this after the addin service is initialized if (UserDataMigrationService.HasSource) { Counters.RuntimeInitialization.Trace ("Migrating User Data from MD " + UserDataMigrationService.SourceVersion); UserDataMigrationService.StartMigration (); } RegisterAddinRepositories (); Counters.RuntimeInitialization.Trace ("Initializing Assembly Service"); systemAssemblyService = new SystemAssemblyService (); systemAssemblyService.Initialize (); initialized = true; } catch (Exception ex) { Console.WriteLine (ex); AddinManager.AddinLoadError -= OnLoadError; AddinManager.AddinLoaded -= OnLoad; AddinManager.AddinUnloaded -= OnUnload; } finally { Counters.RuntimeInitialization.EndTiming (); } }
internal static SystemAssembly FromFile(string file) { return(new SystemAssembly(file, SystemAssemblyService.GetAssemblyName(file))); }
public static void Initialize (bool updateAddinRegistry) { if (initialized) return; Counters.RuntimeInitialization.BeginTiming (); SetupInstrumentation (); if (Platform.IsMac) InitMacFoundation (); // Set a default sync context if (SynchronizationContext.Current == null) SynchronizationContext.SetSynchronizationContext (new SynchronizationContext ()); // Hook up the SSL certificate validation codepath System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; if (sender is WebRequest) sender = ((WebRequest)sender).RequestUri.Host; return WebCertificateService.GetIsCertificateTrusted (sender as string, certificate.GetPublicKeyString ()); }; AddinManager.AddinLoadError += OnLoadError; AddinManager.AddinLoaded += OnLoad; AddinManager.AddinUnloaded += OnUnload; //provides a development-time way to load addins that are being developed in a asperate solution var devAddinDir = Environment.GetEnvironmentVariable ("MONODEVELOP_DEV_ADDINS"); if (devAddinDir != null && devAddinDir.Length == 0) devAddinDir = null; try { Counters.RuntimeInitialization.Trace ("Initializing Addin Manager"); AddinManager.Initialize ( UserProfile.Current.ConfigDir, devAddinDir ?? UserProfile.Current.LocalInstallDir.Combine ("Addins"), devAddinDir ?? UserProfile.Current.CacheDir); AddinManager.InitializeDefaultLocalizer (new DefaultAddinLocalizer ()); if (updateAddinRegistry) AddinManager.Registry.Update (null); setupService = new AddinSetupService (AddinManager.Registry); Counters.RuntimeInitialization.Trace ("Initialized Addin Manager"); PropertyService.Initialize (); //have to do this after the addin service and property service have initialized if (UserDataMigrationService.HasSource) { Counters.RuntimeInitialization.Trace ("Migrating User Data from MD " + UserDataMigrationService.SourceVersion); UserDataMigrationService.StartMigration (); } RegisterAddinRepositories (); Counters.RuntimeInitialization.Trace ("Initializing Assembly Service"); systemAssemblyService = new SystemAssemblyService (); systemAssemblyService.Initialize (); initialized = true; } catch (Exception ex) { Console.WriteLine (ex); AddinManager.AddinLoadError -= OnLoadError; AddinManager.AddinLoaded -= OnLoad; AddinManager.AddinUnloaded -= OnUnload; } finally { Counters.RuntimeInitialization.EndTiming (); } }
public async Task ImmutableCollectionsContainReferenceToSystemRuntimeAsync(bool withSystemRuntime, string relativeDllPath) { var result = await SystemAssemblyService.ContainsReferenceToSystemRuntimeAsync(relativeDllPath); Assert.That(result, Is.EqualTo(withSystemRuntime)); }
public void UpdateFromFile(string file) { Update(SystemAssemblyService.GetAssemblyNameObj(file)); }
public static TargetFramework FromFrameworkDirectory(TargetFrameworkMoniker moniker, FilePath dir) { var fxList = dir.Combine("RedistList", "FrameworkList.xml"); if (!File.Exists(fxList)) { return(null); } var fx = new TargetFramework(moniker); using (var reader = System.Xml.XmlReader.Create(fxList)) { if (!reader.ReadToDescendant("FileList")) { throw new Exception("Missing FileList element"); } //not sure what this is for //if (reader.MoveToAttribute ("Redist") && reader.ReadAttributeValue ()) // redist = reader.ReadContentAsString (); if (reader.MoveToAttribute("Name") && reader.ReadAttributeValue()) { fx.name = reader.ReadContentAsString(); } if (reader.MoveToAttribute("RuntimeVersion") && reader.ReadAttributeValue()) { string runtimeVersion = reader.ReadContentAsString(); switch (runtimeVersion) { case "2.0": fx.clrVersion = ClrVersion.Net_2_0; break; case "4.0": fx.clrVersion = ClrVersion.Net_4_0; break; case "4.5": case "4.5.1": fx.clrVersion = ClrVersion.Net_4_5; break; default: LoggingService.LogInfo("Framework {0} has unknown RuntimeVersion {1}", moniker, runtimeVersion); return(null); } } if (reader.MoveToAttribute("ToolsVersion") && reader.ReadAttributeValue()) { string toolsVersion = reader.ReadContentAsString(); switch (toolsVersion) { case "2.0": fx.toolsVersion = TargetFrameworkToolsVersion.V2_0; break; case "3.5": fx.toolsVersion = TargetFrameworkToolsVersion.V3_5; break; case "4.0": fx.toolsVersion = TargetFrameworkToolsVersion.V4_0; break; case "4.5": fx.toolsVersion = TargetFrameworkToolsVersion.V4_5; break; default: LoggingService.LogInfo("Framework {0} has unknown ToolsVersion {1}", moniker, toolsVersion); return(null); } } if (reader.MoveToAttribute("IncludeFramework") && reader.ReadAttributeValue()) { string include = reader.ReadContentAsString(); if (!string.IsNullOrEmpty(include)) { fx.includesFramework = include; } } //this is a Mono-specific extension if (reader.MoveToAttribute("TargetFrameworkDirectory") && reader.ReadAttributeValue()) { string targetDir = reader.ReadContentAsString(); if (!string.IsNullOrEmpty(targetDir)) { targetDir = targetDir.Replace('\\', System.IO.Path.DirectorySeparatorChar); dir = fxList.ParentDirectory.Combine(targetDir).FullPath; } } var assemblies = new List <AssemblyInfo> (); if (reader.ReadToFollowing("File")) { do { var ainfo = new AssemblyInfo(); assemblies.Add(ainfo); if (reader.MoveToAttribute("AssemblyName") && reader.ReadAttributeValue()) { ainfo.Name = reader.ReadContentAsString(); } if (string.IsNullOrEmpty(ainfo.Name)) { throw new Exception("Missing AssemblyName attribute"); } if (reader.MoveToAttribute("Version") && reader.ReadAttributeValue()) { ainfo.Version = reader.ReadContentAsString(); } if (reader.MoveToAttribute("PublicKeyToken") && reader.ReadAttributeValue()) { ainfo.PublicKeyToken = reader.ReadContentAsString(); } if (reader.MoveToAttribute("Culture") && reader.ReadAttributeValue()) { ainfo.Culture = reader.ReadContentAsString(); } if (reader.MoveToAttribute("ProcessorArchitecture") && reader.ReadAttributeValue()) { ainfo.ProcessorArchitecture = (ProcessorArchitecture) Enum.Parse(typeof(ProcessorArchitecture), reader.ReadContentAsString(), true); } if (reader.MoveToAttribute("InGac") && reader.ReadAttributeValue()) { ainfo.InGac = reader.ReadContentAsBoolean(); } } while (reader.ReadToFollowing("File")); } else if (Directory.Exists(dir)) { // HACK: we were using EnumerateFiles but it's broken in some Mono releases // https://bugzilla.xamarin.com/show_bug.cgi?id=2975 var files = Directory.GetFiles(dir, "*.dll"); foreach (var f in files) { try { var an = SystemAssemblyService.GetAssemblyNameObj(dir.Combine(f)); var ainfo = new AssemblyInfo(); ainfo.Update(an); assemblies.Add(ainfo); } catch (Exception ex) { LoggingService.LogError("Error reading name for assembly '{0}' in framework '{1}':\n{2}", f, fx.Id, ex.ToString()); } } } fx.Assemblies = assemblies.ToArray(); } var supportedFrameworksDir = dir.Combine("SupportedFrameworks"); if (Directory.Exists(supportedFrameworksDir)) { foreach (var sfx in Directory.GetFiles(supportedFrameworksDir)) { fx.SupportedFrameworks.Add(SupportedFramework.Load(fx, sfx)); } } return(fx); }
public async Task RequiresFacadeAssembliesAsync(bool addFacades, string relativeDllPath) { var result = await SystemAssemblyService.RequiresFacadeAssembliesAsync(relativeDllPath); Assert.That(result, Is.EqualTo(addFacades)); }
public static TargetFramework FromFrameworkDirectory(TargetFrameworkMoniker moniker, FilePath dir) { var fxList = dir.Combine("RedistList", "FrameworkList.xml"); if (!File.Exists(fxList)) { return(null); } var fx = new TargetFramework(moniker); using (var reader = System.Xml.XmlReader.Create(fxList)) { if (!reader.ReadToDescendant("FileList")) { throw new Exception("Missing FileList element"); } //not sure what this is for //if (reader.MoveToAttribute ("Redist") && reader.ReadAttributeValue ()) // redist = reader.ReadContentAsString (); if (reader.MoveToAttribute("Name") && reader.ReadAttributeValue()) { fx.name = reader.ReadContentAsString(); } if (reader.MoveToAttribute("IncludeFramework") && reader.ReadAttributeValue()) { string include = reader.ReadContentAsString(); if (!string.IsNullOrEmpty(include)) { fx.includesFramework = include; } } //this is a Mono-specific extension if (reader.MoveToAttribute("TargetFrameworkDirectory") && reader.ReadAttributeValue()) { string targetDir = reader.ReadContentAsString(); if (!string.IsNullOrEmpty(targetDir)) { targetDir = targetDir.Replace('\\', System.IO.Path.DirectorySeparatorChar); dir = fxList.ParentDirectory.Combine(targetDir).FullPath; } } var assemblies = new List <AssemblyInfo> (); if (reader.ReadToFollowing("File")) { do { var ainfo = new AssemblyInfo(); assemblies.Add(ainfo); if (reader.MoveToAttribute("AssemblyName") && reader.ReadAttributeValue()) { ainfo.Name = reader.ReadContentAsString(); } if (string.IsNullOrEmpty(ainfo.Name)) { throw new Exception("Missing AssemblyName attribute"); } if (reader.MoveToAttribute("Version") && reader.ReadAttributeValue()) { ainfo.Version = reader.ReadContentAsString(); } if (reader.MoveToAttribute("PublicKeyToken") && reader.ReadAttributeValue()) { ainfo.PublicKeyToken = reader.ReadContentAsString(); } if (reader.MoveToAttribute("Culture") && reader.ReadAttributeValue()) { ainfo.Culture = reader.ReadContentAsString(); } if (reader.MoveToAttribute("ProcessorArchitecture") && reader.ReadAttributeValue()) { ainfo.ProcessorArchitecture = (ProcessorArchitecture) Enum.Parse(typeof(ProcessorArchitecture), reader.ReadContentAsString(), true); } if (reader.MoveToAttribute("InGac") && reader.ReadAttributeValue()) { ainfo.InGac = reader.ReadContentAsBoolean(); } } while (reader.ReadToFollowing("File")); } else if (Directory.Exists(dir)) { foreach (var f in Directory.EnumerateFiles(dir, "*.dll")) { try { var an = SystemAssemblyService.GetAssemblyNameObj(dir.Combine(f)); var ainfo = new AssemblyInfo(); ainfo.Update(an); assemblies.Add(ainfo); } catch (BadImageFormatException ex) { LoggingService.LogError("Invalid assembly in framework '{0}': {1}{2}{3}", fx.Id, f, Environment.NewLine, ex.ToString()); } catch (Exception ex) { LoggingService.LogError("Error reading assembly '{0}' in framework '{1}':{2}{3}", f, fx.Id, Environment.NewLine, ex.ToString()); } } } fx.Assemblies = assemblies.ToArray(); } var supportedFrameworksDir = dir.Combine("SupportedFrameworks"); if (Directory.Exists(supportedFrameworksDir)) { foreach (var sfx in Directory.GetFiles(supportedFrameworksDir)) { fx.SupportedFrameworks.Add(SupportedFramework.Load(fx, sfx)); } } return(fx); }