Index: /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.3/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.3/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.3/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame (revision 4490)
@@ -28,4 +28,15 @@
[Plugin("HeuristicLab.Algorithms.DataAnalysis", "3.3.0.$WCREV$")]
[PluginFile("HeuristicLab.Algorithms.DataAnalysis-3.3.dll", PluginFileType.Assembly)]
+ [PluginDependency("HeuristicLab.Collections", "3.3")]
+ [PluginDependency("HeuristicLab.Common", "3.3")]
+ [PluginDependency("HeuristicLab.Core", "3.3")]
+ [PluginDependency("HeuristicLab.Data", "3.3")]
+ [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.3")]
+ [PluginDependency("HeuristicLab.Operators", "3.3")]
+ [PluginDependency("HeuristicLab.Optimization", "3.3")]
+ [PluginDependency("HeuristicLab.Parameters", "3.3")]
+ [PluginDependency("HeuristicLab.Persistence", "3.3")]
+ [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.3")]
+ [PluginDependency("HeuristicLab.Problems.DataAnalysis.Regression", "3.3")]
public class HeuristicLabAlgorithmsDataAnalysisPlugin : PluginBase {
}
Index: /trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/HeuristicLabAlgorithmsTabuSearchPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/HeuristicLabAlgorithmsTabuSearchPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/HeuristicLabAlgorithmsTabuSearchPlugin.cs.frame (revision 4490)
@@ -35,4 +35,5 @@
[PluginDependency("HeuristicLab.Operators", "3.3")]
[PluginDependency("HeuristicLab.Optimization", "3.3")]
+ [PluginDependency("HeuristicLab.Optimization.Operators", "3.3")]
[PluginDependency("HeuristicLab.Parameters", "3.3")]
[PluginDependency("HeuristicLab.Persistence", "3.3")]
Index: /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLabEncodingsRealVectorEncodingPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLabEncodingsRealVectorEncodingPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLabEncodingsRealVectorEncodingPlugin.cs.frame (revision 4490)
@@ -37,4 +37,5 @@
[PluginDependency("HeuristicLab.Parameters", "3.3")]
[PluginDependency("HeuristicLab.Persistence", "3.3")]
+ [PluginDependency("HeuristicLab.Random", "3.3")]
public class HeuristicLabEncodingsRealVectorEncodingPlugin : PluginBase {
}
Index: /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingViewsPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingViewsPlugin.cs.frame (revision 4490)
@@ -28,10 +28,11 @@
[Plugin("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views", "3.3.0.$WCREV$")]
[PluginFile("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3.dll", PluginFileType.Assembly)]
- [PluginDependency("HeuristicLab.Collections", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Common", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Core", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.3.0.0")]
- [PluginDependency("HeuristicLab.MainForm", "3.3.0.0")]
- [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3.0.0")]
+ [PluginDependency("HeuristicLab.Collections", "3.3")]
+ [PluginDependency("HeuristicLab.Common", "3.3")]
+ [PluginDependency("HeuristicLab.Core", "3.3")]
+ [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+ [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.3")]
+ [PluginDependency("HeuristicLab.MainForm", "3.3")]
+ [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
public class HeuristicLabEncodingsSymbolicExpressionTreeEncodingViewsPlugin : PluginBase {
}
Index: /trunk/sources/HeuristicLab.MainForm.WindowsForms/3.3/HeuristicLab.MainForm.WindowsForms-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.MainForm.WindowsForms/3.3/HeuristicLab.MainForm.WindowsForms-3.3.csproj (revision 4489)
+++ /trunk/sources/HeuristicLab.MainForm.WindowsForms/3.3/HeuristicLab.MainForm.WindowsForms-3.3.csproj (revision 4490)
@@ -203,4 +203,8 @@
HeuristicLab.Common-3.3
+
+ {678E2145-8152-4E19-9646-07D439D00301}
+ HeuristicLab.WinFormsUI-2.3.1 %28HeuristicLab.ExtLibs\HeuristicLab.WinFormsUI\HeuristicLab.WinFormsUI-2.3.1\HeuristicLab.WinFormsUI-2.3.1%29
+
{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/HeuristicLabOperatorsProgrammablePlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/HeuristicLabOperatorsProgrammablePlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/HeuristicLabOperatorsProgrammablePlugin.cs.frame (revision 4490)
@@ -30,4 +30,6 @@
[PluginDependency("HeuristicLab.CodeEditor", "3.3")]
[PluginDependency("HeuristicLab.Collections", "3.3")]
+ [PluginDependency("HeuristicLab.Common", "3.3")]
+ [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
[PluginDependency("HeuristicLab.Core", "3.3")]
[PluginDependency("HeuristicLab.Core.Views", "3.3")]
@@ -36,4 +38,5 @@
[PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
[PluginDependency("HeuristicLab.Operators", "3.3")]
+ [PluginDependency("HeuristicLab.Parameters", "3.3")]
[PluginDependency("HeuristicLab.Persistence", "3.3")]
public class HeuristicLabOperatorsProgrammablePlugin : PluginBase {
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame (revision 4490)
@@ -33,4 +33,5 @@
[PluginDependency("HeuristicLab.Collections", "3.3")]
[PluginDependency("HeuristicLab.Common", "3.3")]
+ [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
[PluginDependency("HeuristicLab.Core", "3.3")]
[PluginDependency("HeuristicLab.Core.Views", "3.3")]
@@ -39,4 +40,5 @@
[PluginDependency("HeuristicLab.Netron", "3.0")]
[PluginDependency("HeuristicLab.Operators", "3.3")]
+ [PluginDependency("HeuristicLab.Persistence", "3.3")]
public class HeuristicLabOperatorsViewsGraphVisualizationPlugin : PluginBase {
}
Index: /trunk/sources/HeuristicLab.Optimization.Operators/3.3/HeuristicLabOptimizationOperatorsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Operators/3.3/HeuristicLabOptimizationOperatorsPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Optimization.Operators/3.3/HeuristicLabOptimizationOperatorsPlugin.cs.frame (revision 4490)
@@ -33,4 +33,5 @@
[PluginDependency("HeuristicLab.Data", "3.3")]
[PluginDependency("HeuristicLab.Operators", "3.3")]
+ [PluginDependency("HeuristicLab.Optimization","3.3")]
[PluginDependency("HeuristicLab.Parameters", "3.3")]
[PluginDependency("HeuristicLab.Persistence", "3.3")]
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLabOptimizationViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLabOptimizationViewsPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLabOptimizationViewsPlugin.cs.frame (revision 4490)
@@ -33,4 +33,6 @@
[PluginDependency("HeuristicLab.Core", "3.3")]
[PluginDependency("HeuristicLab.Core.Views", "3.3")]
+ [PluginDependency("HeuristicLab.Data", "3.3")]
+ [PluginDependency("HeuristicLab.Data.Views", "3.3")]
[PluginDependency("HeuristicLab.MainForm", "3.3")]
[PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLabProblemsDataAnalysisPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLabProblemsDataAnalysisPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLabProblemsDataAnalysisPlugin.cs.frame (revision 4490)
@@ -29,15 +29,16 @@
[PluginFile("HeuristicLab.Problems.DataAnalysis-3.3.dll", PluginFileType.Assembly)]
[PluginDependency("HeuristicLab.ALGLIB", "2.5")]
- [PluginDependency("HeuristicLab.Collections", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Common", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Common.Resources", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Core", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Data", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.3.0.0")]
+ [PluginDependency("HeuristicLab.Collections", "3.3")]
+ [PluginDependency("HeuristicLab.Common", "3.3")]
+ [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+ [PluginDependency("HeuristicLab.Core", "3.3")]
+ [PluginDependency("HeuristicLab.Data", "3.3")]
+ [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.3")]
[PluginDependency("HeuristicLab.LibSVM", "1.6.3.0")]
- [PluginDependency("HeuristicLab.Operators", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Parameters", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Persistence", "3.3.0.0")]
- [PluginDependency("HeuristicLab.Random", "3.3.0.0")]
+ [PluginDependency("HeuristicLab.Operators", "3.3")]
+ [PluginDependency("HeuristicLab.Optimization","3.3")]
+ [PluginDependency("HeuristicLab.Parameters", "3.3")]
+ [PluginDependency("HeuristicLab.Persistence", "3.3")]
+ [PluginDependency("HeuristicLab.Random", "3.3")]
public class HeuristicLabProblemsDataAnalysisPlugin : PluginBase {
}
Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation.GP.Views/3.3/HeuristicLabProblemsExternalEvaluationGPViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation.GP.Views/3.3/HeuristicLabProblemsExternalEvaluationGPViewsPlugin.cs.frame (revision 4489)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation.GP.Views/3.3/HeuristicLabProblemsExternalEvaluationGPViewsPlugin.cs.frame (revision 4490)
@@ -33,7 +33,9 @@
[PluginDependency("HeuristicLab.Core", "3.3")]
[PluginDependency("HeuristicLab.Core.Views", "3.3")]
+ [PluginDependency("HeuristicLab.Data", "3.3")]
[PluginDependency("HeuristicLab.MainForm", "3.3")]
[PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
[PluginDependency("HeuristicLab.Problems.ExternalEvaluation", "3.3")]
+ [PluginDependency("HeuristicLab.Problems.ExternalEvaluation.GP", "3.3")]
[PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.3")]
public class HeuristicLabProblemsExternalEvaluationGPViewsPlugin : PluginBase { }
Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation.GP/3.3/HeuristicLab.Problems.ExternalEvaluation.GP-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation.GP/3.3/HeuristicLab.Problems.ExternalEvaluation.GP-3.3.csproj (revision 4489)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation.GP/3.3/HeuristicLab.Problems.ExternalEvaluation.GP-3.3.csproj (revision 4490)
@@ -153,4 +153,8 @@
HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3
+
+ {236459CE-80CF-4991-972F-DE74C826BCCC}
+ HeuristicLab.ProtobufCS-0.9.1 %28HeuristicLab.ExtLibs\HeuristicLab.ProtobufCS\HeuristicLab.ProtobufCS-0.9.1\HeuristicLab.ProtobufCS-0.9.1%29
+
{6908BDCE-D925-43F3-94AC-A531E6DF2591}
Index: /trunk/sources/HeuristicLab.Tracing/3.3/HeuristicLab.Tracing-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Tracing/3.3/HeuristicLab.Tracing-3.3.csproj (revision 4489)
+++ /trunk/sources/HeuristicLab.Tracing/3.3/HeuristicLab.Tracing-3.3.csproj (revision 4490)
@@ -124,4 +124,8 @@
+
+ {1B3063DB-D71C-4A6A-A359-883E8F53A140}
+ HeuristicLab.log4net-1.2.10.0
+
{94186A6A-5176-4402-AE83-886557B53CCA}
Index: /trunk/sources/HeuristicLab/3.3/Tests/ContentViewTests.cs
===================================================================
--- /trunk/sources/HeuristicLab/3.3/Tests/ContentViewTests.cs (revision 4489)
+++ /trunk/sources/HeuristicLab/3.3/Tests/ContentViewTests.cs (revision 4490)
@@ -1,3 +1,24 @@
-using System;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see .
+ */
+#endregion
+
+using System;
using System.Linq;
using HeuristicLab.Common;
@@ -31,5 +52,5 @@
[ClassInitialize]
public static void MyClassInitialize(TestContext testContext) {
- PluginLoader.LoadPluginsIntoAppDomain();
+ PluginLoader.pluginAssemblies.Any();
}
Index: /trunk/sources/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj
===================================================================
--- /trunk/sources/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj (revision 4489)
+++ /trunk/sources/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj (revision 4490)
@@ -99,4 +99,5 @@
3.5
+
@@ -107,4 +108,5 @@
+
Index: /trunk/sources/HeuristicLab/3.3/Tests/PluginDependenciesTest.cs
===================================================================
--- /trunk/sources/HeuristicLab/3.3/Tests/PluginDependenciesTest.cs (revision 4490)
+++ /trunk/sources/HeuristicLab/3.3/Tests/PluginDependenciesTest.cs (revision 4490)
@@ -0,0 +1,92 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see .
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace HeuristicLab_3._3.Tests {
+ [TestClass]
+ public class PluginDependenciesTest {
+ private static Dictionary loadedPlugins;
+ private static Dictionary pluginNames;
+
+ // Use ClassInitialize to run code before running the first test in the class
+ [ClassInitialize]
+ public static void MyClassInitialize(TestContext testContext) {
+ loadedPlugins = PluginLoader.pluginAssemblies.ToDictionary(a => a, GetPluginFromAssembly);
+ pluginNames = loadedPlugins.ToDictionary(a => a.Key.GetName().FullName,
+ a => GetPluginName(a.Value));
+ }
+
+ [TestMethod]
+ public void CheckReferenceAssembliesForPluginDependencies() {
+ StringBuilder errorMessage = new StringBuilder();
+ foreach (Assembly pluginAssembly in loadedPlugins.Keys) {
+ Type plugin = loadedPlugins[pluginAssembly];
+ Dictionary pluginDependencies =
+ Attribute.GetCustomAttributes(plugin, false).OfType().ToDictionary(a => a.Dependency);
+ foreach (AssemblyName referencedPluginName in pluginAssembly.GetReferencedAssemblies())
+ if (pluginNames.ContainsKey(referencedPluginName.FullName)) { //check if reference assembly is a plugin
+ if (!pluginDependencies.ContainsKey(pluginNames[referencedPluginName.FullName]))
+ errorMessage.AppendLine("Missing dependency in plugin " + plugin + " to referenced plugin " + pluginNames[referencedPluginName.FullName] + ".");
+ }
+ }
+
+ Assert.IsTrue(errorMessage.Length == 0, errorMessage.ToString());
+ }
+
+ [TestMethod]
+ public void CheckPluginDependenciesForReferencedAssemblies() {
+ StringBuilder errorMessage = new StringBuilder();
+ foreach (Assembly pluginAssembly in loadedPlugins.Keys) {
+ Type plugin = loadedPlugins[pluginAssembly];
+ Dictionary pluginDependencies =
+ Attribute.GetCustomAttributes(plugin, false).OfType().ToDictionary(a => a, a => a.Dependency);
+
+ foreach (PluginDependencyAttribute attribute in pluginDependencies.Keys) {
+ string pluginDependencyName = pluginDependencies[attribute];
+ if (pluginAssembly.GetReferencedAssemblies()
+ .All(a => pluginNames.ContainsKey(a.FullName) && pluginNames[a.FullName] != pluginDependencyName)) {
+ errorMessage.AppendLine("Unnecessary plugin dependency in " + GetPluginName(plugin) + " to " + pluginDependencyName + ".");
+ }
+ }
+ }
+
+ Assert.IsTrue(errorMessage.Length == 0, errorMessage.ToString());
+ }
+
+ private static Type GetPluginFromAssembly(Assembly assembly) {
+ return assembly.GetExportedTypes().Where(t => typeof(IPlugin).IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface).FirstOrDefault();
+ }
+ private static string GetPluginName(Type plugin) {
+ string name = string.Empty;
+ PluginAttribute pluginAttribute = (PluginAttribute)Attribute.GetCustomAttribute(plugin, typeof(PluginAttribute));
+ if (pluginAttribute != null)
+ name = pluginAttribute.Name;
+ return name;
+ }
+ }
+}
Index: /trunk/sources/HeuristicLab/3.3/Tests/PluginLoader.cs
===================================================================
--- /trunk/sources/HeuristicLab/3.3/Tests/PluginLoader.cs (revision 4489)
+++ /trunk/sources/HeuristicLab/3.3/Tests/PluginLoader.cs (revision 4490)
@@ -1,79 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using HeuristicLab.PluginInfrastructure;
+
namespace HeuristicLab_3._3.Tests {
internal static class PluginLoader {
- public static void LoadPluginsIntoAppDomain() {
- new HeuristicLab.ALGLIB.HeuristicLabAlgLibPlugin();
+ public const string AssemblyExtension = ".dll";
+ public static List pluginAssemblies;
- new HeuristicLab.Algorithms.DataAnalysis.HeuristicLabAlgorithmsDataAnalysisPlugin();
- new HeuristicLab.Algorithms.EvolutionStrategy.HeuristicLabAlgorithmsEvolutionStrategyPlugin();
- new HeuristicLab.Algorithms.GeneticAlgorithm.HeuristicLabAlgorithmsGeneticAlgorithmPlugin();
- new HeuristicLab.Algorithms.LocalSearch.HeuristicLabAlgorithmsLocalSearchPlugin();
- new HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm.HeuristicLabAlgorithmsOffspringSelectionGeneticAlgorithmPlugin();
- new HeuristicLab.Algorithms.SimulatedAnnealing.HeuristicLabAlgorithmsSimulatedAnnealingPlugin();
- new HeuristicLab.Algorithms.TabuSearch.HeuristicLabAlgorithmsTabuSearchPlugin();
+ static PluginLoader() {
+ foreach (string path in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory)
+ .Where(s => s.EndsWith(AssemblyExtension)))
+ Assembly.LoadFrom(path);
- new HeuristicLab.Analysis.HeuristicLabAnalysisPlugin();
- new HeuristicLab.Analysis.Views.HeuristicLabAnalysisViewsPlugin();
+ pluginAssemblies = AppDomain.CurrentDomain.GetAssemblies().Where(IsPluginAssembly).ToList();
+ }
- new HeuristicLab.Clients.Common.HeuristicLabClientsCommonPlugin();
- new HeuristicLab.CodeEditor.HeuristicLabCodeEditorPlugin();
- new HeuristicLab.Collections.HeuristicLabCollectionsPlugin();
+ private static bool IsPluginAssembly(Assembly assembly) {
+ return assembly.GetExportedTypes()
+ .Where(t => typeof(IPlugin).IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface).Any();
+ }
- new HeuristicLab.Common.HeuristicLabCommonPlugin();
- new HeuristicLab.Common.Resources.HeuristicLabCommonResourcesPlugin();
- new HeuristicLab.Core.HeuristicLabCorePlugin();
- new HeuristicLab.Core.Views.HeuristicLabCoreViewsPlugin();
+ //public static void LoadPluginsIntoAppDomain() {
+ // new HeuristicLab.Algorithms.DataAnalysis.HeuristicLabAlgorithmsDataAnalysisPlugin();
+ // new HeuristicLab.Algorithms.EvolutionStrategy.HeuristicLabAlgorithmsEvolutionStrategyPlugin();
+ // new HeuristicLab.Algorithms.GeneticAlgorithm.HeuristicLabAlgorithmsGeneticAlgorithmPlugin();
+ // new HeuristicLab.Algorithms.LocalSearch.HeuristicLabAlgorithmsLocalSearchPlugin();
+ // new HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm.HeuristicLabAlgorithmsOffspringSelectionGeneticAlgorithmPlugin();
+ // new HeuristicLab.Algorithms.SimulatedAnnealing.HeuristicLabAlgorithmsSimulatedAnnealingPlugin();
+ // new HeuristicLab.Algorithms.TabuSearch.HeuristicLabAlgorithmsTabuSearchPlugin();
- new HeuristicLab.Data.HeuristicLabDataPlugin();
- new HeuristicLab.Data.Views.HeuristicLabDataViewsPlugin();
+ // new HeuristicLab.Analysis.HeuristicLabAnalysisPlugin();
+ // new HeuristicLab.Analysis.Views.HeuristicLabAnalysisViewsPlugin();
- new HeuristicLab.Encodings.BinaryVectorEncoding.HeuristicLabEncodingsBinaryVectorEncodingPlugin();
- new HeuristicLab.Encodings.IntegerVectorEncoding.HeuristicLabEncodingsIntegerVectorEncodingPlugin();
- new HeuristicLab.Encodings.PermutationEncoding.HeuristicLabEncodingsPermutationEncodingPlugin();
- new HeuristicLab.Encodings.PermutationEncoding.Views.HeuristicLabEncodingsPermutationEncodingViewsPlugin();
- new HeuristicLab.Encodings.RealVectorEncoding.HeuristicLabEncodingsRealVectorEncodingPlugin();
- new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.HeuristicLabEncodingsSymbolicExpressionTreeEncodingPlugin();
- new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.HeuristicLabEncodingsSymbolicExpressionTreeEncodingViewsPlugin();
+ // new HeuristicLab.Clients.Common.HeuristicLabClientsCommonPlugin();
+ // new HeuristicLab.CodeEditor.HeuristicLabCodeEditorPlugin();
+ // new HeuristicLab.Collections.HeuristicLabCollectionsPlugin();
- new HeuristicLab.MainForm.HeuristicLabMainFormPlugin();
- new HeuristicLab.MainForm.WindowsForms.HeuristicLabMainFormPlugin();
+ // new HeuristicLab.Common.HeuristicLabCommonPlugin();
+ // new HeuristicLab.Common.Resources.HeuristicLabCommonResourcesPlugin();
- new HeuristicLab.Operators.HeuristicLabOperatorsPlugin();
- new HeuristicLab.Operators.Programmable.HeuristicLabOperatorsProgrammablePlugin();
- new HeuristicLab.Operators.Views.HeuristicLabOperatorsViewsPlugin();
- new HeuristicLab.Operators.Views.GraphVisualization.HeuristicLabOperatorsViewsGraphVisualizationPlugin();
+ // new HeuristicLab.Core.HeuristicLabCorePlugin();
+ // new HeuristicLab.Core.Views.HeuristicLabCoreViewsPlugin();
- new HeuristicLab.Parameters.HeuristicLabParametersPlugin();
- new HeuristicLab.Parameters.Views.HeuristicLabParametersViewsPlugin();
+ // new HeuristicLab.Data.HeuristicLabDataPlugin();
+ // new HeuristicLab.Data.Views.HeuristicLabDataViewsPlugin();
- new HeuristicLab.Persistence.HeuristicLabPersistencePlugin();
- new HeuristicLab.Persistence.GUI.HeuristicLabPersistenceGUIPlugin();
+ // new HeuristicLab.Encodings.BinaryVectorEncoding.HeuristicLabEncodingsBinaryVectorEncodingPlugin();
+ // new HeuristicLab.Encodings.IntegerVectorEncoding.HeuristicLabEncodingsIntegerVectorEncodingPlugin();
+ // new HeuristicLab.Encodings.PermutationEncoding.HeuristicLabEncodingsPermutationEncodingPlugin();
+ // new HeuristicLab.Encodings.PermutationEncoding.Views.HeuristicLabEncodingsPermutationEncodingViewsPlugin();
+ // new HeuristicLab.Encodings.RealVectorEncoding.HeuristicLabEncodingsRealVectorEncodingPlugin();
+ // new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.HeuristicLabEncodingsSymbolicExpressionTreeEncodingPlugin();
+ // new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.HeuristicLabEncodingsSymbolicExpressionTreeEncodingViewsPlugin();
- new HeuristicLab.Problems.ArtificialAnt.HeuristicLabProblemsArtificialAntPlugin();
- new HeuristicLab.Problems.ArtificialAnt.Views.HeuristicLabProblemsArtificialAntViewsPlugin();
- new HeuristicLab.Problems.DataAnalysis.HeuristicLabProblemsDataAnalysisPlugin();
- new HeuristicLab.Problems.DataAnalysis.Regression.HeuristicLabProblemsDataAnalysisRegressionPlugin();
- new HeuristicLab.Problems.DataAnalysis.Views.HeuristicLabProblemsDataAnalysisViewsPlugin();
- new HeuristicLab.Problems.ExternalEvaluation.HeuristicLabProblemsExternalEvaluationPlugin();
- new HeuristicLab.Problems.ExternalEvaluation.GP.HeuristicLabProblemsExternalEvaluationGPPlugin();
- new HeuristicLab.Problems.ExternalEvaluation.GP.Views.HeuristicLabProblemsExternalEvaluationGPViewsPlugin();
- new HeuristicLab.Problems.ExternalEvaluation.Views.HeuristicLabProblemsExternalEvaluationViewsPlugin();
- new HeuristicLab.Problems.Knapsack.HeuristicLabProblemsKnapsackPlugin();
- new HeuristicLab.Problems.Knapsack.Views.HeuristicLabProblemsKnapsackViewsPlugin();
- new HeuristicLab.Problems.OneMax.HeuristicLabProblemsOneMaxPlugin();
- new HeuristicLab.Problems.OneMax.Views.HeuristicLabProblemsKnapsackViewsPlugin();
- new HeuristicLab.Problems.TestFunctions.HeuristicLabProblemsTestFunctionsPlugin();
- new HeuristicLab.Problems.TestFunctions.Views.HeuristicLabProblemsTestFunctionsViewsPlugin();
- new HeuristicLab.Problems.TravelingSalesman.HeuristicLabProblemsTravelingSalesmanPlugin();
- new HeuristicLab.Problems.TravelingSalesman.Views.HeuristicLabProblemsTravelingSalesmanViewsPlugin();
- new HeuristicLab.Problems.VehicleRouting.HeuristicLabProblemsVehicleRoutingPlugin();
- new HeuristicLab.Problems.VehicleRouting.Views.HeuristicLabProblemsVehicleRoutingViewsPlugin();
+ // new HeuristicLab.MainForm.HeuristicLabMainFormPlugin();
+ // new HeuristicLab.MainForm.WindowsForms.HeuristicLabMainFormPlugin();
- new HeuristicLab.Random.HeuristicLabRandomPlugin();
- new HeuristicLab.Selection.HeuristicLabSelectionPlugin();
- new HeuristicLab.SequentialEngine.HeuristicLabSequentialEnginePlugin();
- new HeuristicLab.Tracing.HeuristicLabPersistencePlugin();
- }
+ // new HeuristicLab.Operators.HeuristicLabOperatorsPlugin();
+ // new HeuristicLab.Operators.Programmable.HeuristicLabOperatorsProgrammablePlugin();
+ // new HeuristicLab.Operators.Views.HeuristicLabOperatorsViewsPlugin();
+ // new HeuristicLab.Operators.Views.GraphVisualization.HeuristicLabOperatorsViewsGraphVisualizationPlugin();
+
+ // new HeuristicLab.Parameters.HeuristicLabParametersPlugin();
+ // new HeuristicLab.Parameters.Views.HeuristicLabParametersViewsPlugin();
+
+ // new HeuristicLab.Persistence.HeuristicLabPersistencePlugin();
+ // new HeuristicLab.Persistence.GUI.HeuristicLabPersistenceGUIPlugin();
+
+ // new HeuristicLab.Problems.ArtificialAnt.HeuristicLabProblemsArtificialAntPlugin();
+ // new HeuristicLab.Problems.ArtificialAnt.Views.HeuristicLabProblemsArtificialAntViewsPlugin();
+ // new HeuristicLab.Problems.DataAnalysis.HeuristicLabProblemsDataAnalysisPlugin();
+ // new HeuristicLab.Problems.DataAnalysis.Regression.HeuristicLabProblemsDataAnalysisRegressionPlugin();
+ // new HeuristicLab.Problems.DataAnalysis.Views.HeuristicLabProblemsDataAnalysisViewsPlugin();
+ // new HeuristicLab.Problems.ExternalEvaluation.HeuristicLabProblemsExternalEvaluationPlugin();
+ // new HeuristicLab.Problems.ExternalEvaluation.GP.HeuristicLabProblemsExternalEvaluationGPPlugin();
+ // new HeuristicLab.Problems.ExternalEvaluation.GP.Views.HeuristicLabProblemsExternalEvaluationGPViewsPlugin();
+ // new HeuristicLab.Problems.ExternalEvaluation.Views.HeuristicLabProblemsExternalEvaluationViewsPlugin();
+ // new HeuristicLab.Problems.Knapsack.HeuristicLabProblemsKnapsackPlugin();
+ // new HeuristicLab.Problems.Knapsack.Views.HeuristicLabProblemsKnapsackViewsPlugin();
+ // new HeuristicLab.Problems.OneMax.HeuristicLabProblemsOneMaxPlugin();
+ // new HeuristicLab.Problems.OneMax.Views.HeuristicLabProblemsKnapsackViewsPlugin();
+ // new HeuristicLab.Problems.TestFunctions.HeuristicLabProblemsTestFunctionsPlugin();
+ // new HeuristicLab.Problems.TestFunctions.Views.HeuristicLabProblemsTestFunctionsViewsPlugin();
+ // new HeuristicLab.Problems.TravelingSalesman.HeuristicLabProblemsTravelingSalesmanPlugin();
+ // new HeuristicLab.Problems.TravelingSalesman.Views.HeuristicLabProblemsTravelingSalesmanViewsPlugin();
+ // new HeuristicLab.Problems.VehicleRouting.HeuristicLabProblemsVehicleRoutingPlugin();
+ // new HeuristicLab.Problems.VehicleRouting.Views.HeuristicLabProblemsVehicleRoutingViewsPlugin();
+
+ // new HeuristicLab.Random.HeuristicLabRandomPlugin();
+ // new HeuristicLab.Selection.HeuristicLabSelectionPlugin();
+ // new HeuristicLab.SequentialEngine.HeuristicLabSequentialEnginePlugin();
+ // new HeuristicLab.Tracing.HeuristicLabPersistencePlugin();
+ //}
}
}