Index: /trunk/sources/HeuristicLab.Core/3.2/HeuristicLabCorePlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.2/HeuristicLabCorePlugin.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.Core/3.2/HeuristicLabCorePlugin.cs	(revision 2750)
@@ -30,5 +30,5 @@
   /// Plugin class for HeuristicLab.Core plugin.
   /// </summary>
-  [Plugin("HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Core-3.2", "3.2.0.0")]
   [PluginFile("HeuristicLab.Core-3.2.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Common-3.2")]
Index: /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLab.GP.Algorithms-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLab.GP.Algorithms-3.2.csproj	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLab.GP.Algorithms-3.2.csproj	(revision 2750)
@@ -83,4 +83,5 @@
   <ItemGroup>
     <Compile Include="AlgorithmBase.cs" />
+    <None Include="HeuristicLabGpAlgorithmsPlugin.cs.frame" />
     <Compile Include="HeuristicLabGpAlgorithmsPlugin.cs" />
     <Compile Include="OffspringSelectionGP.cs">
@@ -186,5 +187,6 @@
 set Outdir=$(Outdir)
 
-call PreBuildEvent.cmd</PreBuildEvent>
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25/" "%25ProjectDir%25/HeuristicLabGPAlgorithmsPlugin.cs.frame" "%25ProjectDir%25/HeuristicLabGPAlgorithmsPlugin.cs"</PreBuildEvent>
   </PropertyGroup>
 </Project>
Index: /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs	(revision 2750)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.GP.Algorithms {
-  [Plugin("HeuristicLab.GP.Algorithms-3.2")]
+  [Plugin("HeuristicLab.GP.Algorithms", "3.3.0.2728")]
   [PluginFile("HeuristicLab.GP.Algorithms-3.2.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Common-3.2")]
@@ -32,7 +32,7 @@
   [PluginDependency("HeuristicLab.Data-3.2")]
   [PluginDependency("HeuristicLab.Evolutionary-3.2")]
-  [PluginDependency("HeuristicLab.GP-3.3")]
-  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
-  [PluginDependency("HeuristicLab.GP.Operators-3.3")]
+  [PluginDependency("HeuristicLab.GP", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Logging-3.2")]
   [PluginDependency("HeuristicLab.Operators-3.2")]
Index: /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs.frame	(revision 2750)
+++ /trunk/sources/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs.frame	(revision 2750)
@@ -0,0 +1,45 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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 <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.GP.Algorithms {
+  [Plugin("HeuristicLab.GP.Algorithms", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.GP.Algorithms-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.GP", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Selection.OffspringSelection-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  public class HeuristicLabGpAlgorithmsPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.Algorithms/3.2/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.Algorithms/3.2/Properties/AssemblyInfo.frame	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Algorithms/3.2/Properties/AssemblyInfo.frame	(revision 2750)
@@ -23,5 +23,4 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -33,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,5 +53,4 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyVersion("3.2.0.0")]
 [assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
-[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLab.GP.Interfaces-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLab.GP.Interfaces-3.3.csproj	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLab.GP.Interfaces-3.3.csproj	(revision 2750)
@@ -80,4 +80,5 @@
   </ItemGroup>
   <ItemGroup>
+    <None Include="HeuristicLabGPInterfacesPlugin.cs.frame" />
     <Compile Include="FunctionTreeIterator.cs" />
     <Compile Include="IFunctionTreeSerializer.cs">
@@ -119,5 +120,6 @@
 set Outdir=$(Outdir)
 
-call PreBuildEvent.cmd</PreBuildEvent>
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25/" "%25ProjectDir%25/HeuristicLabGPInterfacesPlugin.cs.frame" "%25ProjectDir%25/HeuristicLabGPInterfacesPlugin.cs"</PreBuildEvent>
   </PropertyGroup>
 </Project>
Index: /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs	(revision 2750)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.GP.Interfaces {
-  [Plugin("HeuristicLab.GP.Interfaces-3.3")]
+  [Plugin("HeuristicLab.GP.Interfaces", "3.3.0.2591")]
   [PluginFile("HeuristicLab.GP.Interfaces-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Core-3.2")]
Index: /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs.frame	(revision 2750)
+++ /trunk/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs.frame	(revision 2750)
@@ -0,0 +1,33 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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 <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.GP.Interfaces {
+  [Plugin("HeuristicLab.GP.Interfaces", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.GP.Interfaces-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  public class HeuristicLabGPInterfacesPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.Interfaces/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.Interfaces/3.3/Properties/AssemblyInfo.frame	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Interfaces/3.3/Properties/AssemblyInfo.frame	(revision 2750)
@@ -23,5 +23,4 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -33,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,5 +53,4 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyVersion("3.3.0.0")]
 [assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
-[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLab.GP.Operators-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLab.GP.Operators-3.3.csproj	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLab.GP.Operators-3.3.csproj	(revision 2750)
@@ -80,4 +80,5 @@
   </ItemGroup>
   <ItemGroup>
+    <None Include="HeuristicLabGPOperatorsPlugin.cs.frame" />
     <Compile Include="Logging\SymbolFrequencyAnalyser.cs" />
     <Compile Include="Util.cs" />
@@ -161,5 +162,6 @@
 set Outdir=$(Outdir)
 
-call PreBuildEvent.cmd</PreBuildEvent>
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25/" "%25ProjectDir%25/HeuristicLabGPOperatorsPlugin.cs.frame" "%25ProjectDir%25/HeuristicLabGPOperatorsPlugin.cs"</PreBuildEvent>
   </PropertyGroup>
 </Project>
Index: /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs	(revision 2750)
@@ -26,11 +26,11 @@
 
 namespace HeuristicLab.GP.Operators {
-  [Plugin("HeuristicLab.GP.Operators-3.3")]
+  [Plugin("HeuristicLab.GP.Operators", "3.3.0.2730")]
   [PluginFile("HeuristicLab.GP.Operators-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Core-3.2")]
   [PluginDependency("HeuristicLab.Data-3.2")]
   [PluginDependency("HeuristicLab.Evolutionary-3.2")]
-  [PluginDependency("HeuristicLab.GP-3.3")]
-  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
   [PluginDependency("HeuristicLab.Operators-3.2")]
   [PluginDependency("HeuristicLab.Random-3.2")]
Index: /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs.frame	(revision 2750)
+++ /trunk/sources/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs.frame	(revision 2750)
@@ -0,0 +1,40 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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 <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.GP.Operators {
+  [Plugin("HeuristicLab.GP.Operators", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.GP.Operators-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.GP", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  public class HeuristicLabGPOperatorsPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.Operators/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.Operators/3.3/Properties/AssemblyInfo.frame	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.Operators/3.3/Properties/AssemblyInfo.frame	(revision 2750)
@@ -23,5 +23,4 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -33,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,5 +53,4 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyVersion("3.3.0.0")]
 [assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
-[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLab.GP.StructureIdentification-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLab.GP.StructureIdentification-3.3.csproj	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLab.GP.StructureIdentification-3.3.csproj	(revision 2750)
@@ -85,4 +85,5 @@
     <Compile Include="BaseClasses\FunctionTreeBase.cs" />
     <Compile Include="BaseClasses\TreeEvaluatorBase.cs" />
+    <None Include="HeuristicLabGPStructureIdentificationPlugin.cs.frame" />
     <Compile Include="LinearScalingPredictorBuilder.cs" />
     <Compile Include="Evaluators\VariableFrequencyBasedImpactCalculator.cs" />
@@ -253,5 +254,6 @@
 set Outdir=$(Outdir)
 
-call PreBuildEvent.cmd</PreBuildEvent>
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25/" "%25ProjectDir%25/HeuristicLabGPStructureIdentificationPlugin.cs.frame" "%25ProjectDir%25/HeuristicLabGPStructureIdentificationPlugin.cs"</PreBuildEvent>
   </PropertyGroup>
 </Project>
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs	(revision 2750)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.GP.StructureIdentification {
-  [Plugin("HeuristicLab.GP.StructureIdentification-3.3")]
+  [Plugin("HeuristicLab.GP.StructureIdentification", "3.3.0.2728")]
   [PluginFile("HeuristicLab.GP.StructureIdentification-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Common-3.2")]
@@ -30,7 +30,7 @@
   [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
   [PluginDependency("HeuristicLab.Evolutionary-3.2")]
-  [PluginDependency("HeuristicLab.GP-3.3")]
-  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
-  [PluginDependency("HeuristicLab.GP.Operators-3.3")]
+  [PluginDependency("HeuristicLab.GP", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Logging-3.2")]
   [PluginDependency("HeuristicLab.Modeling-3.2")]
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs.frame	(revision 2750)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs.frame	(revision 2750)
@@ -0,0 +1,45 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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 <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.GP.StructureIdentification {
+  [Plugin("HeuristicLab.GP.StructureIdentification", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.GP.StructureIdentification-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.GP", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
+  [PluginDependency("HeuristicLab.GP.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Selection.OffspringSelection-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  public class HeuristicLabGPStructureIdentificationPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/Properties/AssemblyInfo.frame	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/Properties/AssemblyInfo.frame	(revision 2750)
@@ -23,5 +23,4 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -33,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,5 +53,4 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyVersion("3.3.0.0")]
 [assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
-[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.GP/3.3/HeuristicLab.GP-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/HeuristicLab.GP-3.3.csproj	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP/3.3/HeuristicLab.GP-3.3.csproj	(revision 2750)
@@ -89,4 +89,5 @@
     <Compile Include="BaseClasses\Terminal.cs" />
     <Compile Include="BaseClasses\UnaryFunction.cs" />
+    <None Include="HeuristicLabGPPlugin.cs.frame" />
     <Compile Include="FunctionLibraryInjectorView.cs">
       <SubType>UserControl</SubType>
@@ -178,5 +179,6 @@
 set Outdir=$(Outdir)
 
-call PreBuildEvent.cmd</PreBuildEvent>
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25/" "%25ProjectDir%25/HeuristicLabGPPlugin.cs.frame" "%25ProjectDir%25/HeuristicLabGPPlugin.cs"</PreBuildEvent>
   </PropertyGroup>
 </Project>
Index: /trunk/sources/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs	(revision 2750)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.GP {
-  [Plugin("HeuristicLab.GP-3.3")]
+  [Plugin("HeuristicLab.GP", "3.3.0.2730")]
   [PluginFile("HeuristicLab.GP-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
   [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabGPPlugin : PluginBase {
Index: /trunk/sources/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs.frame	(revision 2750)
+++ /trunk/sources/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs.frame	(revision 2750)
@@ -0,0 +1,34 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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 <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.GP {
+  [Plugin("HeuristicLab.GP", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.GP-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.GP.Interfaces", "3.3")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  public class HeuristicLabGPPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.GP/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/Properties/AssemblyInfo.frame	(revision 2749)
+++ /trunk/sources/HeuristicLab.GP/3.3/Properties/AssemblyInfo.frame	(revision 2750)
@@ -23,5 +23,4 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -33,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,5 +53,4 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyVersion("3.3.0.0")]
 [assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
-[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/AssemblyBuildDateAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/AssemblyBuildDateAttribute.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/AssemblyBuildDateAttribute.cs	(revision 2750)
@@ -45,4 +45,5 @@
     /// <exception cref="FormatException">Thrown when the time stamp could not be parsed as build date.</exception>
     /// <param name="buildDate">The build date of the assembly.</param>
+    [Obsolete]
     public AssemblyBuildDateAttribute(string buildDate)
       : base() {
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/PluginAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/PluginAttribute.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/PluginAttribute.cs	(revision 2750)
@@ -47,22 +47,37 @@
     }
 
+    private Version version;
+    /// <summary>
+    /// Gets the version of the plugin.
+    /// </summary>
+    public Version Version {
+      get { return version; }
+    }
+
+    [Obsolete]
+    public PluginAttribute(string name) : this(name, "0.0.0.0") { }
+
     /// <summary>
     /// Initializes a new instance of <see cref="PluginAttribute"/>.
     /// <param name="name">Name of the plugin</param>
+    /// <param name="version">Version of the plugin</param>
     /// </summary>
-    public PluginAttribute(string name)
-      : this(name, string.Empty) {
+    public PluginAttribute(string name, string version)
+      : this(name, string.Empty, version) {
     }
 
     /// <summary>
     /// Initializes a new instance of <see cref="PluginAttribute"/>.
+    /// </summary>
     /// <param name="name">Name of the plugin</param>
     /// <param name="description">Description of the plugin</param>
-    /// </summary>
-    public PluginAttribute(string name, string description) {
+    /// <param name="version">Version of the plugin</param>
+    public PluginAttribute(string name, string description, string version) {
       if (string.IsNullOrEmpty(name)) throw new ArgumentException("Plugin name is null or empty.");
       if (description == null) throw new ArgumentNullException("description");
+      if (string.IsNullOrEmpty(version)) new ArgumentException("Version string is null or empty.");
       this.name = name;
       this.description = description;
+      this.version = new Version(version); // throws format exception if the version string can't be parsed
     }
   }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/PluginDependencyAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/PluginDependencyAttribute.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Attributes/PluginDependencyAttribute.cs	(revision 2750)
@@ -39,11 +39,26 @@
     }
 
+    private Version version;
+    /// <summary>
+    /// Gets the version of the plugin dependency.
+    /// </summary>
+    public Version Version {
+      get { return version; }
+    }
+
     /// <summary>
     /// Initializes a new instance of <see cref="PluginDependencyAttribute"/>.
     /// <param name="dependency">The name of the plugin that is needed to load a plugin.</param>
     /// </summary>
-    public PluginDependencyAttribute(string dependency) {
-      if (string.IsNullOrEmpty(dependency)) throw new ArgumentException("Dependency is null or empty.", "dependency");
+    [Obsolete]
+    public PluginDependencyAttribute(string dependency)
+      : this(dependency, "0.0.0.0") {
+    }
+
+    public PluginDependencyAttribute(string dependency, string version) {
+      if (string.IsNullOrEmpty(dependency)) throw new ArgumentException("Dependency name is null or empty.", "dependency");
+      if (string.IsNullOrEmpty(version)) throw new ArgumentException("Dependency version is null or empty.", "version");
       this.dependency = dependency;
+      this.version = new Version(version); // throws format exception if the version string can't be parsed
     }
   }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/InvalidPluginException.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/InvalidPluginException.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/InvalidPluginException.cs	(revision 2750)
@@ -31,7 +31,24 @@
   [Serializable]
   public sealed class InvalidPluginException : Exception {
+    /// <summary>
+    /// Initializes a new InvalidPluginException
+    /// </summary>
     public InvalidPluginException() : base() { }
+    /// <summary>
+    /// Initializes a new InvalidPluginException with an error message.
+    /// </summary>
+    /// <param name="message">The exception message</param>
     public InvalidPluginException(string message) : base(message) { }
-    public InvalidPluginException(string message, Exception exception) : base(message, exception) { }
+    /// <summary>
+    /// Initializes a new InvalidPluginException with an error message and an inner exception.
+    /// </summary>
+    /// <param name="message">The exception message.</param>
+    /// <param name="innerException">The original exception.</param>
+    public InvalidPluginException(string message, Exception innerException) : base(message, innerException) { }
+    /// <summary>
+    /// Constructor for serialization.
+    /// </summary>
+    /// <param name="info">The serialization info.</param>
+    /// <param name="contex">The serialization context.</param>
     private InvalidPluginException(SerializationInfo info, StreamingContext contex) : base(info, contex) { }
   }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Manager/PluginValidator.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Manager/PluginValidator.cs	(revision 2749)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Manager/PluginValidator.cs	(revision 2750)
@@ -36,7 +36,19 @@
   /// </summary>
   internal sealed class PluginValidator : MarshalByRefObject {
+    // private class to store plugin dependency declarations while reflecting over plugins
+    private class PluginDependency {
+      public string Name { get; private set; }
+      public Version Version { get; private set; }
+
+      public PluginDependency(string name, Version version) {
+        this.Name = name;
+        this.Version = version;
+      }
+    }
+
+
     internal event EventHandler<PluginInfrastructureEventArgs> PluginLoaded;
 
-    private Dictionary<PluginDescription, List<string>> pluginDependencies;
+    private Dictionary<PluginDescription, IEnumerable<PluginDependency>> pluginDependencies;
 
     private List<ApplicationDescription> applications;
@@ -61,5 +73,5 @@
 
     internal PluginValidator() {
-      this.pluginDependencies = new Dictionary<PluginDescription, List<string>>();
+      this.pluginDependencies = new Dictionary<PluginDescription, IEnumerable<PluginDependency>>();
 
       // ReflectionOnlyAssemblyResolveEvent must be handled because we load assemblies from the plugin path 
@@ -250,17 +262,37 @@
       // get all attributes of that type
       IList<CustomAttributeData> attributes = CustomAttributeData.GetCustomAttributes(pluginType);
-      List<string> pluginDependencies = new List<string>();
+      List<PluginDependency> pluginDependencies = new List<PluginDependency>();
       List<PluginFile> pluginFiles = new List<PluginFile>();
       string pluginName = null;
       string pluginDescription = null;
+      string pluginVersion = "0.0.0.0";
       // iterate through all custom attributes and search for attributed that we are interested in 
       foreach (CustomAttributeData attributeData in attributes) {
         if (IsAttributeDataForType(attributeData, typeof(PluginAttribute))) {
           pluginName = (string)attributeData.ConstructorArguments[0].Value;
-          if (attributeData.ConstructorArguments.Count() == 2) {
-            pluginDescription = (string)attributeData.ConstructorArguments[1].Value;
-          } else pluginDescription = pluginName;
+          if (attributeData.ConstructorArguments.Count() > 1) {
+            pluginVersion = (string)attributeData.ConstructorArguments[1].Value;
+          }
+          if (attributeData.ConstructorArguments.Count() > 2) {
+            pluginDescription = (string)attributeData.ConstructorArguments[2].Value;
+          } else {
+            // no description given => use name as description
+            pluginDescription = pluginName;
+          }
         } else if (IsAttributeDataForType(attributeData, typeof(PluginDependencyAttribute))) {
-          pluginDependencies.Add((string)attributeData.ConstructorArguments[0].Value);
+          string name = (string)attributeData.ConstructorArguments[0].Value;
+          Version version = new Version();
+          // check if version is given for now
+          // later when the constructore of PluginDependencyAttribute with only one argument has been removed
+          // this conditional can be removed as well
+          if (attributeData.ConstructorArguments.Count > 1) {
+            try {
+              version = new Version((string)attributeData.ConstructorArguments[1].Value); // throws FormatException
+            }
+            catch (FormatException ex) {
+              throw new InvalidPluginException("Invalid version format of dependency " + name + " in plugin " + pluginType.ToString(), ex);
+            }
+          }
+          pluginDependencies.Add(new PluginDependency(name, version));
         } else if (IsAttributeDataForType(attributeData, typeof(PluginFileAttribute))) {
           string pluginFileName = (string)attributeData.ConstructorArguments[0].Value;
@@ -270,19 +302,13 @@
       }
 
-      var buildDates = from attr in CustomAttributeData.GetCustomAttributes(pluginType.Assembly)
-                       where IsAttributeDataForType(attr, typeof(AssemblyBuildDateAttribute))
-                       select (string)attr.ConstructorArguments[0].Value;
-
       // minimal sanity check of the attribute values
       if (!string.IsNullOrEmpty(pluginName) &&
           pluginFiles.Count > 0 &&                                   // at least on file
-          pluginFiles.Any(f => f.Type == PluginFileType.Assembly) && // at least on assembly
-          buildDates.Count() == 1) {                                 // build date must be declared
+          pluginFiles.Any(f => f.Type == PluginFileType.Assembly)) { // at least on assembly
         // create a temporary PluginDescription that contains the attribute values
         PluginDescription info = new PluginDescription();
         info.Name = pluginName;
         info.Description = pluginDescription;
-        info.Version = pluginType.Assembly.GetName().Version;
-        info.BuildDate = DateTime.Parse(buildDates.Single(), System.Globalization.CultureInfo.InvariantCulture);
+        info.Version = new Version(pluginVersion);
         info.AddFiles(pluginFiles);
 
@@ -303,6 +329,9 @@
     private void BuildDependencyTree(IEnumerable<PluginDescription> pluginDescriptions) {
       foreach (var desc in pluginDescriptions) {
-        foreach (string pluginName in pluginDependencies[desc]) {
-          var matchingDescriptions = pluginDescriptions.Where(x => x.Name == pluginName);
+        foreach (var dependency in pluginDependencies[desc]) {
+          var matchingDescriptions = from availablePlugin in pluginDescriptions
+                                     where availablePlugin.Name == dependency.Name
+                                     where IsCompatiblePluginVersion(availablePlugin.Version, dependency.Version)
+                                     select availablePlugin;
           if (matchingDescriptions.Count() > 0) {
             desc.AddDependency(matchingDescriptions.Single());
@@ -313,4 +342,26 @@
         }
       }
+    }
+
+    /// <summary>
+    /// Checks if version <paramref name="available"/> is compatible to version <paramref name="requested"/>.
+    /// Note: the compatibility relation is not bijective.
+    /// Compatibility rules:
+    ///  * major and minor number must be the same
+    ///  * build and revision number of <paramref name="available"/> must be larger or equal to <paramref name="requested"/>.
+    /// </summary>
+    /// <param name="available">The available version which should be compared to <paramref name="requested"/>.</param>
+    /// <param name="requested">The requested version that must be matched.</param>
+    /// <returns></returns>
+    private bool IsCompatiblePluginVersion(Version available, Version requested) {
+      // this condition must be removed after all plugins have been updated to declare plugin and dependency versions
+      if (
+        (requested.Major == 0 && requested.Minor == 0) ||
+        (available.Major == 0 && available.Minor == 0)) return true;
+      return
+        available.Major == requested.Major &&
+        available.Minor == requested.Minor &&
+        available.Build >= requested.Build &&
+        available.Revision >= requested.Revision;
     }
 
