public Add ( Mono.Addins.Description.Dependency dep ) : void | ||
dep | Mono.Addins.Description.Dependency | /// The dependency to add. /// |
return | void |
static void ReadDependencies(DependencyCollection deps, DependencyCollection opDeps, XmlElement elem) { foreach (XmlElement dep in elem.SelectNodes ("Dependencies/Addin")) { AddinDependency adep = new AddinDependency (); adep.AddinId = dep.GetAttribute ("id"); string v = dep.GetAttribute ("version"); if (v.Length != 0) adep.Version = v; deps.Add (adep); } foreach (XmlElement dep in elem.SelectNodes ("Dependencies/Assembly")) { AssemblyDependency adep = new AssemblyDependency (); adep.FullName = dep.GetAttribute ("name"); adep.Package = dep.GetAttribute ("package"); deps.Add (adep); } foreach (XmlElement mod in elem.SelectNodes ("Module")) ReadDependencies (opDeps, opDeps, mod); }
internal void ResolveDependency(IProgressMonitor monitor, Dependency dep, AddinPackage parentPackage, PackageCollection toInstall, PackageCollection toUninstall, PackageCollection installedRequired, DependencyCollection unresolved) { AddinDependency adep = dep as AddinDependency; if (adep == null) return; string nsid = Addin.GetFullId (parentPackage.Addin.Namespace, adep.AddinId, null); foreach (Package p in toInstall) { AddinPackage ap = p as AddinPackage; if (ap != null) { if (Addin.GetIdName (ap.Addin.Id) == nsid && ((AddinInfo)ap.Addin).SupportsVersion (adep.Version)) return; } } ArrayList addins = new ArrayList (); addins.AddRange (service.Registry.GetAddins ()); addins.AddRange (service.Registry.GetAddinRoots ()); foreach (Addin addin in addins) { if (Addin.GetIdName (addin.Id) == nsid && addin.SupportsVersion (adep.Version)) { AddinPackage p = AddinPackage.FromInstalledAddin (addin); if (!installedRequired.Contains (p)) installedRequired.Add (p); return; } } AddinRepositoryEntry[] avaddins = service.Repositories.GetAvailableAddins (); foreach (PackageRepositoryEntry avAddin in avaddins) { if (Addin.GetIdName (avAddin.Addin.Id) == nsid && ((AddinInfo)avAddin.Addin).SupportsVersion (adep.Version)) { toInstall.Add (AddinPackage.FromRepository (avAddin)); return; } } unresolved.Add (adep); }