NewLife/XCoder

疯狂码神
大石头 authored at 2020-05-05 19:04:57
c982227
Tree
1 Parent(s) 061a275
Summary: 11 changed files with 452 additions and 25 deletions.
Added +9 -0
Added +109 -0
Added +10 -0
Added +71 -0
Added +0 -0
Added +36 -0
Added +70 -0
Added +83 -0
Added +12 -0
Added +27 -0
Modified +25 -25
Added +9 -0
diff --git a/CrazyCoder/App.xaml b/CrazyCoder/App.xaml
new file mode 100644
index 0000000..f9994a1
--- /dev/null
+++ b/CrazyCoder/App.xaml
@@ -0,0 +1,9 @@
+<Application x:Class="CrazyCoder.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:CrazyCoder"
+             StartupUri="MainWindow.xaml">
+    <Application.Resources>
+         
+    </Application.Resources>
+</Application>
Added +109 -0
diff --git a/CrazyCoder/App.xaml.cs b/CrazyCoder/App.xaml.cs
new file mode 100644
index 0000000..b2c372f
--- /dev/null
+++ b/CrazyCoder/App.xaml.cs
@@ -0,0 +1,109 @@
+using System;
+using System.Diagnostics;
+using System.Windows;
+using NewLife;
+using NewLife.Log;
+using NewLife.Threading;
+using Stardust;
+
+namespace CrazyCoder
+{
+    /// <summary>
+    /// App.xaml 的交互逻辑
+    /// </summary>
+    public partial class App : Application
+    {
+        public App()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnStartup(StartupEventArgs e)
+        {
+#if NET45
+            XTrace.UseWinForm();
+#endif
+
+            StartClient();
+
+            StringHelper.EnableSpeechTip = Setting.Current.SpeechTip;
+
+            if (Setting.Current.IsNew) "学无先后达者为师,欢迎使用新生命码神工具!".SpeechTip();
+
+            base.OnStartup(e);
+        }
+
+        protected override void OnExit(ExitEventArgs e)
+        {
+            _Client.Logout("ExitCode=" + e.ApplicationExitCode);
+
+            base.OnExit(e);
+        }
+
+        static TimerX _timer;
+        static StarClient _Client;
+        private static void StartClient()
+        {
+            var set = Setting.Current;
+            var server = set.Server;
+            if (server.IsNullOrEmpty()) return;
+
+            XTrace.WriteLine("初始化服务端地址:{0}", server);
+
+            var client = new StarClient(server)
+            {
+                Code = set.Code,
+                Secret = set.Secret,
+                Log = XTrace.Log,
+            };
+
+            // 登录后保存证书
+            client.OnLogined += (s, e) =>
+            {
+                var inf = client.Info;
+                if (inf != null && !inf.Code.IsNullOrEmpty())
+                {
+                    set.Code = inf.Code;
+                    set.Secret = inf.Secret;
+                    set.Save();
+                }
+            };
+
+            // 可能需要多次尝试
+            _timer = new TimerX(TryConnectServer, client, 0, 5_000) { Async = true };
+
+            _Client = client;
+        }
+
+        private static void TryConnectServer(Object state)
+        {
+            var client = state as StarClient;
+            var set = Setting.Current;
+            client.Login().Wait();
+            CheckUpgrade(client, set.Channel);
+
+            // 登录成功,销毁定时器
+            //TimerX.Current.Period = 0;
+            _timer.TryDispose();
+            _timer = null;
+        }
+
+        private static void CheckUpgrade(StarClient client, String channel)
+        {
+            // 检查更新
+            var ur = client.Upgrade(channel).Result;
+            if (ur != null)
+            {
+                var rs = client.ProcessUpgrade(ur);
+
+                // 强制更新时,马上重启
+                if (rs && ur.Force)
+                {
+                    var p = Process.GetCurrentProcess();
+                    p.Close();
+                    p.Kill();
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +10 -0
diff --git a/CrazyCoder/AssemblyInfo.cs b/CrazyCoder/AssemblyInfo.cs
new file mode 100644
index 0000000..8b5504e
--- /dev/null
+++ b/CrazyCoder/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+                                     //(used if a resource is not found in the page,
+                                     // or application resource dictionaries)
+    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+                                              //(used if a resource is not found in the page,
+                                              // app, or any theme specific resource dictionaries)
+)]
Added +71 -0
diff --git a/CrazyCoder/CrazyCoder.csproj b/CrazyCoder/CrazyCoder.csproj
new file mode 100644
index 0000000..f3f9a52
--- /dev/null
+++ b/CrazyCoder/CrazyCoder.csproj
@@ -0,0 +1,71 @@
+<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
+
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFrameworks>net45;netcoreapp3.1</TargetFrameworks>
+    <UseWPF>true</UseWPF>
+    <AssemblyTitle>新生命码神工具</AssemblyTitle>
+    <Description>众多开发者工具</Description>
+    <Company>新生命开发团队</Company>
+    <Copyright>©2002-2020 新生命开发团队</Copyright>
+    <Version>8.0.2020.0505</Version>
+    <FileVersion>8.0.2020.0505</FileVersion>
+    <AssemblyVersion>8.0.*</AssemblyVersion>
+    <Deterministic>false</Deterministic>
+    <ApplicationIcon>Images\leaf.ico</ApplicationIcon>
+    <OutputPath>..\Bin\</OutputPath>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <DefineConstants>TRACE</DefineConstants>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <DefineConstants>$(DefineConstants);DEBUG</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(TargetFramework)'=='net45'">
+    <DefineConstants>$(DefineConstants);__WIN__;NET45</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(TargetFramework)'=='netcoreapp3.1'">
+    <DefineConstants>$(DefineConstants);__WIN__;NC30;__CORE__</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <None Remove="Images\leaf.ico" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="NewLife.Core" Version="8.7.2020.501" />
+    <PackageReference Include="NewLife.Stardust" Version="1.0.2020.501" />
+    <PackageReference Include="NewLife.XCode" Version="9.17.2020.501" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Resource Include="Images\leaf.ico">
+      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+    </Resource>
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Remove="Images\leaf.ico" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Resource Include="Images\leaf.ico">
+      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+    </Resource>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Views\Regex.xaml.cs">
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Page Update="Views\Regex.xaml">
+      <SubType>Designer</SubType>
+    </Page>
+  </ItemGroup>
+
+</Project>
\ No newline at end of file
Added +0 -0
diff --git a/CrazyCoder/Images/leaf.ico b/CrazyCoder/Images/leaf.ico
new file mode 100644
index 0000000..31fa6dd
Binary files /dev/null and b/CrazyCoder/Images/leaf.ico differ
Added +36 -0
diff --git a/CrazyCoder/MainWindow.xaml b/CrazyCoder/MainWindow.xaml
new file mode 100644
index 0000000..ee3b0b4
--- /dev/null
+++ b/CrazyCoder/MainWindow.xaml
@@ -0,0 +1,36 @@
+<Window x:Class="CrazyCoder.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CrazyCoder"
+        mc:Ignorable="d"
+        Title="新生命码神工具" Height="450" Width="800" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Menu>
+            <MenuItem Header="开发工具">
+                <MenuItem Header="正则表达式" Click="Regex_Click"/>
+                <MenuItem Header="图标水印" Click="Ico_Click" />
+                <MenuItem Header="加密解密" Click="Security_Click"/>
+                <MenuItem Header="语音助手" Click="Speech_Click"/>
+                <Separator/>
+                <MenuItem Header="文件夹统计"/>
+                <MenuItem Header="文件编码"/>
+            </MenuItem>
+            <MenuItem Header="数据工具">
+                <MenuItem Header="数据建模"/>
+            </MenuItem>
+            <MenuItem Header="网络通信">
+                <MenuItem Header="网络工具" Click="Network_Click"/>
+                <MenuItem Header="RPC工具"  />
+                <MenuItem Header="串口工具"/>
+                <MenuItem Header="地图接口"/>
+            </MenuItem>
+            <MenuItem Header="帮助">
+                <MenuItem Header="检查更新" Click="CheckUpdate_Click"/>
+                <MenuItem Header="关于" Click="About_Click"/>
+            </MenuItem>
+        </Menu>
+        <Frame x:Name="frame" NavigationUIVisibility="Visible" Margin="0,24,0,0" />
+    </Grid>
+</Window>
Added +70 -0
diff --git a/CrazyCoder/MainWindow.xaml.cs b/CrazyCoder/MainWindow.xaml.cs
new file mode 100644
index 0000000..a4c7e4f
--- /dev/null
+++ b/CrazyCoder/MainWindow.xaml.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace CrazyCoder
+{
+    /// <summary>
+    /// MainWindow.xaml 的交互逻辑
+    /// </summary>
+    public partial class MainWindow : Window
+    {
+        public MainWindow()
+        {
+            InitializeComponent();
+        }
+
+        #region 开发工具
+        private void Regex_Click(Object sender, RoutedEventArgs e)
+        {
+            frame.Navigate("Views\\Regex.xaml");
+        }
+
+        private void Ico_Click(Object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void Security_Click(Object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void Speech_Click(Object sender, RoutedEventArgs e)
+        {
+
+        }
+        #endregion
+
+        #region 网络通信
+        private void Network_Click(Object sender, RoutedEventArgs e)
+        {
+
+        }
+        #endregion
+
+        #region 帮助
+        private void CheckUpdate_Click(Object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void About_Click(Object sender, RoutedEventArgs e)
+        {
+            Process.Start("https://www.newlifex.com");
+        }
+        #endregion
+    }
+}
\ No newline at end of file
Added +83 -0
diff --git a/CrazyCoder/Setting.cs b/CrazyCoder/Setting.cs
new file mode 100644
index 0000000..f7d2728
--- /dev/null
+++ b/CrazyCoder/Setting.cs
@@ -0,0 +1,83 @@
+using System;
+using System.ComponentModel;
+using NewLife.Xml;
+
+namespace CrazyCoder
+{
+    [XmlConfigFile("Config\\CrazyCoder.config")]
+    public class Setting : XmlConfig<Setting>
+    {
+        #region 属性
+        /// <summary>标题</summary>
+        [Description("标题")]
+        public String Title { get; set; } = "";
+
+        /// <summary>宽度</summary>
+        [Description("宽度")]
+        public Int32 Width { get; set; }
+
+        /// <summary>高度</summary>
+        [Description("高度")]
+        public Int32 Height { get; set; }
+
+        /// <summary>顶部</summary>
+        [Description("顶部")]
+        public Int32 Top { get; set; }
+
+        /// <summary>左边</summary>
+        [Description("左边")]
+        public Int32 Left { get; set; }
+
+        /// <summary>扩展数据</summary>
+        [Description("扩展数据")]
+        public String Extend { get; set; } = "";
+
+        /// <summary>日志着色</summary>
+        [Description("日志着色")]
+        public Boolean ColorLog { get; set; } = true;
+
+        /// <summary>语音提示。默认true</summary>
+        [Description("语音提示。默认true")]
+        public Boolean SpeechTip { get; set; } = true;
+
+        /// <summary>证书</summary>
+        [Description("证书")]
+        public String Code { get; set; }
+
+        /// <summary>密钥</summary>
+        [Description("密钥")]
+        public String Secret { get; set; }
+
+        /// <summary>服务地址端口。默认为空,子网内自动发现</summary>
+        [Description("服务地址端口。默认为空,子网内自动发现")]
+        public String Server { get; set; } = "";
+
+        /// <summary>更新通道。默认Release</summary>
+        [Description("更新通道。默认Release")]
+        public String Channel { get; set; } = "Release";
+
+        /// <summary>更新服务器</summary>
+        [Description("更新服务器")]
+        public String UpdateServer { get; set; } = "";
+
+        /// <summary>最后更新时间</summary>
+        [DisplayName("最后更新时间")]
+        public DateTime LastUpdate { get; set; }
+
+        /// <summary>最后一个使用的工具</summary>
+        [DisplayName("最后一个使用的工具")]
+        public String LastTool { get; set; } = "";
+        #endregion
+
+        #region 加载/保存
+        protected override void OnLoaded()
+        {
+            if (UpdateServer.IsNullOrEmpty() || UpdateServer.EqualIgnoreCase("http://x.newlifex.com/")) UpdateServer = NewLife.Setting.Current.PluginServer;
+
+            if (Server.IsNullOrEmpty()) Server = "http://star.newlifex.com:6600";
+
+            base.OnLoaded();
+        }
+        #endregion
+    }
+}
\ No newline at end of file
Added +12 -0
diff --git a/CrazyCoder/Views/Regex.xaml b/CrazyCoder/Views/Regex.xaml
new file mode 100644
index 0000000..e843960
--- /dev/null
+++ b/CrazyCoder/Views/Regex.xaml
@@ -0,0 +1,12 @@
+<Window x:Class="CrazyCoder.Views.Regex"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CrazyCoder.Views"
+        mc:Ignorable="d"
+        Title="Regex" Height="450" Width="800">
+    <Grid>
+        
+    </Grid>
+</Window>
Added +27 -0
diff --git a/CrazyCoder/Views/Regex.xaml.cs b/CrazyCoder/Views/Regex.xaml.cs
new file mode 100644
index 0000000..718d9a8
--- /dev/null
+++ b/CrazyCoder/Views/Regex.xaml.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CrazyCoder.Views
+{
+    /// <summary>
+    /// Regex.xaml 的交互逻辑
+    /// </summary>
+    public partial class Regex : Window
+    {
+        public Regex()
+        {
+            InitializeComponent();
+        }
+    }
+}
Modified +25 -25
diff --git "a/\347\240\201\347\245\236\345\267\245\345\205\267.sln" "b/\347\240\201\347\245\236\345\267\245\345\205\267.sln"
index 5f73cc9..0893e23 100644
--- "a/\347\240\201\347\245\236\345\267\245\345\205\267.sln"
+++ "b/\347\240\201\347\245\236\345\267\245\345\205\267.sln"
@@ -18,7 +18,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XCoder30", "XCoder30\XCoder
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XCoderLinux", "XCoderLinux\XCoderLinux.csproj", "{8D88837E-7C35-424E-8937-6CD7CF79517E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "X5Coder", "X5Coder\X5Coder.csproj", "{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CrazyCoder", "CrazyCoder\CrazyCoder.csproj", "{7977C940-B198-40E3-B16A-B70080BD5E77}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -132,30 +132,30 @@ Global
 		{8D88837E-7C35-424E-8937-6CD7CF79517E}.Release|x64.Build.0 = Release|Any CPU
 		{8D88837E-7C35-424E-8937-6CD7CF79517E}.Release|x86.ActiveCfg = Release|Any CPU
 		{8D88837E-7C35-424E-8937-6CD7CF79517E}.Release|x86.Build.0 = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|ARM.ActiveCfg = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|ARM.Build.0 = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|iPhone.Build.0 = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|x64.Build.0 = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Debug|x86.Build.0 = Debug|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|ARM.ActiveCfg = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|ARM.Build.0 = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|iPhone.ActiveCfg = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|iPhone.Build.0 = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|x64.ActiveCfg = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|x64.Build.0 = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|x86.ActiveCfg = Release|Any CPU
-		{B0EAFF38-1A6E-4ED1-9491-5C22E9734FE4}.Release|x86.Build.0 = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|ARM.ActiveCfg = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|ARM.Build.0 = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|iPhone.Build.0 = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|x64.Build.0 = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Debug|x86.Build.0 = Debug|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|ARM.ActiveCfg = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|ARM.Build.0 = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|iPhone.ActiveCfg = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|iPhone.Build.0 = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|x64.ActiveCfg = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|x64.Build.0 = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|x86.ActiveCfg = Release|Any CPU
+		{7977C940-B198-40E3-B16A-B70080BD5E77}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE