Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/06/15 15:46:50 (9 years ago)
Author:
ascheibe
Message:

#2401 merged r12490,r12507,r12518 into stable

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Tests

  • stable/HeuristicLab.Tests/HeuristicLab-3.3/PluginDependenciesTest.cs

    r12009 r12608  
    6060      foreach (Assembly pluginAssembly in loadedPlugins.Keys) {
    6161        Type plugin = loadedPlugins[pluginAssembly];
     62        var pluginFiles = new HashSet<string>(Attribute.GetCustomAttributes(plugin, false)
     63            .OfType<PluginFileAttribute>().Where(pf => pf.FileType == PluginFileType.Assembly).Select(pf => pf.FileName));
     64        var pluginAssemblies = PluginLoader.Assemblies.Where(a => pluginFiles.Contains(Path.GetFileName(a.Location))).ToList();
     65        var referencedAssemblies = pluginAssemblies.SelectMany(a => a.GetReferencedAssemblies()).ToList();
     66
    6267        Dictionary<string, PluginDependencyAttribute> pluginDependencies = Attribute.GetCustomAttributes(plugin, false).OfType<PluginDependencyAttribute>().ToDictionary(a => a.Dependency);
    6368
    64         foreach (AssemblyName referencedAssemblyName in pluginAssembly.GetReferencedAssemblies()) {
     69        foreach (AssemblyName referencedAssemblyName in referencedAssemblies) {
    6570          if (IsPluginAssemblyName(referencedAssemblyName)) {
    6671            if (!pluginDependencies.ContainsKey(pluginNames[referencedAssemblyName.FullName]))
     
    8792        Type plugin = loadedPlugins[pluginAssembly];
    8893        Dictionary<PluginDependencyAttribute, string> pluginDependencies = Attribute.GetCustomAttributes(plugin, false).OfType<PluginDependencyAttribute>().ToDictionary(a => a, a => a.Dependency);
     94        var pluginFiles = new HashSet<string>(Attribute.GetCustomAttributes(plugin, false)
     95          .OfType<PluginFileAttribute>().Where(pf => pf.FileType == PluginFileType.Assembly).Select(pf => pf.FileName));
     96        var pluginAssemblies = PluginLoader.Assemblies.Where(a => pluginFiles.Contains(Path.GetFileName(a.Location))).ToList();
     97        var referencedAssemblies = pluginAssemblies.SelectMany(a => a.GetReferencedAssemblies()).ToList();
    8998
    9099        foreach (PluginDependencyAttribute attribute in pluginDependencies.Keys) {
     
    93102          if (pluginDependencyName == "HeuristicLab.MathJax") continue; //is never referenced as this plugin contains HTML files
    94103          if (pluginDependencyName == "HeuristicLab.MatlabConnector") continue; //the matlab connector is loaded dynamically and hence not referenced by the dll
    95           var referencedPluginAssemblies = pluginAssembly.GetReferencedAssemblies().Where(IsPluginAssemblyName);
     104          var referencedPluginAssemblies = referencedAssemblies.Where(IsPluginAssemblyName);
    96105          if (referencedPluginAssemblies.Any(a => pluginNames[a.FullName] == pluginDependencyName)) continue;
    97106
    98           var referencedNonPluginAssemblies = pluginAssembly.GetReferencedAssemblies().Where(a => !IsPluginAssemblyName(a));
     107          var referencedNonPluginAssemblies = referencedAssemblies.Where(a => !IsPluginAssemblyName(a));
    99108          bool found = (from referencedNonPluginAssembly in referencedNonPluginAssemblies
    100109                        select referencedNonPluginAssembly.Name into assemblyName
Note: See TracChangeset for help on using the changeset viewer.