diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 95ea403635..bb48b207f5 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -57,10 +57,9 @@
-
- False
-
+
+
3.0
@@ -822,11 +821,6 @@
ICSharpCode.Core.WinForms
False
-
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}
- ICSharpCode.SharpDevelop.BuildWorker
- False
-
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}
ICSharpCode.SharpDevelop.Dom
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user
deleted file mode 100644
index a4461a2a13..0000000000
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- 8.0.50215
- ProjectFiles
- 0
-
-
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
index 114445915a..8802a59b70 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
@@ -16,7 +16,6 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using Microsoft.Build.BuildEngine;
using Microsoft.Build.Framework;
-using ICSharpCode.SharpDevelop.BuildWorker;
namespace ICSharpCode.SharpDevelop.Project
{
@@ -105,11 +104,6 @@ namespace ICSharpCode.SharpDevelop.Project
this.feedbackSink = feedbackSink;
}
- const EventTypes ControllableEvents = EventTypes.Message
- | EventTypes.TargetStarted | EventTypes.TargetFinished
- | EventTypes.TaskStarted | EventTypes.TaskFinished
- | EventTypes.Unknown;
-
///
/// Controls whether messages should be made available to loggers.
/// Logger AddIns should set this property in their CreateLogger method.
@@ -168,6 +162,9 @@ namespace ICSharpCode.SharpDevelop.Project
void StartBuild()
{
+ feedbackSink.ReportError(new BuildError { ErrorText = "Compiling is not yet implemented" });
+ feedbackSink.Done(false);
+ /*
WorkerManager.ShowError = MessageService.ShowError;
BuildWorker.BuildSettings settings = new BuildWorker.BuildSettings();
SharpDevelopLogger logger = new SharpDevelopLogger(this);
@@ -263,7 +260,7 @@ namespace ICSharpCode.SharpDevelop.Project
};
WorkerManager.StartBuild(job, settings);
- }
+ }*/
}
static int isBuildingInProcess = 0;
@@ -312,6 +309,7 @@ namespace ICSharpCode.SharpDevelop.Project
feedbackSink.ReportError(error);
}
+ /*
class SharpDevelopLogger : ILogger
{
MSBuildEngine worker;
@@ -430,5 +428,6 @@ namespace ICSharpCode.SharpDevelop.Project
}
#endregion
}
+ */
}
}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs
deleted file mode 100644
index 3002226b46..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker
-{
- ///
- /// The settings used to start a build.
- ///
- [Serializable]
- public class BuildJob
- {
- ///
- /// The value of IntPtr.Size on the host. The build worker will report an error if its IntPtr.Size
- /// doesn't match. This is a safety feature to prevent compiling half of a solution using 32-bit MSBuild
- /// and the other half using 64-bit MSBuild.
- ///
- public int IntPtrSize { get; set; }
-
-
- public string ProjectFileName { get; set; }
- public string Target { get; set; }
-
- EventTypes eventMask = EventTypes.All;
-
- ///
- /// Gets/Sets the mask that controls which events are reported back to the host.
- ///
- public EventTypes EventMask {
- get { return eventMask; }
- set { eventMask = value; }
- }
-
- Dictionary properties = new Dictionary();
-
- public Dictionary Properties {
- get { return properties; }
- }
-
- List additionalImports = new List();
-
- public IList AdditionalImports {
- get { return additionalImports; }
- }
-
- HashSet interestingTaskNames = new HashSet(StringComparer.OrdinalIgnoreCase);
-
- public ICollection InterestingTaskNames {
- get { return interestingTaskNames; }
- }
-
- public override string ToString()
- {
- StringBuilder b = new StringBuilder();
- b.AppendLine("BuildJob:");
- b.AppendLine(" ProjectFileName = " + ProjectFileName);
- b.AppendLine(" Target = " + Target);
- b.AppendLine(" " + Properties.Count + " Properties:");
- foreach (KeyValuePair pair in Properties) {
- b.AppendLine(" " + pair.Key + " = " + pair.Value);
- }
- b.AppendLine(" " + AdditionalImports.Count + " Additional Imports:");
- foreach (string import in AdditionalImports) {
- b.AppendLine(" " + import);
- }
- b.AppendLine(" " + InterestingTaskNames.Count + " Interesting Task Names:");
- foreach (string name in InterestingTaskNames) {
- b.AppendLine(" " + name);
- }
- return b.ToString();
- }
-
- [NonSerialized]
- internal Action CancelCallback;
-
- public void Cancel()
- {
- if (CancelCallback != null) {
- CancelCallback();
- }
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Configuration/AssemblyInfo.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Configuration/AssemblyInfo.cs
deleted file mode 100644
index 3d3864f779..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Configuration/AssemblyInfo.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyTitle("SharpDevelop Build Worker")]
-[assembly: AssemblyDescription("Runs MSBuild")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: CLSCompliant(true)]
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/EventSource.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/EventSource.cs
deleted file mode 100644
index 7818baf8e4..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/EventSource.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using Microsoft.Build.Framework;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker
-{
- [Flags]
- public enum EventTypes
- {
- None = 0,
- Message = 0x0001,
- Error = 0x0002,
- Warning = 0x0004,
- BuildStarted = 0x0008,
- BuildFinished = 0x0010,
- ProjectStarted = 0x0020,
- ProjectFinished = 0x0040,
- TargetStarted = 0x0080,
- TargetFinished = 0x0100,
- TaskStarted = 0x0200,
- TaskFinished = 0x0400,
- Custom = 0x0800,
- Unknown = 0x1000,
- All = 0x1fff
- }
-
- class EventSource : IEventSource
- {
- public event BuildMessageEventHandler MessageRaised;
- public event BuildErrorEventHandler ErrorRaised;
- public event BuildWarningEventHandler WarningRaised;
- public event BuildStartedEventHandler BuildStarted;
- public event BuildFinishedEventHandler BuildFinished;
- public event ProjectStartedEventHandler ProjectStarted;
- public event ProjectFinishedEventHandler ProjectFinished;
- public event TargetStartedEventHandler TargetStarted;
- public event TargetFinishedEventHandler TargetFinished;
- public event TaskStartedEventHandler TaskStarted;
- public event TaskFinishedEventHandler TaskFinished;
- public event CustomBuildEventHandler CustomEventRaised;
- public event BuildStatusEventHandler StatusEventRaised;
-
- public event AnyEventHandler AnyEventRaised;
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
- public void RaiseEvent(BuildEventArgs e)
- {
- if (e is BuildStatusEventArgs) {
- if (e is TaskStartedEventArgs) {
- if (TaskStarted != null)
- TaskStarted(this, (TaskStartedEventArgs)e);
- } else if (e is TaskFinishedEventArgs) {
- if (TaskFinished != null)
- TaskFinished(this, (TaskFinishedEventArgs)e);
- } else if (e is TargetStartedEventArgs) {
- if (TargetStarted != null)
- TargetStarted(this, (TargetStartedEventArgs)e);
- } else if (e is TargetFinishedEventArgs) {
- if (TargetFinished != null)
- TargetFinished(this, (TargetFinishedEventArgs)e);
- } else if (e is ProjectStartedEventArgs) {
- if (ProjectStarted != null)
- ProjectStarted(this, (ProjectStartedEventArgs)e);
- } else if (e is ProjectFinishedEventArgs) {
- if (ProjectFinished != null)
- ProjectFinished(this, (ProjectFinishedEventArgs)e);
- } else if (e is BuildStartedEventArgs) {
- if (BuildStarted != null)
- BuildStarted(this, (BuildStartedEventArgs)e);
- } else if (e is BuildFinishedEventArgs) {
- if (BuildFinished != null)
- BuildFinished(this, (BuildFinishedEventArgs)e);
- }
- if (StatusEventRaised != null)
- StatusEventRaised(this, (BuildStatusEventArgs)e);
- } else if (e is BuildMessageEventArgs) {
- if (MessageRaised != null)
- MessageRaised(this, (BuildMessageEventArgs)e);
- } else if (e is BuildWarningEventArgs) {
- if (WarningRaised != null)
- WarningRaised(this, (BuildWarningEventArgs)e);
- } else if (e is BuildErrorEventArgs) {
- if (ErrorRaised != null)
- ErrorRaised(this, (BuildErrorEventArgs)e);
- } else if (e is CustomBuildEventArgs) {
- if (CustomEventRaised != null)
- CustomEventRaised(this, (CustomBuildEventArgs)e);
- }
-
- if (AnyEventRaised != null)
- AnyEventRaised(this, e);
- }
-
- public static EventTypes GetEventType(BuildEventArgs e)
- {
- if (e is TaskStartedEventArgs) {
- return EventTypes.TaskStarted;
- } else if (e is TaskFinishedEventArgs) {
- return EventTypes.TaskFinished;
- } else if (e is TargetStartedEventArgs) {
- return EventTypes.TargetStarted;
- } else if (e is TargetFinishedEventArgs) {
- return EventTypes.TargetFinished;
- } else if (e is BuildMessageEventArgs) {
- return EventTypes.Message;
- } else if (e is BuildWarningEventArgs) {
- return EventTypes.Warning;
- } else if (e is BuildErrorEventArgs) {
- return EventTypes.Error;
- } else if (e is ProjectStartedEventArgs) {
- return EventTypes.ProjectStarted;
- } else if (e is ProjectFinishedEventArgs) {
- return EventTypes.ProjectFinished;
- } else if (e is BuildStartedEventArgs) {
- return EventTypes.BuildStarted;
- } else if (e is BuildFinishedEventArgs) {
- return EventTypes.BuildFinished;
- } else if (e is CustomBuildEventArgs) {
- return EventTypes.Custom;
- } else {
- return EventTypes.Unknown;
- }
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj
deleted file mode 100644
index e9d1e4cef5..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}
- Debug
- AnyCPU
- Exe
- ICSharpCode.SharpDevelop.BuildWorker
- ICSharpCode.SharpDevelop.BuildWorker
- v4.0
- False
- False
- 4
- false
- ..\..\..\bin\
- True
- ..\ICSharpCode.SharpDevelop.snk
- False
- File
- False
- -Microsoft.Globalization#CA1303
-
-
- true
- Full
- False
- True
- DEBUG;TRACE
-
-
- False
- None
- True
- False
- TRACE
-
-
- False
- Auto
- 4194304
- x86
- 4096
-
-
-
-
-
-
-
- 3.5
-
-
-
-
-
-
- Configuration\GlobalAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs
deleted file mode 100644
index 30f9d45384..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.Net;
-using System.Net.Sockets;
-using System.Reflection;
-using System.Threading;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
-{
- ///
- /// Used in the worker process to refer to the host.
- ///
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
- public class HostProcess
- {
- readonly object workerObject;
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters")]
- public HostProcess(object workerObject)
- {
- if (workerObject == null)
- throw new ArgumentNullException("workerObject");
- this.workerObject = workerObject;
- }
-
- TcpClient client;
- PacketReceiver receiver;
- PacketSender sender;
-
- ManualResetEvent shutdownEvent;
- bool connectionIsLost;
-
- internal const int SendKeepAliveInterval = 10000;
-
- public void WorkerProcessMain(string argument, string passwordBase64)
- {
- int port = int.Parse(argument, CultureInfo.InvariantCulture);
-
- client = new TcpClient();
- client.Connect(new IPEndPoint(IPAddress.Loopback, port));
- Stream stream = client.GetStream();
- receiver = new PacketReceiver();
- sender = new PacketSender(stream);
- shutdownEvent = new ManualResetEvent(false);
- receiver.ConnectionLost += OnConnectionLost;
- receiver.PacketReceived += OnPacketReceived;
- sender.WriteFailed += OnConnectionLost;
-
- // send password
- sender.Send(Convert.FromBase64String(passwordBase64));
-
- receiver.StartReceive(stream);
- while (!shutdownEvent.WaitOne(SendKeepAliveInterval, false)) {
- Program.Log("Sending keep-alive packet");
- sender.Send(new byte[0]);
- }
-
- Program.Log("Closing client (end of WorkerProcessMain)");
- client.Close();
- shutdownEvent.Close();
- }
-
- public void Disconnect()
- {
- client.Close();
- }
-
- public void CallMethodOnHost(string methodName, params object[] args)
- {
- Program.Log("CallMethodOnHost: " + methodName);
- sender.Send(WorkerProcess.SerializeObject(new WorkerProcess.MethodCall(methodName, args)));
- }
-
- void OnConnectionLost(object sender, EventArgs e)
- {
- lock (this) {
- if (connectionIsLost)
- return;
- Program.Log("OnConnectionLost");
- connectionIsLost = true;
- shutdownEvent.Set();
- }
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- void OnPacketReceived(object sender, PacketReceivedEventArgs e)
- {
- Program.Log("OnPacketReceived");
- if (e.Packet.Length != 0) {
- try {
- WorkerProcess.MethodCall mc = (WorkerProcess.MethodCall)WorkerProcess.DeserializeObject(e.Packet);
- mc.CallOn(workerObject);
- } catch (TargetInvocationException ex) {
- Program.Log(ex.ToString());
- CallMethodOnHost("ReportException", ex.InnerException.ToString());
- } catch (Exception ex) {
- Program.Log(ex.ToString());
- CallMethodOnHost("ReportException", ex.ToString());
- }
- }
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/IHostObject.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/IHostObject.cs
deleted file mode 100644
index df1e484c6c..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/IHostObject.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
-{
- public interface IHostObject
- {
- void ReportException(string exceptionText);
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketReceiver.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketReceiver.cs
deleted file mode 100644
index ad9700d731..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketReceiver.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.Net;
-using System.Net.Sockets;
-using System.Diagnostics;
-using System.IO;
-using System.Runtime;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Binary;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
-{
- public sealed class PacketReceiver
- {
- Stream stream;
- byte[] buffer = new byte[10000];
- int bufferReadOffset;
-
- public void StartReceive(Stream stream)
- {
- if (stream == null)
- throw new ArgumentNullException("stream");
- if (this.stream != null)
- throw new InvalidOperationException("StartReceive can be called only once.");
- this.stream = stream;
- try {
- stream.BeginRead(buffer, 0, buffer.Length, OnReceive, null);
- } catch (ObjectDisposedException) {
- OnConnectionLost();
- } catch (IOException) {
- OnConnectionLost();
- }
- }
-
- int maxPacketSize = int.MaxValue - 20000;
-
- ///
- /// Gets/Sets the maximum allowed packet size in bytes.
- ///
- public int MaxPacketSize {
- get { return maxPacketSize; }
- set {
- if (value < 1)
- throw new ArgumentOutOfRangeException("value", value, "MaxPacketSize must be >0");
- maxPacketSize = value;
- }
- }
-
- void OnReceive(IAsyncResult ar)
- {
- int bytes;
- try {
- bytes = stream.EndRead(ar);
- } catch (ObjectDisposedException) {
- OnConnectionLost();
- return;
- } catch (IOException) {
- OnConnectionLost();
- return;
- }
- if (bytes == 0) {
- // 0 bytes read indicates the end of the stream
- OnConnectionLost();
- return;
- }
- bufferReadOffset += bytes;
- int packetStart = 0;
- int packetSize = -1;
- while (bufferReadOffset >= packetStart + 4) {
- packetSize = BitConverter.ToInt32(buffer, packetStart);
- if (packetSize < 4)
- throw new ProtocolViolationException("packetSize must be > 4");
- if (packetSize - 4 > MaxPacketSize)
- throw new ProtocolViolationException("packetSize must be smaller than MaxPacketSize");
- if (bufferReadOffset >= packetStart + packetSize) {
- //Debug.WriteLine("receiving packet of size " + packetSize);
- byte[] packet = new byte[packetSize - 4];
- Array.Copy(buffer, packetStart + 4, packet, 0, packet.Length);
- OnPacketReceived(packet);
- packetStart += packetSize;
- } else {
- break;
- }
- }
- if (packetStart != 0) {
- // copy half-received packet to the beginning of the buffer
- int copyAmount = bufferReadOffset - packetStart;
- for (int i = 0; i < copyAmount; i++) {
- buffer[i] = buffer[i + packetStart];
- }
- bufferReadOffset = copyAmount;
- }
- if (packetSize > buffer.Length) {
- Debug.WriteLine("resizing receive buffer for packet of size " + packetSize);
- Array.Resize(ref buffer, Math.Max(packetSize, buffer.Length * 2));
- }
- if (bufferReadOffset >= buffer.Length) {
- // should never happen - the buffer now is large enough to contain the packet,
- // and we would have already processed the packet if received it completely
- throw new InvalidOperationException("trying to read 0 bytes from socket");
- }
- try {
- stream.BeginRead(buffer, bufferReadOffset, buffer.Length - bufferReadOffset, OnReceive, null);
- } catch (ObjectDisposedException) {
- OnConnectionLost();
- } catch (IOException) {
- OnConnectionLost();
- }
- }
-
- void OnConnectionLost()
- {
- if (ConnectionLost != null)
- ConnectionLost(this, EventArgs.Empty);
- }
-
- void OnPacketReceived(byte[] packet)
- {
- if (PacketReceived != null)
- PacketReceived(this, new PacketReceivedEventArgs(packet));
- }
-
- public event EventHandler ConnectionLost;
- public event EventHandler PacketReceived;
- }
-
- public class PacketReceivedEventArgs : EventArgs
- {
- byte[] packet;
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
- public byte[] Packet {
- get { return packet; }
- }
-
- public PacketReceivedEventArgs(byte[] packet)
- {
- this.packet = packet;
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketSender.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketSender.cs
deleted file mode 100644
index 61b5570bf8..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketSender.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.IO;
-using System.Threading;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
-{
- ///
- /// Description of PacketSender.
- ///
- public sealed class PacketSender
- {
- Stream targetStream;
- public PacketSender(Stream stream)
- {
- if (stream == null)
- throw new ArgumentNullException("stream");
- targetStream = stream;
- }
-
- public void Send(byte[] packet)
- {
- if (packet == null)
- throw new ArgumentNullException("packet");
- Send(new MemoryStream(packet, false));
- }
-
- public void Send(Stream stream)
- {
- if (stream == null)
- throw new ArgumentNullException("stream");
- byte[] buffer = new byte[4 + stream.Length];
- unchecked {
- buffer[0] = (byte)buffer.Length;
- buffer[1] = (byte)(buffer.Length >> 8);
- buffer[2] = (byte)(buffer.Length >> 16);
- buffer[3] = (byte)(buffer.Length >> 24);
- }
- int pos = 4;
- int c;
- do {
- c = stream.Read(buffer, pos, buffer.Length - pos);
- pos += c;
- } while (c > 0);
- try {
- targetStream.Write(buffer, 0, buffer.Length);
- } catch (IOException ex) {
- ICSharpCode.SharpDevelop.BuildWorker.Program.Log(ex.ToString());
- OnWriteFailed();
- } catch (ObjectDisposedException ex) {
- ICSharpCode.SharpDevelop.BuildWorker.Program.Log(ex.ToString());
- OnWriteFailed();
- }
- }
-
- void OnWriteFailed()
- {
- if (WriteFailed != null)
- WriteFailed(this, EventArgs.Empty);
- }
-
- public event EventHandler WriteFailed;
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs
deleted file mode 100644
index 8d10b78fcf..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs
+++ /dev/null
@@ -1,270 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.Net;
-using System.Net.Sockets;
-using System.Reflection;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Security.Cryptography;
-using System.Threading;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
-{
- ///
- /// Manages a worker process that communicates with the host using a local TCP connection.
- ///
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
- public sealed class WorkerProcess
- {
- readonly object hostObject;
-
- public WorkerProcess(IHostObject hostObject)
- {
- if (hostObject == null)
- throw new ArgumentNullException("hostObject");
- this.hostObject = hostObject;
- }
-
- TcpListener listener;
- Process process;
-
- TcpClient client;
- PacketSender sender;
- PacketReceiver receiver;
-
- // We use TCP, so we'll have to deal with "attackers" trying to hijack our connection.
- // There are two lines of defense:
- // 1. the only local connections are accepted
- // 2. the client must authenticate with a random password
- // We're not protecting against DOS - we're only vulnerable to local attackers during a short
- // time frame. The password is only to defend against deserializing arbitrary objects from
- // unauthenticated clients.
- // We probably should use Named Pipes instead of TCP.
- byte[] password;
- bool clientAuthenticated;
-
- public void Start(ProcessStartInfo info)
- {
- if (info == null)
- throw new ArgumentNullException("info");
-
- password = new byte[16];
- new RNGCryptoServiceProvider().GetBytes(password);
-
- listener = new TcpListener(IPAddress.Loopback, 0);
- listener.Start();
- string argument = ((IPEndPoint)listener.LocalEndpoint).Port.ToString(CultureInfo.InvariantCulture);
-
- string oldArguments = info.Arguments;
- info.Arguments += " " + argument + " " + Convert.ToBase64String(password);
- process = Process.Start(info);
- // "manual process start" - useful for profiling the build worker
- //System.Windows.Forms.MessageBox.Show(info.Arguments);
- //process = Process.GetProcessesByName("ICSharpCode.SharpDevelop.BuildWorker")[0];
-
- info.Arguments = oldArguments;
-
- SetTimeout();
- listener.BeginAcceptTcpClient(OnAcceptTcpClient, null);
- }
-
- Timer currentTimer;
-
- void SetTimeout()
- {
- lock (this) {
- ClearTimeout();
- currentTimer = new Timer(OnTimeout, null, HostProcess.SendKeepAliveInterval * 5 / 2, -1);
- }
- }
-
- void ClearTimeout()
- {
- lock (this) {
- if (currentTimer != null) {
- currentTimer.Dispose();
- currentTimer = null;
- }
- }
- }
-
- void OnTimeout(object state)
- {
- Program.Log("OnTimeout");
- Kill();
- }
-
- void OnAcceptTcpClient(IAsyncResult ar)
- {
- clientAuthenticated = false;
- SetTimeout();
- try {
- client = listener.EndAcceptTcpClient(ar);
- } catch (SocketException) {
- // error connecting
- }
- listener.Stop();
- listener = null;
-
- if (client == null) {
- OnConnectionLost(null, null);
- } else {
- Stream stream = client.GetStream();
- receiver = new PacketReceiver();
- sender = new PacketSender(stream);
- receiver.ConnectionLost += OnConnectionLost;
- receiver.PacketReceived += OnPacketReceived;
-
- receiver.StartReceive(stream);
- OnReady();
- }
- }
-
- public void Shutdown()
- {
- Program.Log("Shutdown");
- OnWorkerLost();
- if (client != null) {
- client.Close();
- }
- }
-
- void OnConnectionLost(object sender, EventArgs e)
- {
- Program.Log("OnConnectionLost");
- SetTimeout();
- OnWorkerLost();
- }
-
- void OnPacketReceived(object sender, PacketReceivedEventArgs e)
- {
- SetTimeout();
- if (e.Packet.Length != 0) {
- if (clientAuthenticated) {
- MethodCall mc = (MethodCall)DeserializeObject(e.Packet);
- mc.CallOn(hostObject);
- } else {
- if (ArrayEquals(e.Packet, password)) {
- clientAuthenticated = true;
- } else {
- Kill();
- throw new InvalidOperationException("Worker process authentication failed.");
- }
- }
- }
- }
-
- static bool ArrayEquals(byte[] a, byte[] b)
- {
- if (a.Length != b.Length)
- return false;
- for (int i = 0; i < a.Length; i++) {
- if (a[i] != b[i])
- return false;
- }
- return true;
- }
-
- public void Kill()
- {
- Program.Log("Kill");
- ClearTimeout();
- OnWorkerLost();
- if (client != null) {
- client.Close();
- client = null;
- }
- if (process != null) {
- try {
- if (!process.HasExited) {
- process.Kill();
- }
- } catch (InvalidOperationException) {
- // may occur when the worker process crashes
- }
- process = null;
- }
- }
-
- int workerIsLost;
-
- void OnReady()
- {
- if (workerIsLost == 1)
- return;
- Program.Log("OnReady");
- if (Ready != null)
- Ready(this, EventArgs.Empty);
- }
-
- void OnWorkerLost()
- {
- if (Interlocked.Exchange(ref workerIsLost, 1) == 1)
- return;
- Program.Log("OnWorkerLost");
- if (WorkerLost != null)
- WorkerLost(this, EventArgs.Empty);
- }
-
- ///
- /// Occurs when the worker process is ready to execute a job.
- ///
- public event EventHandler Ready;
-
- ///
- /// Occurs when the connection to the worker process broke.
- ///
- public event EventHandler WorkerLost;
-
- public void CallMethodOnWorker(string methodName, params object[] args)
- {
- Debug.WriteLine("CallMethodOnWorker: " + methodName);
- sender.Send(SerializeObject(new MethodCall(methodName, args)));
- }
-
- internal static MemoryStream SerializeObject(object obj)
- {
- MemoryStream ms = new MemoryStream();
- BinaryFormatter bf = new BinaryFormatter();
- bf.Serialize(ms, obj);
- ms.Position = 0;
- return ms;
- }
-
- internal static object DeserializeObject(byte[] packet)
- {
- BinaryFormatter bf = new BinaryFormatter();
- return bf.Deserialize(new MemoryStream(packet, false));
- }
-
- [Serializable]
- internal class MethodCall
- {
- public readonly string MethodName;
- public readonly object[] Arguments;
-
- public MethodCall(string methodName, object[] arguments)
- {
- this.MethodName = methodName;
- this.Arguments = arguments;
- }
-
- public void CallOn(object target)
- {
- target.GetType().InvokeMember(MethodName,
- BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance,
- null, target, Arguments, CultureInfo.InvariantCulture);
- }
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs
deleted file mode 100644
index bf01824377..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs
+++ /dev/null
@@ -1,477 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-// activate this define to see the build worker window
-//#define WORKERDEBUG
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Threading;
-
-using ICSharpCode.SharpDevelop.BuildWorker.Interprocess;
-using Microsoft.Build.BuildEngine;
-using Microsoft.Build.Framework;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker
-{
- class Program
- {
- static HostProcess host;
- BuildJob currentJob;
- bool requestCancellation;
-
- [STAThread]
- internal static void Main(string[] args)
- {
- AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppDomain_CurrentDomain_UnhandledException);
-
- if (args.Length == 3 && args[0] == "worker") {
- try {
- host = new HostProcess(new Program());
- host.WorkerProcessMain(args[1], args[2]);
- } catch (Exception ex) {
- ShowMessageBox(ex.ToString());
- }
- } else {
- Console.WriteLine("ICSharpCode.SharpDevelop.BuildWorker.exe is used to compile " +
- "MSBuild projects inside SharpDevelop.");
- Console.WriteLine("If you want to compile projects on the command line, use " +
- "MSBuild.exe (part of the .NET Framework)");
- }
- }
-
- static void AppDomain_CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
- {
- ShowMessageBox(e.ExceptionObject.ToString());
- }
-
- #if RELEASE && WORKERDEBUG
- #error WORKERDEBUG must not be defined if RELEASE is defined
- #endif
-
- internal static ProcessStartInfo CreateStartInfo()
- {
- ProcessStartInfo info = new ProcessStartInfo(typeof(Program).Assembly.Location);
- info.WorkingDirectory = Path.GetDirectoryName(info.FileName);
- info.Arguments = "worker";
- info.UseShellExecute = false;
- #if RELEASE || !WORKERDEBUG
- info.CreateNoWindow = true;
- #endif
- return info;
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")]
- internal static void ShowMessageBox(string text)
- {
- System.Windows.Forms.MessageBox.Show(text, "SharpDevelop Build Worker Process");
- }
-
- [Conditional("DEBUG")]
- internal static void Log(string text)
- {
- Debug.WriteLine(text);
- #if WORKERDEBUG
- DateTime now = DateTime.Now;
- Console.WriteLine(now.ToString() + "," + now.Millisecond.ToString("d3") + " " + text);
- #endif
- }
-
- // Called with CallMethodOnWorker
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public void StartBuild(BuildJob job)
- {
- if (job == null)
- throw new ArgumentNullException("job");
- lock (this) {
- if (currentJob != null)
- throw new InvalidOperationException("Already running a job");
- currentJob = job;
- requestCancellation = false;
- }
- #if WORKERDEBUG
- Console.Title = "BuildWorker - " + Path.GetFileName(job.ProjectFileName);
- #endif
- Program.Log("Got job:");
- Program.Log(job.ToString());
- Program.Log("Start build thread");
- Thread thread = new Thread(RunThread);
- thread.Name = "Build thread";
- thread.SetApartmentState(ApartmentState.STA);
- thread.Start();
- }
-
- // Called with CallMethodOnWorker
- //[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- // TODO: make use of CancelBuild
- public void CancelBuild()
- {
- lock (this) {
- requestCancellation = true;
- }
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- void RunThread()
- {
- Program.Log("In build thread");
- bool success = false;
- try {
- success = DoBuild();
- } catch (Exception ex) {
- host.CallMethodOnHost("ReportException", ex.ToString());
- } finally {
- Program.Log("BuildDone");
-
- #if WORKERDEBUG
- Console.Title = "BuildWorker - no job";
- DisplayEventCounts();
- #endif
-
- lock (this) {
- currentJob = null;
- }
- // in the moment we call BuildDone, we can get the next job
- host.CallMethodOnHost("BuildDone", success);
- }
- }
-
- Engine CreateEngine()
- {
- Engine engine = new Engine(ToolsetDefinitionLocations.Registry
- | ToolsetDefinitionLocations.ConfigurationFile);
-
- engine.RegisterLogger(new ForwardingLogger(this));
- //engine.RegisterLogger(new ConsoleLogger(LoggerVerbosity.Diagnostic));
-
- return engine;
- }
-
- EventSource hostEventSource;
-
- internal void BuildInProcess(BuildSettings settings, BuildJob job)
- {
- lock (this) {
- if (currentJob != null)
- throw new InvalidOperationException("Already running a job");
- currentJob = job;
- requestCancellation = false;
- hostEventSource = new EventSource();
- }
- job.CancelCallback = delegate {
- lock (this) {
- if (currentJob == job) {
- requestCancellation = true;
- }
- }
- };
- bool success = false;
- try {
- foreach (ILogger logger in settings.Logger) {
- logger.Initialize(hostEventSource);
- }
- success = DoBuild();
- foreach (ILogger logger in settings.Logger) {
- logger.Shutdown();
- }
- } finally {
- lock (this) {
- currentJob = null;
- }
- if (settings.BuildDoneCallback != null)
- settings.BuildDoneCallback(success);
- }
- }
-
- Engine engine;
- Dictionary lastJobProperties;
-
- // Fix for SD2-1533 - Project configurations get confused
- // Whenever the global properties change, we have to create a new Engine
- // to ensure MSBuild doesn't cache old paths
- bool GlobalPropertiesChanged(Dictionary newJobProperties)
- {
- Debug.Assert(newJobProperties != null);
- if (lastJobProperties == null || lastJobProperties.Count != newJobProperties.Count) {
- Log("Recreating engine: Number of build properties changed");
- return true;
- }
- foreach (KeyValuePair pair in lastJobProperties) {
- string val;
- if (!newJobProperties.TryGetValue(pair.Key, out val)) {
- Log("Recreating engine: Build property removed: " + pair.Key);
- return true;
- }
- if (val != pair.Value) {
- Log("Recreating engine: Build property changed: " + pair.Key);
- return true;
- }
- }
- return false;
- }
-
- bool DoBuild()
- {
- if (currentJob.IntPtrSize != IntPtr.Size)
- throw new ApplicationException("Incompatible IntPtr.Size between host and worker");
-
- if (engine == null || GlobalPropertiesChanged(currentJob.Properties)) {
- engine = CreateEngine();
- lastJobProperties = currentJob.Properties;
- engine.GlobalProperties.Clear();
- foreach (KeyValuePair pair in currentJob.Properties) {
- engine.GlobalProperties.SetProperty(pair.Key, pair.Value);
- }
- }
-
- Log("Loading " + currentJob.ProjectFileName);
- Project project = LoadProject(engine, currentJob.ProjectFileName);
- if (project == null)
- return false;
-
- if (string.IsNullOrEmpty(currentJob.Target)) {
- Log("Building default target in " + currentJob.ProjectFileName);
- return engine.BuildProject(project);
- } else {
- Log("Building target '" + currentJob.Target + "' in " + currentJob.ProjectFileName);
- return engine.BuildProject(project, currentJob.Target.Split(';'));
- }
- }
-
- Project LoadProject(Engine engine, string fileName)
- {
- Project project = engine.CreateNewProject();
- try {
- project.Load(fileName);
-
- // When we set BuildingInsideVisualStudio, MSBuild tries to build all projects
- // every time because in Visual Studio, the host compiler does the change detection
- // We override the property '_ComputeNonExistentFileProperty' which is responsible
- // for recompiling each time - our _ComputeNonExistentFileProperty does nothing,
- // which re-enables the MSBuild's usual change detection
- project.Targets.AddNewTarget("_ComputeNonExistentFileProperty");
-
- foreach (string additionalImport in currentJob.AdditionalImports) {
- project.AddNewImport(additionalImport, null);
- }
-
- return project;
- } catch (ArgumentException ex) {
- ReportError(ex.Message);
- } catch (InvalidProjectFileException ex) {
- ReportError(new BuildErrorEventArgs(ex.ErrorSubcategory, ex.ErrorCode, ex.ProjectFile,
- ex.LineNumber, ex.ColumnNumber, ex.EndLineNumber, ex.EndColumnNumber,
- ex.BaseMessage, ex.HelpKeyword, ex.Source));
- }
- return null;
- }
-
- void ReportError(string message)
- {
- ReportError(new BuildErrorEventArgs(null, null, null, -1, -1, -1, -1,
- message, null, "SharpDevelopBuildWorker"));
- }
-
- void ReportError(BuildErrorEventArgs e)
- {
- HostReportEvent(e);
- }
-
- void HostReportEvent(BuildEventArgs e)
- {
- if (host != null) {
- host.CallMethodOnHost("ReportEvent", e);
- } else {
- // enable error reporting for in-process builds
- EventSource eventSource = hostEventSource;
- if (eventSource != null) {
- eventSource.RaiseEvent(e);
- }
- }
- }
-
- sealed class ForwardingLogger : ILogger
- {
- Program program;
-
- public ForwardingLogger(Program program)
- {
- this.program = program;
- }
-
- IEventSource eventSource;
-
- public LoggerVerbosity Verbosity { get; set; }
- public string Parameters { get; set; }
-
- public void Initialize(IEventSource eventSource)
- {
- this.eventSource = eventSource;
- EventTypes eventMask = program.currentJob.EventMask;
- if ((eventMask & EventTypes.Message) != 0)
- eventSource.MessageRaised += OnEvent;
- if ((eventMask & EventTypes.Error) != 0)
- eventSource.ErrorRaised += OnEvent;
- if ((eventMask & EventTypes.Warning) != 0)
- eventSource.WarningRaised += OnEvent;
- if ((eventMask & EventTypes.BuildStarted) != 0)
- eventSource.BuildStarted += OnEvent;
- if ((eventMask & EventTypes.BuildFinished) != 0)
- eventSource.BuildFinished += OnEvent;
- if ((eventMask & EventTypes.ProjectStarted) != 0)
- eventSource.ProjectStarted += OnEvent;
- if ((eventMask & EventTypes.ProjectFinished) != 0)
- eventSource.ProjectFinished += OnEvent;
- if ((eventMask & EventTypes.TargetStarted) != 0)
- eventSource.TargetStarted += OnEvent;
- if ((eventMask & EventTypes.TargetFinished) != 0)
- eventSource.TargetFinished += OnEvent;
- if ((eventMask & EventTypes.TaskStarted) != 0)
- eventSource.TaskStarted += OnEvent;
- else
- eventSource.TaskStarted += OnTaskStarted;
- if ((eventMask & EventTypes.TaskFinished) != 0)
- eventSource.TaskFinished += OnEvent;
- else
- eventSource.TaskFinished += OnTaskFinished;
- if ((eventMask & EventTypes.Custom) != 0)
- eventSource.CustomEventRaised += OnEvent;
- if ((eventMask & EventTypes.Unknown) != 0)
- eventSource.AnyEventRaised += OnUnknownEventRaised;
- if (eventMask != EventTypes.All)
- eventSource.AnyEventRaised += OnAnyEvent;
-
- #if WORKERDEBUG
- eventSource.AnyEventRaised += CountEvent;
- #endif
- }
-
- public void Shutdown()
- {
- EventTypes eventMask = program.currentJob.EventMask;
- if ((eventMask & EventTypes.Message) != 0)
- eventSource.MessageRaised -= OnEvent;
- if ((eventMask & EventTypes.Error) != 0)
- eventSource.ErrorRaised -= OnEvent;
- if ((eventMask & EventTypes.Warning) != 0)
- eventSource.WarningRaised -= OnEvent;
- if ((eventMask & EventTypes.BuildStarted) != 0)
- eventSource.BuildStarted -= OnEvent;
- if ((eventMask & EventTypes.BuildFinished) != 0)
- eventSource.BuildFinished -= OnEvent;
- if ((eventMask & EventTypes.ProjectStarted) != 0)
- eventSource.ProjectStarted -= OnEvent;
- if ((eventMask & EventTypes.ProjectFinished) != 0)
- eventSource.ProjectFinished -= OnEvent;
- if ((eventMask & EventTypes.TargetStarted) != 0)
- eventSource.TargetStarted -= OnEvent;
- if ((eventMask & EventTypes.TargetFinished) != 0)
- eventSource.TargetFinished -= OnEvent;
- if ((eventMask & EventTypes.TaskStarted) != 0)
- eventSource.TaskStarted -= OnEvent;
- else
- eventSource.TaskStarted -= OnTaskStarted;
- if ((eventMask & EventTypes.TaskFinished) != 0)
- eventSource.TaskFinished -= OnEvent;
- else
- eventSource.TaskFinished -= OnTaskFinished;
- if ((eventMask & EventTypes.Custom) != 0)
- eventSource.CustomEventRaised -= OnEvent;
- if ((eventMask & EventTypes.Unknown) != 0)
- eventSource.AnyEventRaised -= OnUnknownEventRaised;
- if (eventMask != EventTypes.All)
- eventSource.AnyEventRaised -= OnAnyEvent;
-
- #if WORKERDEBUG
- eventSource.AnyEventRaised -= CountEvent;
- #endif
- }
-
- // registered for AnyEventRaised to support build cancellation.
- // is not registered if all events should be forwarded, in that case, OnEvent
- // already handles build cancellation
- void OnAnyEvent(object sender, BuildEventArgs e)
- {
- if (program.requestCancellation)
- throw new BuildCancelException();
- }
-
- // used for all events that should be forwarded
- void OnEvent(object sender, BuildEventArgs e)
- {
- if (program.requestCancellation)
- throw new BuildCancelException();
- program.HostReportEvent(e);
- }
-
- // registered for AnyEventRaised to forward unknown events
- void OnUnknownEventRaised(object sender, BuildEventArgs e)
- {
- if (EventSource.GetEventType(e) == EventTypes.Unknown)
- OnEvent(sender, e);
- }
-
- // registered when only specific tasks should be forwarded
- void OnTaskStarted(object sender, TaskStartedEventArgs e)
- {
- if (program.currentJob.InterestingTaskNames.Contains(e.TaskName))
- OnEvent(sender, e);
- }
-
- // registered when only specific tasks should be forwarded
- void OnTaskFinished(object sender, TaskFinishedEventArgs e)
- {
- if (program.currentJob.InterestingTaskNames.Contains(e.TaskName))
- OnEvent(sender, e);
- }
-
-
- #if WORKERDEBUG
- void CountEvent(object sender, BuildEventArgs e)
- {
- Program.CountEvent(EventSource.GetEventType(e));
- }
- #endif
- }
-
- #if WORKERDEBUG
- static Dictionary eventCounts = new Dictionary();
-
- static void CountEvent(EventTypes e)
- {
- if (eventCounts.ContainsKey(e))
- eventCounts[e] += 1;
- else
- eventCounts[e] = 1;
- }
-
- static void DisplayEventCounts()
- {
- foreach (var pair in eventCounts) {
- Console.WriteLine(" " + pair.Key.ToString() + ": " + pair.Value.ToString());
- }
- }
- #endif
-
- [Serializable]
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1064:ExceptionsShouldBePublic")]
- sealed class BuildCancelException : Exception
- {
- public BuildCancelException()
- {
- }
-
- BuildCancelException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs
deleted file mode 100644
index b28bd949f7..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs
+++ /dev/null
@@ -1,274 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using Microsoft.Build.Framework;
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Diagnostics;
-using ICSharpCode.SharpDevelop.BuildWorker.Interprocess;
-
-namespace ICSharpCode.SharpDevelop.BuildWorker
-{
- ///
- /// Manages the list of running child worker processes.
- ///
- public static class WorkerManager
- {
- ///
- /// Delegate executed on the host when an exception occurs.
- ///
- public static Action ShowError { get; set; }
-
- const int MaxWorkerProcessCount = 16;
-
- static readonly object lockObject = new object();
- static Queue outstandingBuildRuns = new Queue();
- static int workerProcessCount;
- static List freeWorkerProcesses = new List();
-
- static WorkerProcessHost DequeueFreeWorkerProcess()
- {
- WorkerProcessHost h = freeWorkerProcesses[freeWorkerProcesses.Count - 1];
- freeWorkerProcesses.RemoveAt(freeWorkerProcesses.Count - 1);
- return h;
- }
-
- public static void StartBuild(BuildJob job, BuildSettings settings)
- {
- if (job == null)
- throw new ArgumentNullException("job");
- if (settings == null)
- throw new ArgumentNullException("settings");
-
- BuildRun buildRun = new BuildRun(job, settings);
- lock (lockObject) {
- if (freeWorkerProcesses.Count > 0) {
- DequeueFreeWorkerProcess().StartBuild(buildRun);
- } else {
- outstandingBuildRuns.Enqueue(buildRun);
- if (workerProcessCount < MaxWorkerProcessCount) {
- workerProcessCount++;
- (new WorkerProcessHost()).Start();
- }
- }
- }
- }
-
- static Program inProcessBuildWorker;
-
- public static void RunBuildInProcess(BuildJob job, BuildSettings settings)
- {
- if (job == null)
- throw new ArgumentNullException("job");
- if (settings == null)
- throw new ArgumentNullException("settings");
- lock (lockObject) {
- if (inProcessBuildWorker == null)
- inProcessBuildWorker = new Program();
- }
- inProcessBuildWorker.BuildInProcess(settings, job);
- }
-
- static readonly object timerLock = new object();
- static Timer lastBuildDoneTimer;
-
- static void SetLastBuildDoneTimer()
- {
- lock (timerLock) {
- if (lastBuildDoneTimer != null) {
- lastBuildDoneTimer.Dispose();
- lastBuildDoneTimer = null;
- }
- lastBuildDoneTimer = new Timer(LastBuildDoneTimerCallback, null, 60000, 20000);
- }
- }
-
- static void ClearLastBuildDoneTimer()
- {
- lock (timerLock) {
- if (lastBuildDoneTimer != null) {
- lastBuildDoneTimer.Dispose();
- lastBuildDoneTimer = null;
- }
- }
- }
-
- static void LastBuildDoneTimerCallback(object state)
- {
- lock (lockObject) {
- if (freeWorkerProcesses.Count > 0) {
- Debug.WriteLine("WorkerManager: shutting down free worker");
- DequeueFreeWorkerProcess().Shutdown();
- } else {
- ClearLastBuildDoneTimer();
- }
- }
- }
-
- sealed class BuildRun
- {
- internal BuildJob job;
- internal BuildSettings settings;
- EventSource eventSource = new EventSource();
-
- public BuildRun(BuildJob job, BuildSettings settings)
- {
- this.job = job;
- this.settings = settings;
- foreach (ILogger logger in settings.Logger) {
- logger.Initialize(eventSource);
- }
- }
-
- public void RaiseError(string message)
- {
- Debug.WriteLine(message);
- RaiseEvent(new BuildErrorEventArgs(null, null, null, -1, -1, -1, -1, message, null, "SharpDevelopBuildWorkerManager"));
- }
-
- public void RaiseEvent(BuildEventArgs e)
- {
- eventSource.RaiseEvent(e);
- }
-
- public void Done(bool success)
- {
- SetLastBuildDoneTimer();
- try {
- foreach (ILogger logger in settings.Logger) {
- logger.Shutdown();
- }
- } finally {
- if (settings.BuildDoneCallback != null)
- settings.BuildDoneCallback(success);
- }
- }
- }
-
- sealed class WorkerProcessHost : IHostObject
- {
- WorkerProcess process;
-
- internal void Start()
- {
- process = new WorkerProcess(this);
- process.Ready += OnReady;
- process.WorkerLost += OnWorkerLost;
-
- process.Start(Program.CreateStartInfo());
- }
-
- BuildRun currentBuildRun;
-
- // runs in lock(lockObject)
- internal void StartBuild(BuildRun nextBuildRun)
- {
- Debug.Assert(currentBuildRun == null);
- currentBuildRun = nextBuildRun;
- process.CallMethodOnWorker("StartBuild", currentBuildRun.job);
- }
-
- void OnReady(object sender, EventArgs e)
- {
- BuildRun nextBuildRun = null;
- lock (lockObject) {
- if (outstandingBuildRuns.Count > 0)
- nextBuildRun = outstandingBuildRuns.Dequeue();
- else
- freeWorkerProcesses.Add(this);
- }
- if (nextBuildRun != null) {
- StartBuild(nextBuildRun);
- }
- }
-
- void OnWorkerLost(object sender, EventArgs e)
- {
- BuildRun buildRun;
- lock (lockObject) {
- workerProcessCount--;
- freeWorkerProcesses.Remove(this);
- if (workerProcessCount == 0 && currentBuildRun == null) {
- // error starting worker => we must
- // cancel all outstanding build runs to prevent them from waiting
- // for a worker becoming ready when all workers are dead
- while (workerProcessCount == 0 && outstandingBuildRuns.Count > 0) {
- BuildRun r = outstandingBuildRuns.Dequeue();
- Monitor.Exit(lockObject);
- r.RaiseError("Error starting worker process.");
- r.Done(false);
- Monitor.Enter(lockObject);
- }
- }
- buildRun = Interlocked.Exchange(ref currentBuildRun, null);
- }
- if (buildRun != null) {
- buildRun.RaiseError("Worker process lost during build");
- buildRun.Done(false);
- }
- }
-
- internal void Shutdown()
- {
- process.Shutdown();
- }
-
- // Called with CallMethodOnHost
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public void ReportEvent(BuildEventArgs e)
- {
- BuildRun buildRun = currentBuildRun;
- if (buildRun != null) {
- buildRun.RaiseEvent(e);
- }
- }
-
- // Called with CallMethodOnHost
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public void BuildDone(bool success)
- {
- BuildRun buildRun;
- lock (lockObject) {
- buildRun = Interlocked.Exchange(ref currentBuildRun, null);
- }
- if (buildRun != null) {
- // OnReady must be called before buildRun.Done - the callback
- // might trigger another build, and if this worker process
- // isn't marked as ready, a new process will be created even
- // though this one could do the work.
- OnReady(null, null);
- buildRun.Done(success);
- }
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- public void ReportException(string exceptionText)
- {
- // shutdown worker if it produced an exception
- try {
- process.Shutdown();
- } catch {}
-
- if (ShowError != null)
- ShowError(new Exception(exceptionText));
- else
- Program.ShowMessageBox(exceptionText);
- }
- }
- }
-
- public sealed class BuildSettings
- {
- List logger = new List();
- public Action BuildDoneCallback { get; set; }
-
- public ICollection Logger {
- get { return logger; }
- }
- }
-}
diff --git a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/app.config b/src/Main/ICSharpCode.SharpDevelop.BuildWorker/app.config
deleted file mode 100644
index 5c14c1929e..0000000000
--- a/src/Main/ICSharpCode.SharpDevelop.BuildWorker/app.config
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln
index 54197ebca1..02e504c187 100644
--- a/src/SharpDevelop.sln
+++ b/src/SharpDevelop.sln
@@ -1,170 +1,168 @@
Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 10
-# SharpDevelop 4.0.0.1
+# Visual Studio 2008
+# SharpDevelop 3.1.0.4094
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "86CE7B3F-6273-4215-9E36-6184D98F854E"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
EndProject
Project("{982E8BC1-ACD7-4dbf-96AB-B2CE67D6A008}") = "FSharpBinding", "AddIns\BackendBindings\FSharp\FSharpBinding\Project\FSharpBinding.fsproj", "{99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "86CE7B3F-6273-4215-9E36-6184D98F854E"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
EndProject
-Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
+Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -356,10 +354,6 @@ Global
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Release|Any CPU.Build.0 = Release|Any CPU
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -414,73 +408,72 @@ Global
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- 86CE7B3F-6273-4215-9E36-6184D98F854E = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {3CA90546-3B4C-4663-9445-C4E9371750A7} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
- {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
- {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
- {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
- {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
- {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
- {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
- {533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{0162E499-42D0-409B-AA25-EED21F75336B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
- {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
- {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
- {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
+ {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
- {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
+ {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
+ {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
+ {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
+ {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
+ {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
+ {3CA90546-3B4C-4663-9445-C4E9371750A7} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ 86CE7B3F-6273-4215-9E36-6184D98F854E = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
+ {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
+ {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
+ {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
+ {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal