Index: /trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.BitVector/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.BitVector/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.BitVector/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Charting.Data/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Charting.Data/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Charting.Data/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Charting/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Charting/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Charting/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Constraints/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Constraints/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Constraints/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Core/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Core/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Core/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Data/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Data/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Data/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.DataAnalysis/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.DataAnalysis/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.DataAnalysis/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.DistributedEngine/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.DistributedEngine/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.DistributedEngine/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Evolutionary/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Evolutionary/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Functions/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Functions/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Functions/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Grid/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Grid/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Grid/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Logging/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Logging/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Logging/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Operators.Programmable/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Operators/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Operators/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.OptimizationFrontend/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.OptimizationFrontend/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.OptimizationFrontend/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Permutation/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Permutation/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/ManagerForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/ManagerForm.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/ManagerForm.cs	(revision 91)
@@ -147,4 +147,8 @@
     private void publishButton_Click(object sender, EventArgs args) {
       PluginInfo plugin = ((PluginTag)pluginTreeView.SelectedNode.Tag).Plugin;
+      publishPlugin(plugin);
+    }
+
+    private void publishPlugin(PluginInfo plugin) {
       try {
         string packageFileName = plugin.Name + "-" + plugin.Version + ".zip";
@@ -165,5 +169,6 @@
         infoTextBox.Text += "Upload this file to your plugin source and add the following entry to" +
 " the file plugins.xml residing in the base directory of your plugin source.\n\n";
-        infoTextBox.Text += "  <Plugin Name=\"" + plugin.Name + "\" Version=\"" + plugin.Version + "\">\n";
+        infoTextBox.Text += "  <Plugin Name=\"" + plugin.Name + "\" Version=\""
+          + plugin.Version + "\" Build=\"" + plugin.BuildDate.ToUniversalTime().ToString(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat) + "\">\n";
         foreach(PluginInfo dependency in plugin.Dependencies) {
           infoTextBox.Text += "    <Dependency Name=\"" + dependency.Name + "\" />\n";
@@ -251,5 +256,6 @@
         if(samePlugins.Count > 1) {
           samePlugins.ForEach(delegate(PluginDescription tag2) {
-            if(tag2.Version > mostRecentVersion.Version) {
+            if(tag2.Version > mostRecentVersion.Version || 
+              (tag2.Version == mostRecentVersion.Version && tag2.BuildDate>mostRecentVersion.BuildDate)) {
               mostRecentVersion = tag2;
             }
@@ -288,10 +294,11 @@
       allAvailablePlugins.ForEach(delegate(PluginDescription availablePlugin) {
         List<PluginTag> oldPlugins = allTags.FindAll(delegate(PluginTag currentPlugin) {
-          return currentPlugin.PluginName == availablePlugin.Name && 
-            (currentPlugin.State & (PluginState.Installed | PluginState.Disabled)) !=0;
+          return currentPlugin.PluginName == availablePlugin.Name &&
+            (currentPlugin.State & (PluginState.Installed | PluginState.Disabled)) != 0;
         });
 
         if(oldPlugins.Count == 1) {
-          if(oldPlugins[0].PluginVersion < availablePlugin.Version) {
+          if(oldPlugins[0].PluginVersion < availablePlugin.Version ||
+            (oldPlugins[0].PluginVersion == availablePlugin.Version && oldPlugins[0].PluginBuildDate<availablePlugin.BuildDate)) {
             upgrades.Add(availablePlugin);
           }
@@ -309,5 +316,6 @@
         });
 
-        if(currentPlugins.Count == 1 && currentPlugins[0].PluginVersion < availablePlugin.Version) {
+        if(currentPlugins.Count == 1 && (currentPlugins[0].PluginVersion < availablePlugin.Version ||
+          (currentPlugins[0].PluginVersion==availablePlugin.Version && currentPlugins[0].PluginBuildDate<availablePlugin.BuildDate))) {
           overrides.Add(availablePlugin);
         }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginDescription.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginDescription.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginDescription.cs	(revision 91)
@@ -28,5 +28,4 @@
   class PluginDescription {
     private string name;
-
     public string Name {
       get { return name; }
@@ -34,8 +33,12 @@
     }
     private Version version;
-
     public Version Version {
       get { return version; }
       set { version = value; }
+    }
+    private DateTime buildDate;
+    public DateTime BuildDate {
+      get { return buildDate; }
+      set { buildDate = value; }
     }
 
@@ -50,8 +53,9 @@
     }
 
-    public PluginDescription(string name, Version version, PluginSource source) {
+    public PluginDescription(string name, Version version, DateTime buildDate, PluginSource source) {
       this.name = name;
       this.version = version;
       this.source = source;
+      this.buildDate = buildDate;
     }
   }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginSource.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginSource.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginSource.cs	(revision 91)
@@ -77,5 +77,12 @@
         string version = child.Attributes["Version"].Value;
 
-        PluginDescription description = new PluginDescription(name, new Version(version), this);
+        DateTime buildDate;
+        if(child.Attributes["Build"] != null) {
+          string build = child.Attributes["Build"].Value;
+          DateTime.TryParse(build, System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat, System.Globalization.DateTimeStyles.AssumeUniversal, out buildDate);
+        } else {
+          buildDate = DateTime.MinValue;
+        }
+        PluginDescription description = new PluginDescription(name, new Version(version), buildDate, this);
         availablePlugins.Add(description);
 
Index: /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginTag.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginTag.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure.GUI/PluginTag.cs	(revision 91)
@@ -36,5 +36,4 @@
   class PluginTag {
     private PluginInfo plugin;
-
     public PluginInfo Plugin {
       get { return plugin; }
@@ -50,5 +49,4 @@
       }
     }
-
 
     private PluginDescription upgradePluginDescription;
@@ -74,4 +72,9 @@
       set { pluginVersion = value; }
     }
+    private DateTime pluginBuildDate;
+    public DateTime PluginBuildDate {
+      get { return pluginBuildDate; }
+      set { pluginBuildDate = value; }
+    }
 
     private string pluginDetails;
@@ -96,7 +99,7 @@
       this.state = state;
       this.allTags = allTags;
-
       this.pluginName = plugin.Name;
       this.pluginVersion = plugin.Version;
+      this.pluginBuildDate = plugin.BuildDate;
       this.message = plugin.Message;
       pluginDetails = GeneratePluginDetails(plugin);
@@ -108,8 +111,7 @@
       this.state = state;
       this.allTags = allTags;
-
       this.pluginName = plugin.Name;
       this.pluginVersion = plugin.Version;
-
+      this.pluginBuildDate = plugin.BuildDate;
       pluginDetails = GeneratePluginDetails(plugin);
       pluginDependencies = GeneratePluginDependencies(plugin);
@@ -132,5 +134,6 @@
       });
       return "Plugin: " + plugin.Name + "\n" +
-      "Version: " + plugin.Version + "\n\n" +
+      "Version: " + plugin.Version + "\n" +
+      "Build: " +plugin.BuildDate + "\n\n" +
       (dependencies.Length != 0 ? "Requires: \n" + dependencies + "\n" : "") +
       (dependents.Length != 0 ? "Used by:\n" + dependents + "\n" : "") +
@@ -146,4 +149,5 @@
       return "plugin: " + plugin.Name + "\n" +
       "Version: " + plugin.Version + "\n" +
+      "Build: "+plugin.BuildDate +"\n" +
       "Installed from: " + plugin.Source + "\n" +
       "Requires: \n" + dependencies;
@@ -156,5 +160,5 @@
       }
       return "plugin: " + upgrade.Name + "\n" +
-      "Current version: " + plugin.Version + " will be upgraded to new version: " + upgrade.Version + "\n"+
+      "Current version: " + plugin.Version + " ("+plugin.BuildDate+") will be upgraded to new version: " + upgrade.Version + " ("+upgrade.BuildDate+")\n"+
       "Upgraded from: " + upgrade.Source + "\n" +
       "Requires: \n" + dependencies;
@@ -163,9 +167,7 @@
     private List<string> GeneratePluginDependencies(PluginInfo plugin) {
       List<string> dependencies = new List<string>();
-
       plugin.Dependencies.ForEach(delegate(PluginInfo dependency) {
         dependencies.Add(dependency.Name);
       });
-
       return dependencies;
     }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/AssemblyBuildDateAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/AssemblyBuildDateAttribute.cs	(revision 91)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/AssemblyBuildDateAttribute.cs	(revision 91)
@@ -0,0 +1,43 @@
+﻿#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 System.Globalization;
+
+namespace HeuristicLab.PluginInfrastructure {
+  [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)]
+  public class AssemblyBuildDateAttribute : Attribute {
+    private DateTime buildDate;
+    public DateTime BuildDate {
+      get { return buildDate; }
+      set { buildDate = value; }
+    }
+    public AssemblyBuildDateAttribute(string timeStamp)
+      : base() {
+
+      if(!DateTime.TryParse(timeStamp, out buildDate)) {
+        throw new FormatException("Can't parse AssemblyBuildDate " + timeStamp);
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/ClassInfoAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/ClassInfoAttribute.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/ClassInfoAttribute.cs	(revision 91)
@@ -32,5 +32,4 @@
   public class ClassInfoAttribute : System.Attribute {
     private string name;
-
     /// <summary>
     /// Name of the plugin to which the assembly belongs to.
@@ -42,5 +41,4 @@
 
     private string version;
-
     public string Version {
       get { return version; }
@@ -48,7 +46,5 @@
     }
 
-
     private string description;
-
     public string Description {
       get { return description; }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/HeuristicLab.PluginInfrastructure.csproj
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/HeuristicLab.PluginInfrastructure.csproj	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/HeuristicLab.PluginInfrastructure.csproj	(revision 91)
@@ -49,4 +49,5 @@
   <ItemGroup>
     <Compile Include="ApplicationInfo.cs" />
+    <Compile Include="AssemblyBuildDateAttribute.cs" />
     <Compile Include="BaseClasses\ApplicationBase.cs" />
     <Compile Include="BaseClasses\PluginBase.cs" />
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Loader.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Loader.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Loader.cs	(revision 91)
@@ -333,4 +333,10 @@
       pluginInfo.Name = plugin.Name;
       pluginInfo.Version = plugin.Version;
+
+      object[] customAttributes = plugin.GetType().Assembly.GetCustomAttributes(typeof(AssemblyBuildDateAttribute), false);
+      if(customAttributes.Length > 0) {
+        pluginInfo.BuildDate = ((AssemblyBuildDateAttribute)customAttributes[0]).BuildDate;
+      }
+
       string baseDir = AppDomain.CurrentDomain.BaseDirectory;
 
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/PluginInfo.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/PluginInfo.cs	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/PluginInfo.cs	(revision 91)
@@ -32,18 +32,19 @@
   public class PluginInfo {
     private string name;
-
     public string Name {
       get { return name; }
       set { name = value; }
     }
-
     private Version version;
-
     public Version Version {
       get { return version; }
       set { version = value; }
     }
-
-    private List<string> files = new List<string> ();
+    private DateTime buildDate;
+    public DateTime BuildDate {
+      get { return buildDate; }
+      set { buildDate = value; }
+    }
+    private List<string> files = new List<string>();
     /// <summary>
     /// Names of all files that belong to this plugin.
@@ -54,10 +55,9 @@
     }
 
-    private List<PluginInfo> dependencies = new List<PluginInfo> ();
+    private List<PluginInfo> dependencies = new List<PluginInfo>();
     public List<PluginInfo> Dependencies {
       get { return dependencies; }
     }
     private List<string> assemblies = new List<string>();
-
     /// <summary>
     /// Names of the assemblies that belong to this plugin.
@@ -67,6 +67,4 @@
       set { assemblies = value; }
     }
-
-
     private string message;
     public string Message {
@@ -74,9 +72,7 @@
       set { message = value; }
     }
-
     public override string ToString() {
       return Name;
     }
-
     // equals and hashcode have to be implemented because we want to compare PluginDescriptions from 
     // different AppDomains and serialization destroys reference equality
@@ -88,5 +84,4 @@
       return other.Name == this.Name && other.Version == this.Version;
     }
-
     public override int GetHashCode() {
       if(version != null) {
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
Index: /trunk/sources/HeuristicLab.Random/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Random/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Random/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.RealVector/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.RealVector/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.RealVector/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Routing.TSP/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Routing.TSP/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.SGA/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.SGA/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.SGA/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Scheduling.JSSP/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Scheduling.JSSP/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Scheduling.JSSP/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Selection.OffspringSelection/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Selection.OffspringSelection/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Selection.OffspringSelection/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Selection/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Selection/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.Selection/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.SequentialEngine/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.SequentialEngine/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.StructureIdentification/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.StructureIdentification/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.StructureIdentification/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.TestFunctions/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.TestFunctions/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.TestFunctions/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -56,2 +57,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.ThreadParallelEngine/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab.ThreadParallelEngine/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
@@ -55,2 +56,3 @@
 [assembly: AssemblyVersion("3.0.0.$WCREV$")]
 [assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab/Properties/AssemblyInfo.frame	(revision 90)
+++ /trunk/sources/HeuristicLab/Properties/AssemblyInfo.frame	(revision 91)
@@ -23,4 +23,5 @@
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
 
 // General Information about an assembly is controlled through the following 
