diff --git a/.gitignore b/.gitignore
index 52acab8..a5c19de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@ obj
/winsw.csproj.user
/winsw_cert.pfx
*.user
+/src/packages/NUnit.2.6.4
+/src/packages/ILMerge.MSBuild.Tasks.1.0.0.3
diff --git a/src/.nuget/packages.config b/src/.nuget/packages.config
new file mode 100644
index 0000000..e1e92a3
--- /dev/null
+++ b/src/.nuget/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/Core/ServiceWrapper/IEventWriter.cs b/src/Core/ServiceWrapper/IEventWriter.cs
deleted file mode 100644
index a09421f..0000000
--- a/src/Core/ServiceWrapper/IEventWriter.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Diagnostics;
-
-namespace winsw.util
-{
- public interface IEventWriter
- {
- void LogEvent(String message);
- void LogEvent(String message, EventLogEntryType type);
- }
-}
diff --git a/src/Core/ServiceWrapper/Main.cs b/src/Core/ServiceWrapper/Main.cs
index f9de0cb..dd18771 100644
--- a/src/Core/ServiceWrapper/Main.cs
+++ b/src/Core/ServiceWrapper/Main.cs
@@ -18,6 +18,7 @@ using winsw.Extensions;
using winsw.Util;
using WMI;
using ServiceType = WMI.ServiceType;
+using winsw.Native;
using System.Reflection;
namespace winsw
diff --git a/src/Core/ServiceWrapper/Util/WinSWException.cs b/src/Core/ServiceWrapper/Util/WinSWException.cs
deleted file mode 100644
index 3d1c8c4..0000000
--- a/src/Core/ServiceWrapper/Util/WinSWException.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-
-namespace winsw.Util
-{
- public class WinSWException : Exception
- {
- public WinSWException(String message)
- : base(message)
- { }
-
- public WinSWException(String message, Exception innerException)
- : base(message, innerException)
- { }
- }
-}
diff --git a/src/Core/ServiceWrapper/Util/XmlHelper.cs b/src/Core/ServiceWrapper/Util/XmlHelper.cs
deleted file mode 100644
index 6269976..0000000
--- a/src/Core/ServiceWrapper/Util/XmlHelper.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-using System;
-using System.IO;
-using System.Xml;
-
-namespace winsw.Util
-{
- public class XmlHelper
- {
- ///
- /// Retrieves a single string element
- ///
- /// Parent node
- /// Element name
- /// If otional, don't throw an exception if the elemen is missing
- /// String value or null
- /// The required element is missing
- public static string SingleElement(XmlNode node, string tagName, Boolean optional)
- {
- var n = node.SelectSingleNode(tagName);
- if (n == null && !optional) throw new InvalidDataException("<" + tagName + "> is missing in configuration XML");
- return n == null ? null : Environment.ExpandEnvironmentVariables(n.InnerText);
- }
-
- ///
- /// Retrieves a single node
- ///
- /// Parent node
- /// Element name
- /// If otional, don't throw an exception if the elemen is missing
- /// String value or null
- /// The required element is missing
- public static XmlNode SingleNode(XmlNode node, string tagName, Boolean optional)
- {
- var n = node.SelectSingleNode(tagName);
- if (n == null && !optional) throw new InvalidDataException("<" + tagName + "> is missing in configuration XML");
- return n;
- }
-
- ///
- /// Retrieves a single mandatory attribute
- ///
- /// Parent node
- /// Attribute name
- /// Attribute value
- /// The required attribute is missing
- public static TAttributeType SingleAttribute (XmlElement node, string attributeName)
- {
- if (!node.HasAttribute(attributeName))
- {
- throw new InvalidDataException("Attribute <" + attributeName + "> is missing in configuration XML");
- }
-
- return SingleAttribute(node, attributeName, default(TAttributeType));
- }
-
- ///
- /// Retrieves a single optional attribute
- ///
- /// Parent node
- /// Attribute name
- /// Default value
- /// Attribute value (or default)
- public static TAttributeType SingleAttribute(XmlElement node, string attributeName, TAttributeType defaultValue)
- {
- if (!node.HasAttribute(attributeName)) return defaultValue;
-
- string rawValue = node.GetAttribute(attributeName);
- string substitutedValue = Environment.ExpandEnvironmentVariables(rawValue);
- var value = (TAttributeType)Convert.ChangeType(substitutedValue, typeof(TAttributeType));
- return value;
- }
- }
-}
diff --git a/src/Core/ServiceWrapper/winsw.csproj b/src/Core/ServiceWrapper/winsw.csproj
index eb2754a..bcae52a 100644
--- a/src/Core/ServiceWrapper/winsw.csproj
+++ b/src/Core/ServiceWrapper/winsw.csproj
@@ -9,7 +9,7 @@
Exe
Properties
winsw
- winsw
+ WindowsService
v2.0
512
@@ -62,9 +62,6 @@
-
- ..\..\packages\log4net.2.0.3\lib\net20-full\log4net.dll
-
@@ -74,28 +71,11 @@
-
-
-
-
-
-
-
-
-
-
Component
-
-
-
-
-
-
-
@@ -108,7 +88,6 @@
-
@@ -122,6 +101,16 @@
true
+
+
+ {ca5c71db-c5a8-4c27-bf83-8e6daed9d6b5}
+ SharedDirectoryMapper
+
+
+ {9d0c63e2-b6ff-4a85-bd36-b3e5d7f27d06}
+ WinSWCore
+
+
+
+
+
+
+
+
+
+
+ $(ProjectDir)$(OutDir)winsw.exe
+
+
+
+
\ No newline at end of file
diff --git a/src/Core/ServiceWrapper/Download.cs b/src/Core/WinSWCore/Download.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Download.cs
rename to src/Core/WinSWCore/Download.cs
diff --git a/src/Core/ServiceWrapper/DynamicProxy.cs b/src/Core/WinSWCore/DynamicProxy.cs
similarity index 100%
rename from src/Core/ServiceWrapper/DynamicProxy.cs
rename to src/Core/WinSWCore/DynamicProxy.cs
diff --git a/src/Core/ServiceWrapper/Extensions/AbstractWinSWExtension.cs b/src/Core/WinSWCore/Extensions/AbstractWinSWExtension.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Extensions/AbstractWinSWExtension.cs
rename to src/Core/WinSWCore/Extensions/AbstractWinSWExtension.cs
diff --git a/src/Core/ServiceWrapper/Extensions/ExtensionException.cs b/src/Core/WinSWCore/Extensions/ExtensionException.cs
similarity index 97%
rename from src/Core/ServiceWrapper/Extensions/ExtensionException.cs
rename to src/Core/WinSWCore/Extensions/ExtensionException.cs
index 563c5ed..5ac682a 100644
--- a/src/Core/ServiceWrapper/Extensions/ExtensionException.cs
+++ b/src/Core/WinSWCore/Extensions/ExtensionException.cs
@@ -1,5 +1,4 @@
using System;
-using winsw.Util;
namespace winsw.Extensions
{
diff --git a/src/Core/ServiceWrapper/Extensions/IWinSWExtension.cs b/src/Core/WinSWCore/Extensions/IWinSWExtension.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Extensions/IWinSWExtension.cs
rename to src/Core/WinSWCore/Extensions/IWinSWExtension.cs
diff --git a/src/Core/ServiceWrapper/Extensions/WinSWExtensionDescriptor.cs b/src/Core/WinSWCore/Extensions/WinSWExtensionDescriptor.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Extensions/WinSWExtensionDescriptor.cs
rename to src/Core/WinSWCore/Extensions/WinSWExtensionDescriptor.cs
diff --git a/src/Core/ServiceWrapper/Extensions/WinSWExtensionManager.cs b/src/Core/WinSWCore/Extensions/WinSWExtensionManager.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Extensions/WinSWExtensionManager.cs
rename to src/Core/WinSWCore/Extensions/WinSWExtensionManager.cs
diff --git a/src/Core/ServiceWrapper/LogAppenders.cs b/src/Core/WinSWCore/LogAppenders.cs
similarity index 100%
rename from src/Core/ServiceWrapper/LogAppenders.cs
rename to src/Core/WinSWCore/LogAppenders.cs
diff --git a/src/Core/ServiceWrapper/Advapi32.cs b/src/Core/WinSWCore/Native/Advapi32.cs
similarity index 96%
rename from src/Core/ServiceWrapper/Advapi32.cs
rename to src/Core/WinSWCore/Native/Advapi32.cs
index ae6ea7a..cc2ed32 100755
--- a/src/Core/ServiceWrapper/Advapi32.cs
+++ b/src/Core/WinSWCore/Native/Advapi32.cs
@@ -6,9 +6,9 @@ using System.Text;
// ReSharper disable InconsistentNaming
-namespace winsw
+namespace winsw.Native
{
- class ServiceManager : IDisposable
+ public class ServiceManager : IDisposable
{
private IntPtr _handle;
@@ -39,7 +39,7 @@ namespace winsw
}
}
- class Service : IDisposable
+ public class Service : IDisposable
{
internal IntPtr Handle;
@@ -87,7 +87,7 @@ namespace winsw
}
}
- static class LogonAsAService
+ public static class LogonAsAService
{
public static void AddLogonAsAServiceRight(string username)
{
@@ -251,7 +251,7 @@ namespace winsw
/// Advapi32.dll wrapper for performing additional service related operations that are not
/// available in WMI.
///
- internal class Advapi32
+ public class Advapi32
{
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
@@ -272,7 +272,7 @@ namespace winsw
internal static extern bool CloseServiceHandle(IntPtr hSCObject);
[DllImport("advapi32.DLL")]
- internal static extern bool SetServiceStatus(IntPtr hServiceStatus, ref SERVICE_STATUS lpServiceStatus);
+ public static extern bool SetServiceStatus(IntPtr hServiceStatus, ref SERVICE_STATUS lpServiceStatus);
[DllImport("advapi32.dll", PreserveSig = true)]
internal static extern UInt32 LsaOpenPolicy(ref LSA_UNICODE_STRING SystemName, ref LSA_OBJECT_ATTRIBUTES ObjectAttributes, Int32 DesiredAccess,
diff --git a/src/Core/ServiceWrapper/Kernel32.cs b/src/Core/WinSWCore/Native/Kernel32.cs
similarity index 79%
rename from src/Core/ServiceWrapper/Kernel32.cs
rename to src/Core/WinSWCore/Native/Kernel32.cs
index 29b20ae..3d57a9a 100755
--- a/src/Core/ServiceWrapper/Kernel32.cs
+++ b/src/Core/WinSWCore/Native/Kernel32.cs
@@ -1,18 +1,18 @@
using System;
using System.Runtime.InteropServices;
-namespace winsw
+namespace winsw.Native
{
///
/// kernel32.dll P/Invoke wrappers
///
- internal class Kernel32
+ public class Kernel32
{
[DllImport("Kernel32.dll", SetLastError = true)]
- internal static extern int SetStdHandle(int device, IntPtr handle);
+ public static extern int SetStdHandle(int device, IntPtr handle);
[DllImport("kernel32.dll", SetLastError = true)]
- internal static extern bool CreateProcess(string lpApplicationName,
+ public static extern bool CreateProcess(string lpApplicationName,
string lpCommandLine, IntPtr lpProcessAttributes,
IntPtr lpThreadAttributes, bool bInheritHandles,
uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory,
@@ -20,11 +20,11 @@ namespace winsw
out PROCESS_INFORMATION lpProcessInformation);
[DllImport("kernel32.dll")]
- internal static extern int GetLastError();
+ public static extern int GetLastError();
}
[StructLayout(LayoutKind.Sequential)]
- internal struct PROCESS_INFORMATION
+ public struct PROCESS_INFORMATION
{
public IntPtr hProcess;
public IntPtr hThread;
@@ -33,7 +33,7 @@ namespace winsw
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- struct STARTUPINFO
+ public struct STARTUPINFO
{
public Int32 cb;
public string lpReserved;
diff --git a/src/Core/ServiceWrapper/PeriodicRollingCalendar.cs b/src/Core/WinSWCore/PeriodicRollingCalendar.cs
similarity index 100%
rename from src/Core/ServiceWrapper/PeriodicRollingCalendar.cs
rename to src/Core/WinSWCore/PeriodicRollingCalendar.cs
diff --git a/src/Core/WinSWCore/Properties/AssemblyInfo.cs b/src/Core/WinSWCore/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..5cb6f2a
--- /dev/null
+++ b/src/Core/WinSWCore/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("WinSWCore")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WinSWCore")]
+[assembly: AssemblyCopyright("Copyright © 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("8f845354-ba20-455d-82d1-9b6ec4e0e517")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/Core/ServiceWrapper/ServiceDescriptor.cs b/src/Core/WinSWCore/ServiceDescriptor.cs
similarity index 96%
rename from src/Core/ServiceWrapper/ServiceDescriptor.cs
rename to src/Core/WinSWCore/ServiceDescriptor.cs
index 8e161ba..8d770fe 100755
--- a/src/Core/ServiceWrapper/ServiceDescriptor.cs
+++ b/src/Core/WinSWCore/ServiceDescriptor.cs
@@ -5,6 +5,7 @@ using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Xml;
+using winsw.Native;
using winsw.Util;
using WMI;
diff --git a/src/Core/ServiceWrapper/Util/IEventWriter.cs b/src/Core/WinSWCore/Util/IEventWriter.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Util/IEventWriter.cs
rename to src/Core/WinSWCore/Util/IEventWriter.cs
diff --git a/src/Core/ServiceWrapper/XmlHelper.cs b/src/Core/WinSWCore/Util/XmlHelper.cs
similarity index 98%
rename from src/Core/ServiceWrapper/XmlHelper.cs
rename to src/Core/WinSWCore/Util/XmlHelper.cs
index 2d6155b..687a8d2 100644
--- a/src/Core/ServiceWrapper/XmlHelper.cs
+++ b/src/Core/WinSWCore/Util/XmlHelper.cs
@@ -4,9 +4,9 @@ using System.Text;
using System.Xml;
using System.IO;
-namespace winsw.Utils
+namespace winsw.Util
{
- internal class XmlHelper
+ public class XmlHelper
{
///
/// Retrieves a single string element
diff --git a/src/Core/WinSWCore/WinSWCore.csproj b/src/Core/WinSWCore/WinSWCore.csproj
new file mode 100644
index 0000000..e26b0be
--- /dev/null
+++ b/src/Core/WinSWCore/WinSWCore.csproj
@@ -0,0 +1,75 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}
+ Library
+ Properties
+ winsw
+ WinSWCore
+ v2.0
+ 512
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+
+
+ ..\..\..\winsw_cert.pfx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Core/ServiceWrapper/WinSWException.cs b/src/Core/WinSWCore/WinSWException.cs
similarity index 92%
rename from src/Core/ServiceWrapper/WinSWException.cs
rename to src/Core/WinSWCore/WinSWException.cs
index 9db697f..870660e 100644
--- a/src/Core/ServiceWrapper/WinSWException.cs
+++ b/src/Core/WinSWCore/WinSWException.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
-namespace winsw.extensions
+namespace winsw
{
public class WinSWException : Exception
{
diff --git a/src/Core/ServiceWrapper/Wmi.cs b/src/Core/WinSWCore/Wmi.cs
similarity index 100%
rename from src/Core/ServiceWrapper/Wmi.cs
rename to src/Core/WinSWCore/Wmi.cs
diff --git a/src/Core/ServiceWrapper/WmiSchema.cs b/src/Core/WinSWCore/WmiSchema.cs
similarity index 100%
rename from src/Core/ServiceWrapper/WmiSchema.cs
rename to src/Core/WinSWCore/WmiSchema.cs
diff --git a/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.csproj b/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.csproj
index 4b27b75..6552879 100644
--- a/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.csproj
+++ b/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.csproj
@@ -41,9 +41,9 @@
-
- {0de77f55-ade5-43c1-999a-0bc81153b039}
- winsw
+
+ {9d0c63e2-b6ff-4a85-bd36-b3e5d7f27d06}
+ WinSWCore
diff --git a/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapperConfig.cs b/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapperConfig.cs
index 0a6387e..59276e8 100644
--- a/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapperConfig.cs
+++ b/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapperConfig.cs
@@ -7,7 +7,7 @@ namespace winsw.Plugins.SharedDirectoryMapper
///
/// Stores configuration entries for SharedDirectoryMapper extension.
///
- internal class SharedDirectoryMapperConfig
+ public class SharedDirectoryMapperConfig
{
public bool EnableMapping { get; set; }
public String Label { get; set; }
diff --git a/src/Test/winswTests/winswTests.csproj b/src/Test/winswTests/winswTests.csproj
index 0bf6911..4818a3c 100644
--- a/src/Test/winswTests/winswTests.csproj
+++ b/src/Test/winswTests/winswTests.csproj
@@ -64,6 +64,10 @@
{0DE77F55-ADE5-43C1-999A-0BC81153B039}
winsw
+
+ {9d0c63e2-b6ff-4a85-bd36-b3e5d7f27d06}
+ WinSWCore
+
{ca5c71db-c5a8-4c27-bf83-8e6daed9d6b5}
SharedDirectoryMapper
diff --git a/src/winsw.sln b/src/winsw.sln
index 4bb2cad..6f2dd5d 100644
--- a/src/winsw.sln
+++ b/src/winsw.sln
@@ -1,4 +1,3 @@
-
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
@@ -6,15 +5,11 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winsw", "Core\ServiceWrapper\winsw.csproj", "{0DE77F55-ADE5-43C1-999A-0BC81153B039}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winswTests", "Test\winswTests\winswTests.csproj", "{93843402-842B-44B4-B303-AEE829BE0B43}"
- ProjectSection(ProjectDependencies) = postProject
- {CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5} = {CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5}
- EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{6BDF4025-D46C-4C69-BDB2-5CE434C857AA}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
- .nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedDirectoryMapper", "Plugins\SharedDirectoryMapper\SharedDirectoryMapper.csproj", "{CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5}"
@@ -23,6 +18,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{077C2CEC
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{BC4AD891-E87E-4F30-867C-FD8084A29E5D}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{5297623A-1A95-4F89-9AAE-DA634081EC86}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinSWCore", "Core\WinSWCore\WinSWCore.csproj", "{9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -35,8 +34,8 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Mixed Platforms.Build.0 = Release|Any CPU
{0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0DE77F55-ADE5-43C1-999A-0BC81153B039}.Debug|Win32.Build.0 = Debug|Any CPU
{0DE77F55-ADE5-43C1-999A-0BC81153B039}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -69,12 +68,26 @@ Global
{CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5}.Release|Win32.ActiveCfg = Release|Any CPU
{CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5}.Release|Win32.Build.0 = Release|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Debug|Win32.Build.0 = Debug|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Release|Win32.ActiveCfg = Release|Any CPU
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06}.Release|Win32.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
+ {0DE77F55-ADE5-43C1-999A-0BC81153B039} = {5297623A-1A95-4F89-9AAE-DA634081EC86}
{93843402-842B-44B4-B303-AEE829BE0B43} = {077C2CEC-B687-4B53-86E9-C1A1BF5554E5}
{CA5C71DB-C5A8-4C27-BF83-8E6DAED9D6B5} = {BC4AD891-E87E-4F30-867C-FD8084A29E5D}
+ {9D0C63E2-B6FF-4A85-BD36-B3E5D7F27D06} = {5297623A-1A95-4F89-9AAE-DA634081EC86}
EndGlobalSection
EndGlobal