Преглед на файлове

move classes to portable server project

Luke Pulverenti преди 8 години
родител
ревизия
d71d2a5d02

+ 3 - 0
Emby.Photos/Emby.Photos.csproj

@@ -37,6 +37,9 @@
     </Reference>
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="..\SharedVersion.cs">
+      <Link>Properties\SharedVersion.cs</Link>
+    </Compile>
     <Compile Include="PhotoProvider.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>

+ 1 - 3
Emby.Photos/Properties/AssemblyInfo.cs

@@ -31,6 +31,4 @@ using System.Runtime.InteropServices;
 //
 // 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")]
+// [assembly: AssemblyVersion("1.0.*")]

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/ChannelConfigurations.cs → Emby.Server.Implementations/Channels/ChannelConfigurations.cs

@@ -2,7 +2,7 @@
 using MediaBrowser.Model.Configuration;
 using System.Collections.Generic;
 
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
 {
     public static class ChannelConfigurationExtension
     {

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs → Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs

@@ -7,7 +7,7 @@ using System.Collections.Generic;
 using System.Threading;
 using System.Threading.Tasks;
 
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
 {
     public class ChannelDynamicMediaSourceProvider : IMediaSourceProvider
     {

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs → Emby.Server.Implementations/Channels/ChannelImageProvider.cs

@@ -7,7 +7,7 @@ using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
 {
     public class ChannelImageProvider : IDynamicImageProvider, IHasItemChangeMonitor
     {

+ 8 - 8
MediaBrowser.Server.Implementations/Channels/ChannelManager.cs → Emby.Server.Implementations/Channels/ChannelManager.cs

@@ -31,7 +31,7 @@ using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.Globalization;
 
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
 {
     public class ChannelManager : IChannelManager
     {
@@ -410,7 +410,7 @@ namespace MediaBrowser.Server.Implementations.Channels
                     }
                 }
             }
-            catch (DirectoryNotFoundException)
+            catch (IOException)
             {
 
             }
@@ -781,7 +781,7 @@ namespace MediaBrowser.Server.Implementations.Channels
             {
 
             }
-            catch (DirectoryNotFoundException)
+            catch (IOException)
             {
 
             }
@@ -801,7 +801,7 @@ namespace MediaBrowser.Server.Implementations.Channels
                 {
 
                 }
-                catch (DirectoryNotFoundException)
+                catch (IOException)
                 {
 
                 }
@@ -943,7 +943,7 @@ namespace MediaBrowser.Server.Implementations.Channels
             {
 
             }
-            catch (DirectoryNotFoundException)
+            catch (IOException)
             {
 
             }
@@ -963,7 +963,7 @@ namespace MediaBrowser.Server.Implementations.Channels
                 {
 
                 }
-                catch (DirectoryNotFoundException)
+                catch (IOException)
                 {
 
                 }
@@ -1104,7 +1104,7 @@ namespace MediaBrowser.Server.Implementations.Channels
             {
 
             }
-            catch (DirectoryNotFoundException)
+            catch (IOException)
             {
 
             }
@@ -1127,7 +1127,7 @@ namespace MediaBrowser.Server.Implementations.Channels
                 {
 
                 }
-                catch (DirectoryNotFoundException)
+                catch (IOException)
                 {
 
                 }

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs → Emby.Server.Implementations/Channels/ChannelPostScanTask.cs

@@ -11,7 +11,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Model.Extensions;
 
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
 {
     public class ChannelPostScanTask
     {

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs → Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs

@@ -6,7 +6,7 @@ using System.Collections.Generic;
 using System.Threading.Tasks;
 using MediaBrowser.Model.Tasks;
 
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
 {
     class RefreshChannelsScheduledTask : IScheduledTask
     {

+ 74 - 0
Emby.Server.Implementations/Emby.Server.Implementations.csproj

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Emby.Server.Implementations</RootNamespace>
+    <AssemblyName>Emby.Server.Implementations</AssemblyName>
+    <DefaultLanguage>en-US</DefaultLanguage>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <TargetFrameworkProfile>Profile75</TargetFrameworkProfile>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <!-- A reference to the entire .NET Framework is automatically included -->
+    <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
+      <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
+      <Name>MediaBrowser.Common</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj">
+      <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
+      <Name>MediaBrowser.Controller</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
+      <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
+      <Name>MediaBrowser.Model</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\SharedVersion.cs">
+      <Link>Properties\SharedVersion.cs</Link>
+    </Compile>
+    <Compile Include="Channels\ChannelConfigurations.cs" />
+    <Compile Include="Channels\ChannelDynamicMediaSourceProvider.cs" />
+    <Compile Include="Channels\ChannelImageProvider.cs" />
+    <Compile Include="Channels\ChannelManager.cs" />
+    <Compile Include="Channels\ChannelPostScanTask.cs" />
+    <Compile Include="Channels\RefreshChannelsScheduledTask.cs" />
+    <Compile Include="Intros\DefaultIntroProvider.cs" />
+    <Compile Include="News\NewsService.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Updates\InstallationManager.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 1 - 3
MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs → Emby.Server.Implementations/Intros/DefaultIntroProvider.cs

@@ -11,13 +11,11 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Threading.Tasks;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Extensions;
 using MediaBrowser.Model.Globalization;
 
-namespace MediaBrowser.Server.Implementations.Intros
+namespace Emby.Server.Implementations.Intros
 {
     public class DefaultIntroProvider : IIntroProvider
     {

+ 3 - 3
MediaBrowser.Server.Implementations/News/NewsService.cs → Emby.Server.Implementations/News/NewsService.cs

@@ -6,7 +6,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 
-namespace MediaBrowser.Server.Implementations.News
+namespace Emby.Server.Implementations.News
 {
     public class NewsService : INewsService
     {
@@ -25,7 +25,7 @@ namespace MediaBrowser.Server.Implementations.News
             {
                 return GetProductNewsInternal(query);
             }
-            catch (DirectoryNotFoundException)
+            catch (FileNotFoundException)
             {
                 // No biggie
                 return new QueryResult<NewsItem>
@@ -33,7 +33,7 @@ namespace MediaBrowser.Server.Implementations.News
                     Items = new NewsItem[] { }
                 };
             }
-            catch (FileNotFoundException)
+            catch (IOException)
             {
                 // No biggie
                 return new QueryResult<NewsItem>

+ 28 - 0
Emby.Server.Implementations/Properties/AssemblyInfo.cs

@@ -0,0 +1,28 @@
+using System.Resources;
+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("Emby.Server.Implementations")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Emby.Server.Implementations")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: NeutralResourcesLanguage("en")]
+
+// 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.*")]

+ 9 - 7
MediaBrowser.Server.Implementations/Updates/InstallationManager.cs → Emby.Server.Implementations/Updates/InstallationManager.cs

@@ -3,7 +3,6 @@ using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
-using System.Security.Cryptography;
 using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Common;
@@ -14,13 +13,14 @@ using MediaBrowser.Common.Plugins;
 using MediaBrowser.Common.Progress;
 using MediaBrowser.Common.Security;
 using MediaBrowser.Common.Updates;
+using MediaBrowser.Model.Cryptography;
 using MediaBrowser.Model.Events;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Serialization;
 using MediaBrowser.Model.Updates;
 
-namespace MediaBrowser.Server.Implementations.Updates
+namespace Emby.Server.Implementations.Updates
 {
     /// <summary>
     /// Manages all install, uninstall and update operations (both plugins and system)
@@ -115,7 +115,9 @@ namespace MediaBrowser.Server.Implementations.Updates
         /// <value>The application host.</value>
         private readonly IApplicationHost _applicationHost;
 
-        public InstallationManager(ILogger logger, IApplicationHost appHost, IApplicationPaths appPaths, IHttpClient httpClient, IJsonSerializer jsonSerializer, ISecurityManager securityManager, IConfigurationManager config, IFileSystem fileSystem)
+        private readonly ICryptographyProvider _cryptographyProvider;
+
+        public InstallationManager(ILogger logger, IApplicationHost appHost, IApplicationPaths appPaths, IHttpClient httpClient, IJsonSerializer jsonSerializer, ISecurityManager securityManager, IConfigurationManager config, IFileSystem fileSystem, ICryptographyProvider cryptographyProvider)
         {
             if (logger == null)
             {
@@ -132,6 +134,7 @@ namespace MediaBrowser.Server.Implementations.Updates
             _securityManager = securityManager;
             _config = config;
             _fileSystem = fileSystem;
+            _cryptographyProvider = cryptographyProvider;
             _logger = logger;
         }
 
@@ -597,13 +600,12 @@ namespace MediaBrowser.Server.Implementations.Updates
             var packageChecksum = string.IsNullOrWhiteSpace(package.checksum) ? Guid.Empty : new Guid(package.checksum);
             if (packageChecksum != Guid.Empty) // support for legacy uploads for now
             {
-                using (var crypto = new MD5CryptoServiceProvider())
-                using (var stream = new BufferedStream(_fileSystem.OpenRead(tempFile), 100000))
+                using (var stream = _fileSystem.OpenRead(tempFile))
                 {
-                    var check = Guid.Parse(BitConverter.ToString(crypto.ComputeHash(stream)).Replace("-", String.Empty));
+                    var check = Guid.Parse(BitConverter.ToString(_cryptographyProvider.GetMD5Bytes(stream)).Replace("-", String.Empty));
                     if (check != packageChecksum)
                     {
-                        throw new ApplicationException(string.Format("Download validation failed for {0}.  Probably corrupted during transfer.", package.name));
+                        throw new Exception(string.Format("Download validation failed for {0}.  Probably corrupted during transfer.", package.name));
                     }
                 }
             }

+ 1 - 10
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj

@@ -112,12 +112,6 @@
     <Compile Include="Activity\ActivityRepository.cs" />
     <Compile Include="Archiving\ZipClient.cs" />
     <Compile Include="Branding\BrandingConfigurationFactory.cs" />
-    <Compile Include="Channels\ChannelConfigurations.cs" />
-    <Compile Include="Channels\ChannelDynamicMediaSourceProvider.cs" />
-    <Compile Include="Channels\ChannelImageProvider.cs" />
-    <Compile Include="Channels\ChannelManager.cs" />
-    <Compile Include="Channels\ChannelPostScanTask.cs" />
-    <Compile Include="Channels\RefreshChannelsScheduledTask.cs" />
     <Compile Include="Collections\CollectionManager.cs" />
     <Compile Include="Collections\CollectionsDynamicFolder.cs" />
     <Compile Include="Collections\CollectionImageProvider.cs" />
@@ -175,7 +169,6 @@
     <Compile Include="HttpServer\SocketSharp\WebSocketSharpListener.cs" />
     <Compile Include="HttpServer\SocketSharp\WebSocketSharpRequest.cs" />
     <Compile Include="HttpServer\SocketSharp\WebSocketSharpResponse.cs" />
-    <Compile Include="Intros\DefaultIntroProvider.cs" />
     <Compile Include="IO\FileRefresher.cs" />
     <Compile Include="IO\LibraryMonitor.cs" />
     <Compile Include="IO\MemoryStreamProvider.cs" />
@@ -273,6 +266,7 @@
     <Compile Include="Localization\LocalizationManager.cs" />
     <Compile Include="Logging\PatternsLogger.cs" />
     <Compile Include="MediaEncoder\EncodingManager.cs" />
+    <Compile Include="News\NewsEntryPoint.cs" />
     <Compile Include="Notifications\IConfigurableNotificationService.cs" />
     <Compile Include="Persistence\BaseSqliteRepository.cs" />
     <Compile Include="Persistence\CleanDatabaseScheduledTask.cs" />
@@ -293,11 +287,8 @@
     <Compile Include="TextEncoding\TextEncoding.cs" />
     <Compile Include="Threading\PeriodicTimer.cs" />
     <Compile Include="TV\SeriesPostScanTask.cs" />
-    <Compile Include="Updates\InstallationManager.cs" />
     <Compile Include="UserViews\CollectionFolderImageProvider.cs" />
     <Compile Include="UserViews\DynamicImageProvider.cs" />
-    <Compile Include="News\NewsEntryPoint.cs" />
-    <Compile Include="News\NewsService.cs" />
     <Compile Include="Notifications\CoreNotificationTypes.cs" />
     <Compile Include="Notifications\InternalNotificationService.cs" />
     <Compile Include="Notifications\NotificationConfigurationFactory.cs" />

+ 8 - 5
MediaBrowser.Server.Startup.Common/ApplicationHost.cs

@@ -50,7 +50,6 @@ using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Subtitles;
 using MediaBrowser.Server.Implementations;
 using MediaBrowser.Server.Implementations.Activity;
-using MediaBrowser.Server.Implementations.Channels;
 using MediaBrowser.Server.Implementations.Collections;
 using MediaBrowser.Server.Implementations.Configuration;
 using MediaBrowser.Server.Implementations.Connect;
@@ -108,6 +107,8 @@ using Emby.Dlna.ContentDirectory;
 using Emby.Dlna.Main;
 using Emby.Dlna.MediaReceiverRegistrar;
 using Emby.Dlna.Ssdp;
+using Emby.Server.Implementations.Channels;
+using Emby.Server.Implementations.Updates;
 using MediaBrowser.Model.Activity;
 using MediaBrowser.Model.Dlna;
 using MediaBrowser.Model.Globalization;
@@ -123,7 +124,6 @@ using MediaBrowser.Server.Implementations.Archiving;
 using MediaBrowser.Server.Implementations.Reflection;
 using MediaBrowser.Server.Implementations.Serialization;
 using MediaBrowser.Server.Implementations.TextEncoding;
-using MediaBrowser.Server.Implementations.Updates;
 using MediaBrowser.Server.Implementations.Xml;
 using OpenSubtitlesHandler;
 using ServiceStack;
@@ -530,7 +530,7 @@ namespace MediaBrowser.Server.Startup.Common
             SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths, LogManager, FileSystemManager);
             RegisterSingleInstance(SecurityManager);
 
-            InstallationManager = new InstallationManager(LogManager.GetLogger("InstallationManager"), this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager, FileSystemManager);
+            InstallationManager = new InstallationManager(LogManager.GetLogger("InstallationManager"), this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager, FileSystemManager, CryptographyProvider);
             RegisterSingleInstance(InstallationManager);
 
             ZipClient = new ZipClient(FileSystemManager);
@@ -626,7 +626,7 @@ namespace MediaBrowser.Server.Startup.Common
             DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager);
             RegisterSingleInstance(DeviceManager);
 
-            var newsService = new Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
+            var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
             RegisterSingleInstance<INewsService>(newsService);
 
             var fileOrganizationService = new FileOrganizationService(TaskManager, FileOrganizationRepository, LogManager.GetLogger("FileOrganizationService"), LibraryMonitor, LibraryManager, ServerConfigurationManager, FileSystemManager, ProviderManager);
@@ -1160,9 +1160,12 @@ namespace MediaBrowser.Server.Startup.Common
             // Common implementations
             list.Add(typeof(TaskManager).Assembly);
 
-            // Server implementations
+            // MediaBrowser.Server implementations
             list.Add(typeof(ServerApplicationPaths).Assembly);
 
+            // Emby.Server implementations
+            list.Add(typeof(InstallationManager).Assembly);
+
             // MediaEncoding
             list.Add(typeof(MediaEncoder).Assembly);
 

+ 4 - 0
MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj

@@ -102,6 +102,10 @@
       <Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project>
       <Name>Emby.Photos</Name>
     </ProjectReference>
+    <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj">
+      <Project>{d08b8079-08b3-48f2-83c4-e9ccce48aff1}</Project>
+      <Name>Emby.Server.Implementations</Name>
+    </ProjectReference>
     <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj">
       <Project>{4fd51ac5-2c16-4308-a993-c3a84f3b4582}</Project>
       <Name>MediaBrowser.Api</Name>

+ 32 - 0
MediaBrowser.sln

@@ -75,6 +75,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Dlna", "Emby.Dlna\Emby
 EndProject
 Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RSSDP", "RSSDP\RSSDP.xproj", "{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Implementations", "Emby.Server.Implementations\Emby.Server.Implementations.csproj", "{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -659,6 +661,36 @@ Global
 		{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}.Release|x64.Build.0 = Release|Any CPU
 		{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}.Release|x86.ActiveCfg = Release|Any CPU
 		{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}.Release|x86.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Win32.Build.0 = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x64.Build.0 = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x86.Build.0 = Debug|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Any CPU.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Win32.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Win32.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x64.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x64.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x86.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x86.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Win32.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Win32.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x64.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x64.Build.0 = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x86.ActiveCfg = Release|Any CPU
+		{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE