Index: branches/eraser6/XmlTaskLists/Eraser.Manager/DirectExecutor.cs
===================================================================
--- branches/eraser6/XmlTaskLists/Eraser.Manager/DirectExecutor.cs	(revision 2582)
+++ branches/eraser6/XmlTaskLists/Eraser.Manager/DirectExecutor.cs	(revision 2589)
@@ -27,6 +27,4 @@
 using System.Threading;
 using System.IO;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters.Binary;
 
 using Eraser.Util;
@@ -34,4 +32,5 @@
 using Eraser.Plugins;
 using Eraser.Plugins.ExtensionPoints;
+using System.Xml.Serialization;
 
 namespace Eraser.Manager
@@ -468,5 +467,8 @@
 			{
 				lock (list)
-					new BinaryFormatter().Serialize(stream, list);
+				{
+					XmlSerializer serializer = new XmlSerializer(list.GetType());
+					serializer.Serialize(stream, list);
+				}
 			}
 
@@ -474,15 +476,14 @@
 			{
 				//Load the list into the dictionary
-				StreamingContext context = new StreamingContext(
-					StreamingContextStates.All, Owner);
-				BinaryFormatter formatter = new BinaryFormatter(null, context);
+				XmlSerializer serializer = new XmlSerializer(list.GetType());
 
 				try
 				{
-					List<Task> deserialised = (List<Task>)formatter.Deserialize(stream);
+					List<Task> deserialised = (List<Task>)serializer.Deserialize(stream);
 					list.AddRange(deserialised);
 
 					foreach (Task task in deserialised)
 					{
+						task.Executor = Owner;
 						Owner.OnTaskAdded(new TaskEventArgs(task));
 						if (task.Schedule == Schedule.RunNow)
@@ -492,9 +493,9 @@
 					}
 				}
+				catch (InvalidOperationException e)
+				{
+					throw new InvalidDataException(e.Message, e);
+				}
 				catch (FileLoadException e)
-				{
-					throw new InvalidDataException(e.Message, e);
-				}
-				catch (SerializationException e)
 				{
 					throw new InvalidDataException(e.Message, e);
