├── UWPMessanger
└── UWPMessanger
│ ├── Assets
│ ├── StoreLogo.png
│ ├── SplashScreen.scale-200.png
│ ├── LockScreenLogo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Wide310x150Logo.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ └── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── App.xaml
│ ├── Message.cs
│ ├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
│ ├── MainPage.xaml
│ ├── Package.appxmanifest
│ ├── MainPage.xaml.cs
│ ├── UWPMessanger.sln
│ ├── MessangerClientAPI.cs
│ ├── App.xaml.cs
│ └── UWPMessanger.csproj
├── WpfMesenger
├── packages.config
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── App.xaml.cs
├── App.xaml
├── Message.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── MessangerClientAPI.cs
└── WpfMesenger.csproj
├── WMMessanger
└── WindowsFormsApp1
│ ├── App.config
│ ├── packages.config
│ ├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
│ ├── Program.cs
│ ├── Message.cs
│ ├── WindowsFormsApp1.sln
│ ├── Form1.cs
│ ├── Form1.Designer.cs
│ ├── WindowsFormsMessenger.csproj
│ ├── MessangerClientAPI.cs
│ └── Form1.resx
├── Server
└── Server
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── ASP Core Server.csproj
│ ├── Program.cs
│ ├── Properties
│ └── launchSettings.json
│ ├── Message.cs
│ ├── Server.sln
│ ├── Controllers
│ └── Messanger.cs
│ └── Startup.cs
├── ConsoleMessenger
├── ConsoleMessenger.csproj
├── Message.cs
├── Program.cs
└── MessangerClientAPI.cs
├── ConsoleMessengerWithGUI
├── ConsoleMessengerWithGUI.csproj
├── Message.cs
├── MessangerClientAPI.cs
└── Program.cs
├── README.md
├── .gitattributes
├── .gitignore
└── MessengerCS.sln
/UWPMessanger/UWPMessanger/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/WpfMesenger/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RusAl84/MyMessengerCS/HEAD/UWPMessanger/UWPMessanger/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/WpfMesenger/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Server/Server/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft": "Warning",
6 | "Microsoft.Hosting.Lifetime": "Information"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/WpfMesenger/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Server/Server/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft": "Warning",
6 | "Microsoft.Hosting.Lifetime": "Information"
7 | }
8 | },
9 | "AllowedHosts": "*"
10 | }
11 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Server/Server/ASP Core Server.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net5.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/ConsoleMessenger/ConsoleMessenger.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net5.0
6 | ё
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/WpfMesenger/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace WpfMesenger
10 | {
11 | ///
12 | /// Логика взаимодействия для App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/WpfMesenger/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ConsoleMessengerWithGUI/ConsoleMessengerWithGUI.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | netcoreapp3.1
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace WindowsFormsApp1
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// Главная точка входа для приложения.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new Form1());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Server/Server/Program.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Hosting;
2 | using Microsoft.Extensions.Configuration;
3 | using Microsoft.Extensions.Hosting;
4 | using Microsoft.Extensions.Logging;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Linq;
8 | using System.Threading.Tasks;
9 |
10 | namespace Server
11 | {
12 | public class Program
13 | {
14 | public static void Main(string[] args)
15 | {
16 | CreateHostBuilder(args).Build().Run();
17 | }
18 |
19 | public static IHostBuilder CreateHostBuilder(string[] args) =>
20 | Host.CreateDefaultBuilder(args)
21 | .ConfigureWebHostDefaults(webBuilder =>
22 | {
23 | webBuilder.UseStartup();
24 | });
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Server/Server/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "iisSettings": {
3 | "windowsAuthentication": false,
4 | "anonymousAuthentication": true,
5 | "iisExpress": {
6 | "applicationUrl": "http://localhost:55987",
7 | "sslPort": 0
8 | }
9 | },
10 | "$schema": "http://json.schemastore.org/launchsettings.json",
11 | "profiles": {
12 | "IIS Express": {
13 | "commandName": "IISExpress",
14 | "environmentVariables": {
15 | "ASPNETCORE_ENVIRONMENT": "Development"
16 | }
17 | },
18 | "Server": {
19 | "commandName": "Project",
20 | "launchBrowser": true,
21 | "environmentVariables": {
22 | "ASPNETCORE_ENVIRONMENT": "Development"
23 | },
24 | "applicationUrl": "http://localhost:5000"
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/WpfMesenger/Message.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace ConsoleMessenger
6 | {
7 | [Serializable]
8 | public class Message
9 | {
10 | public string UserName { get; set; }
11 | public string MessageText { get; set; }
12 | public DateTime TimeStamp { get; set; }
13 |
14 | public Message()
15 | {
16 | UserName = "System";
17 | MessageText = "Server is running";
18 | TimeStamp = DateTime.Now;
19 | }
20 |
21 | public Message(string userName, string messageText, DateTime timeStamp)
22 | {
23 | UserName = userName;
24 | MessageText = messageText;
25 | TimeStamp = timeStamp;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | string output = String.Format("{0} <{2}>: {1}", UserName, MessageText, TimeStamp);
31 | return output;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ConsoleMessenger/Message.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace ConsoleMessenger
6 | {
7 | [Serializable]
8 | public class Message
9 | {
10 | public string UserName { get; set; }
11 | public string MessageText { get; set; }
12 | public DateTime TimeStamp { get; set; }
13 |
14 | public Message()
15 | {
16 | UserName = "System";
17 | MessageText = "Server is running";
18 | TimeStamp = DateTime.Now;
19 | }
20 |
21 | public Message(string userName, string messageText, DateTime timeStamp)
22 | {
23 | UserName = userName;
24 | MessageText = messageText;
25 | TimeStamp = timeStamp;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | string output = String.Format("{0} <{2}>: {1}", UserName, MessageText, TimeStamp);
31 | return output;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Server/Server/Message.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace ConsoleMessenger
6 | {
7 | [Serializable]
8 | public class Message
9 | {
10 | public string UserName { get; set; }
11 | public string MessageText { get; set; }
12 | public DateTime TimeStamp { get; set; }
13 |
14 | public Message()
15 | {
16 | UserName = "System";
17 | MessageText = "Server is running";
18 | TimeStamp = DateTime.UtcNow;
19 | }
20 |
21 | public Message(string userName, string messageText, DateTime timeStamp)
22 | {
23 | UserName = userName;
24 | MessageText = messageText;
25 | TimeStamp = timeStamp;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | string output = String.Format("{0} {1} {2}", UserName, MessageText, TimeStamp);
31 | return output;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ConsoleMessengerWithGUI/Message.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace ConsoleMessenger
6 | {
7 | [Serializable]
8 | public class Message
9 | {
10 | public string UserName { get; set; }
11 | public string MessageText { get; set; }
12 | public DateTime TimeStamp { get; set; }
13 |
14 | public Message()
15 | {
16 | UserName = "System";
17 | MessageText = "Server is running";
18 | TimeStamp = DateTime.Now;
19 | }
20 |
21 | public Message(string userName, string messageText, DateTime timeStamp)
22 | {
23 | UserName = userName;
24 | MessageText = messageText;
25 | TimeStamp = timeStamp;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | string output = String.Format("{0} <{2}>: {1}", UserName, MessageText, TimeStamp);
31 | return output;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Message.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace ConsoleMessenger
6 | {
7 | [Serializable]
8 | public class Message
9 | {
10 | public string UserName { get; set; }
11 | public string MessageText { get; set; }
12 | public DateTime TimeStamp { get; set; }
13 |
14 | public Message()
15 | {
16 | UserName = "System";
17 | MessageText = "Server is running";
18 | TimeStamp = DateTime.Now;
19 | }
20 |
21 | public Message(string userName, string messageText, DateTime timeStamp)
22 | {
23 | UserName = userName;
24 | MessageText = messageText;
25 | TimeStamp = timeStamp;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | string output = String.Format("{0} <{2}>: {1}", UserName, MessageText, TimeStamp);
31 | return output;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Message.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace ConsoleMessenger
6 | {
7 | [Serializable]
8 | public class Message
9 | {
10 | public string UserName { get; set; }
11 | public string MessageText { get; set; }
12 | public DateTime TimeStamp { get; set; }
13 |
14 | public Message()
15 | {
16 | UserName = "System";
17 | MessageText = "Server is running...";
18 | TimeStamp = DateTime.Now;
19 | }
20 |
21 | public Message(string userName, string messageText, DateTime timeStamp)
22 | {
23 | UserName = userName;
24 | MessageText = messageText;
25 | TimeStamp = timeStamp;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | string output = String.Format("{0} <{2}>: {1}", UserName, MessageText, TimeStamp);
31 | return output;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Общие сведения о сборке можно задать с помощью следующего
6 | // атрибутов. Отредактируйте значения этих атрибутов, чтобы изменить
7 | // сведений о сборке.
8 | [assembly: AssemblyTitle("UWPMessanger")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("UWPMessanger")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Сведения о версии сборки состоят из следующих четырех значений:
18 | //
19 | // Основной номер версии
20 | // Дополнительный номер версии
21 | // Номер сборки
22 | // Редакция
23 | //
24 | // Можно задать все значения или принять номера сборки и редакции по умолчанию
25 | // используя "*", как показано ниже:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/WpfMesenger/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/WpfMesenger/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | namespace WpfMesenger.Properties
13 | {
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
17 | {
18 |
19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
20 |
21 | public static Settings Default
22 | {
23 | get
24 | {
25 | return defaultInstance;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Server/Server/Server.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31005.135
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server.csproj", "{7486509E-E584-4974-A609-D96EBBDAAC24}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {7486509E-E584-4974-A609-D96EBBDAAC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {7486509E-E584-4974-A609-D96EBBDAAC24}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {7486509E-E584-4974-A609-D96EBBDAAC24}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {7486509E-E584-4974-A609-D96EBBDAAC24}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {55997CC4-DC48-4D90-8E53-C0D2C24EF3C2}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Этот код создан программой.
4 | // Исполняемая версия:4.0.30319.42000
5 | //
6 | // Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
7 | // повторной генерации кода.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WindowsFormsMessenger.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/WindowsFormsApp1.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31019.35
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsFormsApp1", "WindowsFormsApp1.csproj", "{63BA07A4-186B-4C2E-8405-117E38B08D16}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {2CEB4051-871C-4B42-AFF4-A020B4F56CEF}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/ConsoleMessenger/Program.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using Newtonsoft.Json.Converters;
3 | using System;
4 | using System.IO;
5 | using System.Net;
6 | using System.Text;
7 | using System.Threading;
8 |
9 | namespace ConsoleMessenger
10 | {
11 | class Program
12 | {
13 | private static int MessageID;
14 | private static string UserName;
15 | private static MessangerClientAPI API = new MessangerClientAPI();
16 |
17 | private static void GetNewMessages()
18 | {
19 | Message msg = API.GetMessage(MessageID);
20 | while (msg != null)
21 | {
22 | Console.WriteLine(msg);
23 | MessageID++;
24 | msg = API.GetMessage(MessageID);
25 | }
26 | }
27 | static void Main(string[] args)
28 | {
29 | MessageID = 1;
30 | Console.WriteLine("Введите Ваше имя:");
31 | //UserName = "RusAl";
32 | UserName = Console.ReadLine();
33 | string MessageText = "";
34 | while (MessageText != "exit") {
35 | GetNewMessages();
36 | MessageText = Console.ReadLine();
37 | if (MessageText.Length > 1)
38 | {
39 | Message Sendmsg = new Message(UserName, MessageText, DateTime.Now);
40 | API.SendMessage(Sendmsg);
41 | }
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Server/Server/Controllers/Messanger.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Threading.Tasks;
6 | using System.Collections;
7 | using Newtonsoft.Json;
8 | using ConsoleMessenger;
9 |
10 | namespace Server.Controllers
11 | {
12 | [Route("api/[controller]")]
13 | [ApiController]
14 | public class Messanger : ControllerBase
15 | {
16 | static List ListOfMessages = new List();
17 |
18 | // GET api//5
19 | [HttpGet("{id}")]
20 | public string Get(int id)
21 | {
22 | string OutputString = "Not found";
23 | if ((id < ListOfMessages.Count) && (id >= 0))
24 | {
25 | OutputString = JsonConvert.SerializeObject(ListOfMessages[id]);
26 | }
27 | Console.WriteLine(String.Format("Запрошено сообщение № {0} : {1}", id, OutputString));
28 | return OutputString;
29 | }
30 |
31 | // POST api/
32 | [HttpPost]
33 | public IActionResult SendMessage([FromBody] Message msg)
34 | {
35 | if (msg == null)
36 | {
37 | return BadRequest();
38 | }
39 | ListOfMessages.Add(msg);
40 | Console.WriteLine(String.Format("Всего сообщений: {0} Посланное сообщение: {1}", ListOfMessages.Count, msg));
41 | //return new NoContentResult();
42 | return new OkResult();
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Общие сведения об этой сборке предоставляются следующим набором
6 | // набора атрибутов. Измените значения этих атрибутов для изменения сведений,
7 | // связанных со сборкой.
8 | [assembly: AssemblyTitle("WindowsFormsApp1")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WindowsFormsApp1")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
18 | // для компонентов COM. Если необходимо обратиться к типу в этой сборке через
19 | // COM, следует установить атрибут ComVisible в TRUE для этого типа.
20 | [assembly: ComVisible(false)]
21 |
22 | // Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
23 | [assembly: Guid("63ba07a4-186b-4c2e-8405-117e38b08d16")]
24 |
25 | // Сведения о версии сборки состоят из указанных ниже четырех значений:
26 | //
27 | // Основной номер версии
28 | // Дополнительный номер версии
29 | // Номер сборки
30 | // Редакция
31 | //
32 | // Можно задать все значения или принять номера сборки и редакции по умолчанию
33 | // используя "*", как показано ниже:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Server/Server/Startup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.AspNetCore.Mvc;
4 | using Microsoft.Extensions.Configuration;
5 | using Microsoft.Extensions.DependencyInjection;
6 | using Microsoft.Extensions.Hosting;
7 | using Microsoft.Extensions.Logging;
8 | using System;
9 | using System.Collections.Generic;
10 | using System.Linq;
11 | using System.Threading.Tasks;
12 |
13 | namespace Server
14 | {
15 | public class Startup
16 | {
17 | public Startup(IConfiguration configuration)
18 | {
19 | Configuration = configuration;
20 | }
21 |
22 | public IConfiguration Configuration { get; }
23 |
24 | // This method gets called by the runtime. Use this method to add services to the container.
25 | public void ConfigureServices(IServiceCollection services)
26 | {
27 | services.AddControllers();
28 | services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
29 | {
30 | builder.AllowAnyOrigin()
31 | .AllowAnyMethod()
32 | .AllowAnyHeader();
33 | }));
34 |
35 | }
36 |
37 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
38 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
39 | {
40 | if (env.IsDevelopment())
41 | {
42 | app.UseDeveloperExceptionPage();
43 | }
44 |
45 | app.UseRouting();
46 |
47 | app.UseAuthorization();
48 |
49 |
50 | app.UseCors("MyPolicy");
51 |
52 | app.UseEndpoints(endpoints =>
53 | {
54 | endpoints.MapControllers();
55 | });
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Материалы по данному мастер классу и видео традиционно выкладываю в группу: https://vk.com/codelevel
2 | Одноименный курс на Stepik: https://stepik.org/course/91715/promo
3 | # Мои контакты
4 | Русаков Алексей
5 | vk.com/rusalm t.me/RusAl84
6 | Презентация здесь: https://github.com/RusAl84/MyMessengerMasterClass
7 |
8 | ## Сегодня исходники здесь:
9 | https://github.com/RusAl84/mAPI - исходный код сервера питон
10 | https://github.com/RusAl84/mQ - исходный код клиента
11 |
12 | ## Команды для создания сервера
13 | Ctrl + Shift + P = Select Interpreter
14 | python -m venv .venv
15 | https://python-scripts.com/virtualenv
16 | pip install Flask Flask-Cors
17 | ## Форамат сообщений
18 | post http://127.0.0.1:5000/mes
19 | {
20 | "MessageText": "Привет",
21 | "UserName": "RusAl",
22 | "TimeStamp": "12:30"
23 | }
24 | get http://localhost:5000/mes/4
25 | ## Почитать о технологиях
26 | https://code.visualstudio.com/
27 | https://metanit.com/python/tutorial/
28 | https://pythonworld.ru/
29 | https://www.python.org/
30 |
31 | # Команды для создания клиента
32 | ## Установка NodeJs
33 | https://nodejs.org/en/
34 | node -v
35 | ## Если у Вас Windows, то нужно разрешить выполнение сторонних подписанных скриптов,
36 | для этого запустите powerShell под администартором и выполните команду
37 | Set-ExecutionPolicy RemoteSigned
38 | ## Установка quasar
39 | npm install -g @quasar/cli
40 | ## Cоздание проекта quasar
41 | npm init quasar
42 | quasar dev
43 | ## Почитать о технологиях
44 | https://metanit.com/web/javascript
45 | https://quasar.dev/
46 | https://ru.vuejs.org/
47 | ## Пример верстки и получение данных с бекэнда через библиотеку AXIOS
48 | https://jsonplaceholder.typicode.com/guide/
49 | https://github.com/axios/axios
50 | https://www.flaticon.com/premium-icon/hedgehog_2658090#
51 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Form1.cs:
--------------------------------------------------------------------------------
1 | using ConsoleMessenger;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.Data;
6 | using System.Drawing;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 | using System.Windows.Forms;
11 | using ConsoleMessenger;
12 |
13 | namespace WindowsFormsApp1
14 | {
15 | public partial class Form1 : Form
16 | {
17 | private static int MessageID;
18 | private static string UserName;
19 | private static MessangerClientAPI API = new MessangerClientAPI();
20 | public Form1()
21 | {
22 | InitializeComponent();
23 | }
24 |
25 | private void button1_Click(object sender, EventArgs e)
26 | {
27 | string UserName = UserNameTB.Text;
28 | string Message = MessageTB.Text;
29 | if ((UserName.Length > 1) && (UserName.Length > 1))
30 | {
31 | ConsoleMessenger.Message msg = new ConsoleMessenger.Message(UserName, Message, DateTime.Now);
32 | API.SendMessageRestSharp(msg);
33 | }
34 | }
35 |
36 | private void timer1_Tick(object sender, EventArgs e)
37 | {
38 |
39 | var getMessage = new Func(async () =>
40 | {
41 | ConsoleMessenger.Message msg = await API.GetMessageHTTPAsync(MessageID);
42 | while (msg != null)
43 | {
44 | MessagesLB.Items.Add(msg);
45 | MessageID++;
46 | msg = await API.GetMessageHTTPAsync(MessageID);
47 | }
48 | });
49 | getMessage.Invoke();
50 | }
51 |
52 | private void Form1_Load(object sender, EventArgs e)
53 | {
54 | MessageID = 0;
55 | }
56 |
57 | private void MessagesLB_SelectedIndexChanged(object sender, EventArgs e)
58 | {
59 |
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
15 |
16 |
17 | UWPMessanger
18 | user2
19 | Assets\StoreLogo.png
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/WpfMesenger/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ConsoleMessenger;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Imaging;
14 | using System.Windows.Navigation;
15 | using System.Windows.Shapes;
16 | using System.Windows.Threading;
17 |
18 | namespace WpfMesenger
19 | {
20 | ///
21 | /// Логика взаимодействия для MainWindow.xaml
22 | ///
23 | public partial class MainWindow : Window
24 | {
25 | private static int MessageID;
26 | private static string UserName;
27 | private static MessangerClientAPI API = new MessangerClientAPI();
28 | DispatcherTimer timer;
29 |
30 | public MainWindow()
31 | {
32 | InitializeComponent();
33 | timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 1) }; // 1 секунда
34 | timer.Tick += Timer_Tick;
35 | timer.Start();
36 | }
37 |
38 | private void Timer_Tick(object sender, object e)
39 | {
40 | ConsoleMessenger.Message msg = API.GetMessage(MessageID);
41 | while (msg != null)
42 | {
43 | MessagesLB.Items.Add(msg);
44 | MessageID++;
45 | msg = API.GetMessage(MessageID);
46 | }
47 | }
48 |
49 | private void Button_Click(object sender, RoutedEventArgs e)
50 | {
51 | string UserName = UserNameTB.Text;
52 | string Message = MessageTB.Text;
53 | if ((UserName.Length > 1) && (UserName.Length > 1))
54 | {
55 | ConsoleMessenger.Message msg = new ConsoleMessenger.Message(UserName, Message, DateTime.Now);
56 | API.SendMessage(msg);
57 | }
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using ConsoleMessenger;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Runtime.InteropServices.WindowsRuntime;
7 | using Windows.Foundation;
8 | using Windows.Foundation.Collections;
9 | using Windows.UI.Xaml;
10 | using Windows.UI.Xaml.Controls;
11 | using Windows.UI.Xaml.Controls.Primitives;
12 | using Windows.UI.Xaml.Data;
13 | using Windows.UI.Xaml.Input;
14 | using Windows.UI.Xaml.Media;
15 | using Windows.UI.Xaml.Navigation;
16 |
17 | // Документацию по шаблону элемента "Пустая страница" см. по адресу https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x419
18 |
19 | namespace UWPMessanger
20 | {
21 | ///
22 | /// Пустая страница, которую можно использовать саму по себе или для перехода внутри фрейма.
23 | ///
24 | public sealed partial class MainPage : Page
25 | {
26 | private static int MessageID;
27 | private static string UserName;
28 | private static MessangerClientAPI API = new MessangerClientAPI();
29 | DispatcherTimer timer;
30 |
31 | public MainPage()
32 | {
33 |
34 | this.InitializeComponent();
35 |
36 | timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 1) }; // 1 секунда
37 | timer.Tick += Timer_Tick;
38 | timer.Start();
39 | }
40 | private void Timer_Tick(object sender, object e)
41 | {
42 | ConsoleMessenger.Message msg = API.GetMessage(MessageID);
43 | while (msg != null)
44 | {
45 | MessagesLB.Items.Add(msg);
46 | MessageID++;
47 | msg = API.GetMessage(MessageID);
48 | }
49 | }
50 | private void Button_Click(object sender, RoutedEventArgs e)
51 | {
52 | string UserName = UserNameTB.Text;
53 | string Message = MessageTB.Text;
54 | if ((UserName.Length > 1) && (UserName.Length > 1))
55 | {
56 | ConsoleMessenger.Message msg = new ConsoleMessenger.Message(UserName, Message, DateTime.Now);
57 | API.SendMessage(msg);
58 | }
59 |
60 | }
61 |
62 | private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
63 | {
64 |
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/WpfMesenger/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 | using System.Runtime.CompilerServices;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 |
7 | // Общие сведения об этой сборке предоставляются следующим набором
8 | // набор атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
9 | // связанные со сборкой.
10 | [assembly: AssemblyTitle("WpfMesenger")]
11 | [assembly: AssemblyDescription("")]
12 | [assembly: AssemblyConfiguration("")]
13 | [assembly: AssemblyCompany("")]
14 | [assembly: AssemblyProduct("WpfMesenger")]
15 | [assembly: AssemblyCopyright("Copyright © 2021")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 |
19 | // Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
20 | // для компонентов COM. Если необходимо обратиться к типу в этой сборке через
21 | // из модели COM, установите атрибут ComVisible для этого типа в значение true.
22 | [assembly: ComVisible(false)]
23 |
24 | //Чтобы начать создание локализуемых приложений, задайте
25 | //CultureYouAreCodingWith в файле .csproj
26 | //в . Например, при использовании английского (США)
27 | //в своих исходных файлах установите в en-US. Затем отмените преобразование в комментарий
28 | //атрибута NeutralResourceLanguage ниже. Обновите "en-US" в
29 | //строка внизу для обеспечения соответствия настройки UICulture в файле проекта.
30 |
31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
32 |
33 |
34 | [assembly: ThemeInfo(
35 | ResourceDictionaryLocation.None, //где расположены словари ресурсов по конкретным тематикам
36 | //(используется, если ресурс не найден на странице,
37 | // или в словарях ресурсов приложения)
38 | ResourceDictionaryLocation.SourceAssembly //где расположен словарь универсальных ресурсов
39 | //(используется, если ресурс не найден на странице,
40 | // в приложении или в каких-либо словарях ресурсов для конкретной темы)
41 | )]
42 |
43 |
44 | // Сведения о версии для сборки включают четыре следующих значения:
45 | //
46 | // Основной номер версии
47 | // Дополнительный номер версии
48 | // Номер сборки
49 | // Номер редакции
50 | //
51 | // Можно задать все значения или принять номера сборки и редакции по умолчанию
52 | // используя "*", как показано ниже:
53 | // [assembly: AssemblyVersion("1.0.*")]
54 | [assembly: AssemblyVersion("1.0.0.0")]
55 | [assembly: AssemblyFileVersion("1.0.0.0")]
56 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/UWPMessanger.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31019.35
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPMessanger", "UWPMessanger.csproj", "{0F579B8A-E849-4DCD-8BF3-9B5042843FEB}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|ARM = Debug|ARM
11 | Debug|ARM64 = Debug|ARM64
12 | Debug|x64 = Debug|x64
13 | Debug|x86 = Debug|x86
14 | Release|ARM = Release|ARM
15 | Release|ARM64 = Release|ARM64
16 | Release|x64 = Release|x64
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM.ActiveCfg = Debug|ARM
21 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM.Build.0 = Debug|ARM
22 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM.Deploy.0 = Debug|ARM
23 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM64.ActiveCfg = Debug|ARM64
24 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM64.Build.0 = Debug|ARM64
25 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM64.Deploy.0 = Debug|ARM64
26 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x64.ActiveCfg = Debug|x64
27 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x64.Build.0 = Debug|x64
28 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x64.Deploy.0 = Debug|x64
29 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x86.ActiveCfg = Debug|x86
30 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x86.Build.0 = Debug|x86
31 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x86.Deploy.0 = Debug|x86
32 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM.ActiveCfg = Release|ARM
33 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM.Build.0 = Release|ARM
34 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM.Deploy.0 = Release|ARM
35 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM64.ActiveCfg = Release|ARM64
36 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM64.Build.0 = Release|ARM64
37 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM64.Deploy.0 = Release|ARM64
38 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x64.ActiveCfg = Release|x64
39 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x64.Build.0 = Release|x64
40 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x64.Deploy.0 = Release|x64
41 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x86.ActiveCfg = Release|x86
42 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x86.Build.0 = Release|x86
43 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x86.Deploy.0 = Release|x86
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | GlobalSection(ExtensibilityGlobals) = postSolution
49 | SolutionGuid = {4274B290-349F-4B9A-8723-5BEACF9864F9}
50 | EndGlobalSection
51 | EndGlobal
52 |
--------------------------------------------------------------------------------
/WpfMesenger/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Этот код был создан программным средством.
4 | // Версия среды выполнения: 4.0.30319.42000
5 | //
6 | // Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если
7 | // код создан повторно.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | namespace WpfMesenger.Properties
13 | {
14 | ///
15 | /// Класс ресурсов со строгим типом для поиска локализованных строк и пр.
16 | ///
17 | // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder
18 | // класс с помощью таких средств, как ResGen или Visual Studio.
19 | // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen
20 | // с параметром /str или заново постройте свой VS-проект.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources
25 | {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources()
33 | {
34 | }
35 |
36 | ///
37 | /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом.
38 | ///
39 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
40 | internal static global::System.Resources.ResourceManager ResourceManager
41 | {
42 | get
43 | {
44 | if ((resourceMan == null))
45 | {
46 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WpfMesenger.Properties.Resources", typeof(Resources).Assembly);
47 | resourceMan = temp;
48 | }
49 | return resourceMan;
50 | }
51 | }
52 |
53 | ///
54 | /// Переопределяет свойство CurrentUICulture текущего потока для всех
55 | /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом.
56 | ///
57 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
58 | internal static global::System.Globalization.CultureInfo Culture
59 | {
60 | get
61 | {
62 | return resourceCulture;
63 | }
64 | set
65 | {
66 | resourceCulture = value;
67 | }
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/ConsoleMessenger/MessangerClientAPI.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Net;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace ConsoleMessenger
11 | {
12 | class MessangerClientAPI
13 | {
14 | public void TestNewtonsoftJson()
15 | {
16 | // Тест JSon SerializeObject NewtonSoft
17 | Message msg = new Message("RusAl", "Privet", DateTime.UtcNow);
18 | string output = JsonConvert.SerializeObject(msg);
19 | Console.WriteLine(output);
20 | Message deserializedMsg = JsonConvert.DeserializeObject(output);
21 | Console.WriteLine(deserializedMsg);
22 | //string path = @"d:\temp\ser.txt";
23 | //using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default))
24 | //{
25 | // sw.WriteLine(output);
26 | //}
27 | }
28 |
29 | public Message GetMessage(int MessageId)
30 | {
31 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger/" + MessageId.ToString());
32 | request.Method = "Get";
33 | WebResponse response = request.GetResponse();
34 | string status = ((HttpWebResponse)response).StatusDescription;
35 | //Console.WriteLine(status);
36 | Stream dataStream = response.GetResponseStream();
37 | StreamReader reader = new StreamReader(dataStream);
38 | string responseFromServer = reader.ReadToEnd();
39 | //Console.WriteLine(responseFromServer);
40 | reader.Close();
41 | dataStream.Close();
42 | response.Close();
43 | if ((status.ToLower() == "ok") && (responseFromServer != "Not found"))
44 | {
45 | Message deserializedMsg = JsonConvert.DeserializeObject(responseFromServer);
46 | //Console.WriteLine(deserializedMsg);
47 | return deserializedMsg;
48 | }
49 | return null;
50 | }
51 |
52 | public bool SendMessage(Message msg)
53 | {
54 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger");
55 | request.Method = "POST";
56 | //Message msg = new Message("RusAl", "Privet1100", DateTime.Now);
57 | string postData = JsonConvert.SerializeObject(msg);
58 | byte[] byteArray = Encoding.UTF8.GetBytes(postData);
59 | request.ContentType = "application/json";
60 | request.ContentLength = byteArray.Length;
61 | Stream dataStream = request.GetRequestStream();
62 | dataStream.Write(byteArray, 0, byteArray.Length);
63 | dataStream.Close();
64 | WebResponse response = request.GetResponse();
65 | //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
66 | dataStream = response.GetResponseStream();
67 | StreamReader reader = new StreamReader(dataStream);
68 | string responseFromServer = reader.ReadToEnd();
69 | //Console.WriteLine(responseFromServer);
70 | reader.Close();
71 | dataStream.Close();
72 | response.Close();
73 | return true;
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/WpfMesenger/MessangerClientAPI.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Net;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace ConsoleMessenger
11 | {
12 | class MessangerClientAPI
13 | {
14 | public void TestNewtonsoftJson()
15 | {
16 | // Тест JSon SerializeObject NewtonSoft
17 | Message msg = new Message("RusAl", "Privet", DateTime.UtcNow);
18 | string output = JsonConvert.SerializeObject(msg);
19 | Console.WriteLine(output);
20 | Message deserializedMsg = JsonConvert.DeserializeObject(output);
21 | Console.WriteLine(deserializedMsg);
22 | // Create the file.
23 | //string path = @"d:\temp\ser.txt";
24 | //using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default))
25 | //{
26 | // sw.WriteLine(output);
27 | //}
28 | }
29 |
30 | public Message GetMessage(int MessageId)
31 | {
32 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger/" + MessageId.ToString());
33 | request.Method = "Get";
34 | WebResponse response = request.GetResponse();
35 | string status = ((HttpWebResponse)response).StatusDescription;
36 | //Console.WriteLine(status);
37 | Stream dataStream = response.GetResponseStream();
38 | StreamReader reader = new StreamReader(dataStream);
39 | string responseFromServer = reader.ReadToEnd();
40 | //Console.WriteLine(responseFromServer);
41 | reader.Close();
42 | dataStream.Close();
43 | response.Close();
44 | if ((status.ToLower() == "ok") && (responseFromServer != "Not found"))
45 | {
46 | Message deserializedMsg = JsonConvert.DeserializeObject(responseFromServer);
47 | //Console.WriteLine(deserializedMsg);
48 | return deserializedMsg;
49 | }
50 | return null;
51 | }
52 |
53 | public bool SendMessage(Message msg)
54 | {
55 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger");
56 | request.Method = "POST";
57 | //Message msg = new Message("RusAl", "Privet1100", DateTime.Now);
58 | string postData = JsonConvert.SerializeObject(msg);
59 | byte[] byteArray = Encoding.UTF8.GetBytes(postData);
60 | request.ContentType = "application/json";
61 | request.ContentLength = byteArray.Length;
62 | Stream dataStream = request.GetRequestStream();
63 | dataStream.Write(byteArray, 0, byteArray.Length);
64 | dataStream.Close();
65 | WebResponse response = request.GetResponse();
66 | //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
67 | dataStream = response.GetResponseStream();
68 | StreamReader reader = new StreamReader(dataStream);
69 | string responseFromServer = reader.ReadToEnd();
70 | //Console.WriteLine(responseFromServer);
71 | reader.Close();
72 | dataStream.Close();
73 | response.Close();
74 | return true;
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/ConsoleMessengerWithGUI/MessangerClientAPI.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Net;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace ConsoleMessenger
11 | {
12 | class MessangerClientAPI
13 | {
14 | public void TestNewtonsoftJson()
15 | {
16 | // Тест JSon SerializeObject NewtonSoft
17 | Message msg = new Message("RusAl", "Privet", DateTime.UtcNow);
18 | string output = JsonConvert.SerializeObject(msg);
19 | Console.WriteLine(output);
20 | Message deserializedMsg = JsonConvert.DeserializeObject(output);
21 | Console.WriteLine(deserializedMsg);
22 | // Create the file.
23 | //string path = @"d:\temp\ser.txt";
24 | //using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default))
25 | //{
26 | // sw.WriteLine(output);
27 | //}
28 | }
29 |
30 | public Message GetMessage(int MessageId)
31 | {
32 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger/" + MessageId.ToString());
33 | request.Method = "Get";
34 | WebResponse response = request.GetResponse();
35 | string status = ((HttpWebResponse)response).StatusDescription;
36 | //Console.WriteLine(status);
37 | Stream dataStream = response.GetResponseStream();
38 | StreamReader reader = new StreamReader(dataStream);
39 | string responseFromServer = reader.ReadToEnd();
40 | //Console.WriteLine(responseFromServer);
41 | reader.Close();
42 | dataStream.Close();
43 | response.Close();
44 | if ((status.ToLower() == "ok") && (responseFromServer != "Not found"))
45 | {
46 | Message deserializedMsg = JsonConvert.DeserializeObject(responseFromServer);
47 | //Console.WriteLine(deserializedMsg);
48 | return deserializedMsg;
49 | }
50 | return null;
51 | }
52 |
53 | public bool SendMessage(Message msg)
54 | {
55 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger");
56 | request.Method = "POST";
57 | //Message msg = new Message("RusAl", "Privet1100", DateTime.Now);
58 | string postData = JsonConvert.SerializeObject(msg);
59 | byte[] byteArray = Encoding.UTF8.GetBytes(postData);
60 | request.ContentType = "application/json";
61 | request.ContentLength = byteArray.Length;
62 | Stream dataStream = request.GetRequestStream();
63 | dataStream.Write(byteArray, 0, byteArray.Length);
64 | dataStream.Close();
65 | WebResponse response = request.GetResponse();
66 | //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
67 | dataStream = response.GetResponseStream();
68 | StreamReader reader = new StreamReader(dataStream);
69 | string responseFromServer = reader.ReadToEnd();
70 | //Console.WriteLine(responseFromServer);
71 | reader.Close();
72 | dataStream.Close();
73 | response.Close();
74 | return true;
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/MessangerClientAPI.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Net;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace ConsoleMessenger
11 | {
12 | class MessangerClientAPI
13 | {
14 | public void TestNewtonsoftJson()
15 | {
16 | // Тест JSon SerializeObject NewtonSoft
17 | Message msg = new Message("RusAl", "Privet", DateTime.UtcNow);
18 | string output = JsonConvert.SerializeObject(msg);
19 | Console.WriteLine(output);
20 | Message deserializedMsg = JsonConvert.DeserializeObject(output);
21 | Console.WriteLine(deserializedMsg);
22 | // Create the file.
23 | //string path = @"d:\temp\ser.txt";
24 | //using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default))
25 | //{
26 | // sw.WriteLine(output);
27 | //}
28 | }
29 |
30 | public Message GetMessage(int MessageId)
31 | {
32 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger/" + MessageId.ToString());
33 | request.Method = "Get";
34 | WebResponse response = request.GetResponse();
35 | string status = ((HttpWebResponse)response).StatusDescription;
36 | //Console.WriteLine(status);
37 | Stream dataStream = response.GetResponseStream();
38 | StreamReader reader = new StreamReader(dataStream);
39 | string responseFromServer = reader.ReadToEnd();
40 | //Console.WriteLine(responseFromServer);
41 | reader.Close();
42 | dataStream.Close();
43 | response.Close();
44 | if ((status.ToLower() == "ok") && (responseFromServer != "Not found"))
45 | {
46 | Message deserializedMsg = JsonConvert.DeserializeObject(responseFromServer);
47 | //Console.WriteLine(deserializedMsg);
48 | return deserializedMsg;
49 | }
50 | return null;
51 | }
52 |
53 | public bool SendMessage(Message msg)
54 | {
55 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger");
56 | request.Method = "POST";
57 | //Message msg = new Message("RusAl", "Privet1100", DateTime.Now);
58 | string postData = JsonConvert.SerializeObject(msg);
59 | byte[] byteArray = Encoding.UTF8.GetBytes(postData);
60 | request.ContentType = "application/json";
61 | request.ContentLength = byteArray.Length;
62 | Stream dataStream = request.GetRequestStream();
63 | dataStream.Write(byteArray, 0, byteArray.Length);
64 | dataStream.Close();
65 | WebResponse response = request.GetResponse();
66 | //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
67 | dataStream = response.GetResponseStream();
68 | StreamReader reader = new StreamReader(dataStream);
69 | string responseFromServer = reader.ReadToEnd();
70 | //Console.WriteLine(responseFromServer);
71 | reader.Close();
72 | dataStream.Close();
73 | response.Close();
74 | return true;
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Этот код создан программой.
4 | // Исполняемая версия:4.0.30319.42000
5 | //
6 | // Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
7 | // повторной генерации кода.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WindowsFormsMessenger.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
17 | ///
18 | // Этот класс создан автоматически классом StronglyTypedResourceBuilder
19 | // с помощью такого средства, как ResGen или Visual Studio.
20 | // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
21 | // с параметром /str или перестройте свой проект VS.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsMessenger.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Перезаписывает свойство CurrentUICulture текущего потока для всех
51 | /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace WindowsFormsApp1
3 | {
4 | partial class Form1
5 | {
6 | ///
7 | /// Обязательная переменная конструктора.
8 | ///
9 | private System.ComponentModel.IContainer components = null;
10 |
11 | ///
12 | /// Освободить все используемые ресурсы.
13 | ///
14 | /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
15 | protected override void Dispose(bool disposing)
16 | {
17 | if (disposing && (components != null))
18 | {
19 | components.Dispose();
20 | }
21 | base.Dispose(disposing);
22 | }
23 |
24 | #region Код, автоматически созданный конструктором форм Windows
25 |
26 | ///
27 | /// Требуемый метод для поддержки конструктора — не изменяйте
28 | /// содержимое этого метода с помощью редактора кода.
29 | ///
30 | private void InitializeComponent()
31 | {
32 | this.components = new System.ComponentModel.Container();
33 | this.timer1 = new System.Windows.Forms.Timer(this.components);
34 | this.SendBtn = new System.Windows.Forms.Button();
35 | this.MessagesLB = new System.Windows.Forms.ListBox();
36 | this.UserNameTB = new System.Windows.Forms.TextBox();
37 | this.MessageTB = new System.Windows.Forms.TextBox();
38 | this.SuspendLayout();
39 | //
40 | // timer1
41 | //
42 | this.timer1.Enabled = true;
43 | this.timer1.Interval = 1000;
44 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
45 | //
46 | // SendBtn
47 | //
48 | this.SendBtn.Location = new System.Drawing.Point(563, 388);
49 | this.SendBtn.Name = "SendBtn";
50 | this.SendBtn.Size = new System.Drawing.Size(122, 73);
51 | this.SendBtn.TabIndex = 0;
52 | this.SendBtn.Text = "Отправить";
53 | this.SendBtn.UseVisualStyleBackColor = true;
54 | this.SendBtn.Click += new System.EventHandler(this.button1_Click);
55 | //
56 | // MessagesLB
57 | //
58 | this.MessagesLB.ForeColor = System.Drawing.Color.Yellow;
59 | this.MessagesLB.FormattingEnabled = true;
60 | this.MessagesLB.ItemHeight = 16;
61 | this.MessagesLB.Location = new System.Drawing.Point(28, 24);
62 | this.MessagesLB.Name = "MessagesLB";
63 | this.MessagesLB.Size = new System.Drawing.Size(657, 340);
64 | this.MessagesLB.TabIndex = 1;
65 | this.MessagesLB.SelectedIndexChanged += new System.EventHandler(this.MessagesLB_SelectedIndexChanged);
66 | //
67 | // UserNameTB
68 | //
69 | this.UserNameTB.Location = new System.Drawing.Point(28, 388);
70 | this.UserNameTB.Name = "UserNameTB";
71 | this.UserNameTB.Size = new System.Drawing.Size(279, 22);
72 | this.UserNameTB.TabIndex = 2;
73 | //
74 | // MessageTB
75 | //
76 | this.MessageTB.Location = new System.Drawing.Point(28, 439);
77 | this.MessageTB.Name = "MessageTB";
78 | this.MessageTB.Size = new System.Drawing.Size(518, 22);
79 | this.MessageTB.TabIndex = 3;
80 | //
81 | // Form1
82 | //
83 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
84 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
85 | this.ClientSize = new System.Drawing.Size(697, 489);
86 | this.Controls.Add(this.MessageTB);
87 | this.Controls.Add(this.UserNameTB);
88 | this.Controls.Add(this.MessagesLB);
89 | this.Controls.Add(this.SendBtn);
90 | this.Name = "Form1";
91 | this.Text = "WF Messenger";
92 | this.Load += new System.EventHandler(this.Form1_Load);
93 | this.ResumeLayout(false);
94 | this.PerformLayout();
95 |
96 | }
97 |
98 | #endregion
99 |
100 | private System.Windows.Forms.Timer timer1;
101 | private System.Windows.Forms.Button SendBtn;
102 | private System.Windows.Forms.ListBox MessagesLB;
103 | private System.Windows.Forms.TextBox UserNameTB;
104 | private System.Windows.Forms.TextBox MessageTB;
105 | }
106 | }
107 |
108 |
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.ApplicationModel;
7 | using Windows.ApplicationModel.Activation;
8 | using Windows.Foundation;
9 | using Windows.Foundation.Collections;
10 | using Windows.UI.Xaml;
11 | using Windows.UI.Xaml.Controls;
12 | using Windows.UI.Xaml.Controls.Primitives;
13 | using Windows.UI.Xaml.Data;
14 | using Windows.UI.Xaml.Input;
15 | using Windows.UI.Xaml.Media;
16 | using Windows.UI.Xaml.Navigation;
17 |
18 | namespace UWPMessanger
19 | {
20 | ///
21 | /// Обеспечивает зависящее от конкретного приложения поведение, дополняющее класс Application по умолчанию.
22 | ///
23 | sealed partial class App : Application
24 | {
25 | ///
26 | /// Инициализирует одноэлементный объект приложения. Это первая выполняемая строка разрабатываемого
27 | /// кода, поэтому она является логическим эквивалентом main() или WinMain().
28 | ///
29 | public App()
30 | {
31 | this.InitializeComponent();
32 | this.Suspending += OnSuspending;
33 | }
34 |
35 | ///
36 | /// Вызывается при обычном запуске приложения пользователем. Будут использоваться другие точки входа,
37 | /// например, если приложение запускается для открытия конкретного файла.
38 | ///
39 | /// Сведения о запросе и обработке запуска.
40 | protected override void OnLaunched(LaunchActivatedEventArgs e)
41 | {
42 | Frame rootFrame = Window.Current.Content as Frame;
43 |
44 | // Не повторяйте инициализацию приложения, если в окне уже имеется содержимое,
45 | // только обеспечьте активность окна
46 | if (rootFrame == null)
47 | {
48 | // Создание фрейма, который станет контекстом навигации, и переход к первой странице
49 | rootFrame = new Frame();
50 |
51 | rootFrame.NavigationFailed += OnNavigationFailed;
52 |
53 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
54 | {
55 | //TODO: Загрузить состояние из ранее приостановленного приложения
56 | }
57 |
58 | // Размещение фрейма в текущем окне
59 | Window.Current.Content = rootFrame;
60 | }
61 |
62 | if (e.PrelaunchActivated == false)
63 | {
64 | if (rootFrame.Content == null)
65 | {
66 | // Если стек навигации не восстанавливается для перехода к первой странице,
67 | // настройка новой страницы путем передачи необходимой информации в качестве параметра
68 | // навигации
69 | rootFrame.Navigate(typeof(MainPage), e.Arguments);
70 | }
71 | // Обеспечение активности текущего окна
72 | Window.Current.Activate();
73 | }
74 | }
75 |
76 | ///
77 | /// Вызывается в случае сбоя навигации на определенную страницу
78 | ///
79 | /// Фрейм, для которого произошел сбой навигации
80 | /// Сведения о сбое навигации
81 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
82 | {
83 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
84 | }
85 |
86 | ///
87 | /// Вызывается при приостановке выполнения приложения. Состояние приложения сохраняется
88 | /// без учета информации о том, будет ли оно завершено или возобновлено с неизменным
89 | /// содержимым памяти.
90 | ///
91 | /// Источник запроса приостановки.
92 | /// Сведения о запросе приостановки.
93 | private void OnSuspending(object sender, SuspendingEventArgs e)
94 | {
95 | var deferral = e.SuspendingOperation.GetDeferral();
96 | //TODO: Сохранить состояние приложения и остановить все фоновые операции
97 | deferral.Complete();
98 | }
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/WindowsFormsMessenger.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {63BA07A4-186B-4C2E-8405-117E38B08D16}
8 | WinExe
9 | WindowsFormsMessenger
10 | WindowsFormsMessenger
11 | v4.8
12 | 512
13 | true
14 | true
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 |
37 | ..\..\ConsoleMessenger\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
38 |
39 |
40 | ..\..\ConsoleMessenger\packages\RestSharp.106.11.7\lib\net452\RestSharp.dll
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | Form
58 |
59 |
60 | Form1.cs
61 |
62 |
63 |
64 |
65 |
66 |
67 | Form1.cs
68 |
69 |
70 | ResXFileCodeGenerator
71 | Resources.Designer.cs
72 | Designer
73 |
74 |
75 | True
76 | Resources.resx
77 | True
78 |
79 |
80 |
81 | SettingsSingleFileGenerator
82 | Settings.Designer.cs
83 |
84 |
85 | True
86 | Settings.settings
87 | True
88 |
89 |
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/WpfMesenger/WpfMesenger.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {AF1F758A-690E-4E9C-9905-505B5F360116}
8 | WinExe
9 | WpfMesenger
10 | WpfMesenger
11 | v4.8
12 | 512
13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
14 | 4
15 | true
16 | true
17 |
18 |
19 | AnyCPU
20 | true
21 | full
22 | false
23 | bin\Debug\
24 | DEBUG;TRACE
25 | prompt
26 | 4
27 |
28 |
29 | AnyCPU
30 | pdbonly
31 | true
32 | bin\Release\
33 | TRACE
34 | prompt
35 | 4
36 |
37 |
38 |
39 | ..\ConsoleMessenger\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 4.0
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | MSBuild:Compile
59 | Designer
60 |
61 |
62 | MSBuild:Compile
63 | Designer
64 |
65 |
66 | App.xaml
67 | Code
68 |
69 |
70 | MainWindow.xaml
71 | Code
72 |
73 |
74 |
75 |
76 |
77 |
78 | Code
79 |
80 |
81 | True
82 | True
83 | Resources.resx
84 |
85 |
86 | True
87 | Settings.settings
88 | True
89 |
90 |
91 | ResXFileCodeGenerator
92 | Resources.Designer.cs
93 |
94 |
95 |
96 | SettingsSingleFileGenerator
97 | Settings.Designer.cs
98 |
99 |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/MessangerClientAPI.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using RestSharp;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.IO;
6 | using System.Linq;
7 | using System.Net;
8 | using System.Net.Http;
9 | using System.Text;
10 | using System.Threading.Tasks;
11 |
12 | namespace ConsoleMessenger
13 | {
14 | class MessangerClientAPI
15 | {
16 | private static readonly HttpClient client = new HttpClient();
17 |
18 | public void TestNewtonsoftJson()
19 | {
20 | // Тест JSon SerializeObject NewtonSoft
21 | Message msg = new Message("RusAl", "Privet", DateTime.UtcNow);
22 | string output = JsonConvert.SerializeObject(msg);
23 | Console.WriteLine(output);
24 | Message deserializedMsg = JsonConvert.DeserializeObject(output);
25 | Console.WriteLine(deserializedMsg);
26 | // Create the file.
27 | //string path = @"d:\temp\ser.txt";
28 | //using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default))
29 | //{
30 | // sw.WriteLine(output);
31 | //}
32 | }
33 |
34 |
35 | public Message GetMessage(int MessageId)
36 | {
37 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger/" + MessageId.ToString());
38 | request.Method = "Get";
39 | WebResponse response = request.GetResponse();
40 | string status = ((HttpWebResponse)response).StatusDescription;
41 | //Console.WriteLine(status);
42 | Stream dataStream = response.GetResponseStream();
43 | StreamReader reader = new StreamReader(dataStream);
44 | string responseFromServer = reader.ReadToEnd();
45 | //Console.WriteLine(responseFromServer);
46 | reader.Close();
47 | dataStream.Close();
48 | response.Close();
49 | if ((status.ToLower() == "ok") && (responseFromServer != "Not found"))
50 | {
51 | Message deserializedMsg = JsonConvert.DeserializeObject(responseFromServer);
52 | //Console.WriteLine(deserializedMsg);
53 | return deserializedMsg;
54 | }
55 |
56 | return null;
57 | }
58 |
59 | public async Task GetMessageHTTPAsync(int MessageId)
60 | {
61 |
62 | var responseString = await client.GetStringAsync("http://localhost:5000/api/Messanger/" + MessageId.ToString());
63 | if (responseString != null)
64 | {
65 | Message deserializedMsg = JsonConvert.DeserializeObject(responseString);
66 | return deserializedMsg;
67 | }
68 | return null;
69 | }
70 |
71 |
72 | public Message GetMessageRestSharp(int MessageId)
73 | {
74 | string ServiceUrl = "http://localhost:5000";
75 | var client = new RestClient(ServiceUrl);
76 | var request = new RestRequest("/api/Messanger/" + MessageId.ToString(), Method.GET);
77 | IRestResponse Response = client.Execute(request);
78 | string ResponseContent = Response.Content;
79 | Message deserializedMsg = JsonConvert.DeserializeObject(ResponseContent);
80 | return deserializedMsg;
81 | }
82 | public bool SendMessage(Message msg)
83 | {
84 | WebRequest request = WebRequest.Create("http://localhost:5000/api/Messanger");
85 | request.Method = "POST";
86 | //Message msg = new Message("RusAl", "Privet1100", DateTime.Now);
87 | string postData = JsonConvert.SerializeObject(msg);
88 | byte[] byteArray = Encoding.UTF8.GetBytes(postData);
89 | request.ContentType = "application/json";
90 | request.ContentLength = byteArray.Length;
91 | Stream dataStream = request.GetRequestStream();
92 | dataStream.Write(byteArray, 0, byteArray.Length);
93 | dataStream.Close();
94 | WebResponse response = request.GetResponse();
95 | //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
96 | dataStream = response.GetResponseStream();
97 | StreamReader reader = new StreamReader(dataStream);
98 | string responseFromServer = reader.ReadToEnd();
99 | //Console.WriteLine(responseFromServer);
100 | reader.Close();
101 | dataStream.Close();
102 | response.Close();
103 | return true;
104 | }
105 |
106 | public bool SendMessageRestSharp(Message msg)
107 | {
108 | string ServiceUrl = "http://localhost:5000";
109 | var client = new RestClient(ServiceUrl);
110 | var request = new RestRequest("/api/Messanger", Method.POST);
111 | // Json to post.
112 | string jsonToSend = JsonConvert.SerializeObject(msg);
113 | request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody);
114 | request.RequestFormat = DataFormat.Json;
115 | bool ExitIsTrue = false;
116 | try
117 | {
118 | client.ExecuteAsync(request, response =>
119 | {
120 | if (response.StatusCode == HttpStatusCode.OK)
121 | {
122 | ExitIsTrue = true;
123 | }
124 | else
125 | {
126 | ExitIsTrue = false;
127 | }
128 | });
129 | }
130 | catch (Exception error)
131 | {
132 | Console.WriteLine(error);
133 | }
134 | return ExitIsTrue;
135 | }
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/ConsoleMessengerWithGUI/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Terminal.Gui;
3 | using ConsoleMessenger;
4 | using System.Collections.Generic;
5 |
6 | namespace ConsoleMessengerWithGUI
7 | {
8 | class Program
9 | {
10 | // Очередь сообщений
11 | private static List messages = new List();
12 | private static MessangerClientAPI API = new MessangerClientAPI();
13 |
14 | private static MenuBar menu;
15 | private static Window winMain;
16 | private static Window winMessages;
17 | private static Label labelUser;
18 | private static TextField fieldUsername;
19 | private static Label labelMessage;
20 | private static TextField fieldMessage;
21 | private static Button btnSend;
22 |
23 | static void Main(string[] args)
24 | {
25 | Application.Init();
26 | // Верхнеуровневый компонент
27 | var top = Application.Top;
28 |
29 | // Компонент меню
30 | menu = new MenuBar(new MenuBarItem[]
31 | {
32 | new MenuBarItem("_App", new MenuItem[]
33 | {
34 | new MenuItem("_Quit", "Close the app", Application.RequestStop),
35 | }),
36 | });
37 | top.Add(menu);
38 |
39 | // Компонент главной формы
40 | winMain = new Window()
41 | {
42 | Title = "DotChat",
43 | // Позиция начала окна
44 | X = 0,
45 | Y = 1, //< Место под меню
46 | // Авто растягивание по размерам терминала
47 | Width = Dim.Fill(),
48 | Height = Dim.Fill()
49 | };
50 | top.Add(winMain);
51 |
52 | // Компонент сообщений
53 | winMessages = new Window()
54 | {
55 | X = 0,
56 | Y = 0,
57 | Width = winMain.Width,
58 | Height = winMain.Height - 2,
59 | };
60 | winMain.Add(winMessages);
61 |
62 | // Текст "Пользователь"
63 | labelUser = new Label()
64 | {
65 | X = 0,
66 | Y = Pos.Bottom(winMain) - 5,
67 | Width = 15,
68 | Height = 1,
69 | Text = "Username:",
70 | };
71 | winMain.Add(labelUser);
72 |
73 | // Поле ввода имени пользователя
74 | fieldUsername = new TextField()
75 | {
76 | X = 15,
77 | Y = Pos.Bottom(winMain) - 5,
78 | Width = winMain.Width - 14,
79 | Height = 1,
80 | };
81 | winMain.Add(fieldUsername);
82 |
83 | // Текст "Сообщение"
84 | labelMessage = new Label()
85 | {
86 | X = 0,
87 | Y = Pos.Bottom(winMain) - 4,
88 | Width = 15,
89 | Height = 1,
90 | Text = "Message:",
91 | };
92 | winMain.Add(labelMessage);
93 |
94 | // Поле ввода сообщения
95 | fieldMessage = new TextField()
96 | {
97 | X = 15,
98 | Y = Pos.Bottom(winMain) - 4,
99 | Width = winMain.Width - 14,
100 | Height = 1,
101 | };
102 | winMain.Add(fieldMessage);
103 |
104 | // Кнопка отправки
105 | btnSend = new Button()
106 | {
107 | X = Pos.Right(winMain) - 10 - 5,
108 | Y = Pos.Bottom(winMain) - 4,
109 | Width = 10,
110 | Height = 1,
111 | Text = " Send ",
112 | };
113 | winMain.Add(btnSend);
114 |
115 | // Обработка клика по кнопке
116 | btnSend.Clicked += OnBtnSendClick;
117 |
118 | // Запуск цикла проверки обновлений сообщений
119 | var updateLoop = new System.Timers.Timer();
120 | updateLoop.Interval = 1000;
121 | int MessageID = 0;
122 | updateLoop.Elapsed += (sender, eventArgs) =>
123 | {
124 | Message msg = API.GetMessage(MessageID);
125 | while (msg != null)
126 | {
127 | messages.Add(msg);
128 | UpdateMessages();
129 | MessageID++;
130 | msg = API.GetMessage(MessageID);
131 | }
132 | };
133 | updateLoop.Start();
134 |
135 | Application.Run();
136 | Console.Clear();
137 | }
138 | // При нажатии на кнопку отправки
139 | static void OnBtnSendClick()
140 | {
141 | if (fieldMessage.Text.ToString() != "" && fieldUsername.Text.ToString() != "")
142 | {
143 | var msg = new Message(fieldUsername.Text.ToString(), fieldMessage.Text.ToString(), DateTime.Now);
144 | API.SendMessage(msg);
145 |
146 | // Добавление сообщений локально
147 | // В этом нет необходимости, т.к. серв вернёт отправленное нами сообщение в цикле обновлений
148 | // messages.Add(msg);
149 | // UpdateMessages();
150 |
151 | fieldMessage.Text = "";
152 | }
153 | }
154 | // Синхронизирует список сообщений с отображением
155 | static void UpdateMessages()
156 | {
157 | // Удаляем все компоненты сообщений
158 | winMessages.RemoveAll();
159 | // Идём в обратном порядке и добавляе сообщения (вверху - самые новые)
160 | int offset = 0;
161 | for (var i = messages.Count - 1; i >= 0; i--)
162 | {
163 | var msg = messages[i];
164 | winMessages.Add(new View()
165 | {
166 | X = 0,
167 | Y = offset,
168 | Width = winMessages.Width,
169 | Height = 1,
170 | Text = msg.ToString(),
171 | });
172 | offset++;
173 | }
174 | // Обвновлялм отображение
175 | Application.Refresh();
176 | }
177 |
178 | }
179 | }
180 |
--------------------------------------------------------------------------------
/WpfMesenger/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/WMMessanger/WindowsFormsApp1/Form1.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 25
125 |
126 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | x64/
22 | x86/
23 | [Aa][Rr][Mm]/
24 | [Aa][Rr][Mm]64/
25 | bld/
26 | [Bb]in/
27 | [Oo]bj/
28 | [Ll]og/
29 |
30 | # Visual Studio 2015/2017 cache/options directory
31 | .vs/
32 | # Uncomment if you have tasks that create the project's static files in wwwroot
33 | #wwwroot/
34 |
35 | # Visual Studio 2017 auto generated files
36 | Generated\ Files/
37 |
38 | # MSTest test Results
39 | [Tt]est[Rr]esult*/
40 | [Bb]uild[Ll]og.*
41 |
42 | # NUNIT
43 | *.VisualState.xml
44 | TestResult.xml
45 |
46 | # Build Results of an ATL Project
47 | [Dd]ebugPS/
48 | [Rr]eleasePS/
49 | dlldata.c
50 |
51 | # Benchmark Results
52 | BenchmarkDotNet.Artifacts/
53 |
54 | # .NET Core
55 | project.lock.json
56 | project.fragment.lock.json
57 | artifacts/
58 |
59 | # StyleCop
60 | StyleCopReport.xml
61 |
62 | # Files built by Visual Studio
63 | *_i.c
64 | *_p.c
65 | *_h.h
66 | *.ilk
67 | *.meta
68 | *.obj
69 | *.iobj
70 | *.pch
71 | *.pdb
72 | *.ipdb
73 | *.pgc
74 | *.pgd
75 | *.rsp
76 | *.sbr
77 | *.tlb
78 | *.tli
79 | *.tlh
80 | *.tmp
81 | *.tmp_proj
82 | *_wpftmp.csproj
83 | *.log
84 | *.vspscc
85 | *.vssscc
86 | .builds
87 | *.pidb
88 | *.svclog
89 | *.scc
90 |
91 | # Chutzpah Test files
92 | _Chutzpah*
93 |
94 | # Visual C++ cache files
95 | ipch/
96 | *.aps
97 | *.ncb
98 | *.opendb
99 | *.opensdf
100 | *.sdf
101 | *.cachefile
102 | *.VC.db
103 | *.VC.VC.opendb
104 |
105 | # Visual Studio profiler
106 | *.psess
107 | *.vsp
108 | *.vspx
109 | *.sap
110 |
111 | # Visual Studio Trace Files
112 | *.e2e
113 |
114 | # TFS 2012 Local Workspace
115 | $tf/
116 |
117 | # Guidance Automation Toolkit
118 | *.gpState
119 |
120 | # ReSharper is a .NET coding add-in
121 | _ReSharper*/
122 | *.[Rr]e[Ss]harper
123 | *.DotSettings.user
124 |
125 | # JustCode is a .NET coding add-in
126 | .JustCode
127 |
128 | # TeamCity is a build add-in
129 | _TeamCity*
130 |
131 | # DotCover is a Code Coverage Tool
132 | *.dotCover
133 |
134 | # AxoCover is a Code Coverage Tool
135 | .axoCover/*
136 | !.axoCover/settings.json
137 |
138 | # Visual Studio code coverage results
139 | *.coverage
140 | *.coveragexml
141 |
142 | # NCrunch
143 | _NCrunch_*
144 | .*crunch*.local.xml
145 | nCrunchTemp_*
146 |
147 | # MightyMoose
148 | *.mm.*
149 | AutoTest.Net/
150 |
151 | # Web workbench (sass)
152 | .sass-cache/
153 |
154 | # Installshield output folder
155 | [Ee]xpress/
156 |
157 | # DocProject is a documentation generator add-in
158 | DocProject/buildhelp/
159 | DocProject/Help/*.HxT
160 | DocProject/Help/*.HxC
161 | DocProject/Help/*.hhc
162 | DocProject/Help/*.hhk
163 | DocProject/Help/*.hhp
164 | DocProject/Help/Html2
165 | DocProject/Help/html
166 |
167 | # Click-Once directory
168 | publish/
169 |
170 | # Publish Web Output
171 | *.[Pp]ublish.xml
172 | *.azurePubxml
173 | # Note: Comment the next line if you want to checkin your web deploy settings,
174 | # but database connection strings (with potential passwords) will be unencrypted
175 | *.pubxml
176 | *.publishproj
177 |
178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
179 | # checkin your Azure Web App publish settings, but sensitive information contained
180 | # in these scripts will be unencrypted
181 | PublishScripts/
182 |
183 | # NuGet Packages
184 | *.nupkg
185 | # The packages folder can be ignored because of Package Restore
186 | **/[Pp]ackages/*
187 | # except build/, which is used as an MSBuild target.
188 | !**/[Pp]ackages/build/
189 | # Uncomment if necessary however generally it will be regenerated when needed
190 | #!**/[Pp]ackages/repositories.config
191 | # NuGet v3's project.json files produces more ignorable files
192 | *.nuget.props
193 | *.nuget.targets
194 |
195 | # Microsoft Azure Build Output
196 | csx/
197 | *.build.csdef
198 |
199 | # Microsoft Azure Emulator
200 | ecf/
201 | rcf/
202 |
203 | # Windows Store app package directories and files
204 | AppPackages/
205 | BundleArtifacts/
206 | Package.StoreAssociation.xml
207 | _pkginfo.txt
208 | *.appx
209 |
210 | # Visual Studio cache files
211 | # files ending in .cache can be ignored
212 | *.[Cc]ache
213 | # but keep track of directories ending in .cache
214 | !?*.[Cc]ache/
215 |
216 | # Others
217 | ClientBin/
218 | ~$*
219 | *~
220 | *.dbmdl
221 | *.dbproj.schemaview
222 | *.jfm
223 | *.pfx
224 | *.publishsettings
225 | orleans.codegen.cs
226 |
227 | # Including strong name files can present a security risk
228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
229 | #*.snk
230 |
231 | # Since there are multiple workflows, uncomment next line to ignore bower_components
232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
233 | #bower_components/
234 |
235 | # RIA/Silverlight projects
236 | Generated_Code/
237 |
238 | # Backup & report files from converting an old project file
239 | # to a newer Visual Studio version. Backup files are not needed,
240 | # because we have git ;-)
241 | _UpgradeReport_Files/
242 | Backup*/
243 | UpgradeLog*.XML
244 | UpgradeLog*.htm
245 | ServiceFabricBackup/
246 | *.rptproj.bak
247 |
248 | # SQL Server files
249 | *.mdf
250 | *.ldf
251 | *.ndf
252 |
253 | # Business Intelligence projects
254 | *.rdl.data
255 | *.bim.layout
256 | *.bim_*.settings
257 | *.rptproj.rsuser
258 | *- Backup*.rdl
259 |
260 | # Microsoft Fakes
261 | FakesAssemblies/
262 |
263 | # GhostDoc plugin setting file
264 | *.GhostDoc.xml
265 |
266 | # Node.js Tools for Visual Studio
267 | .ntvs_analysis.dat
268 | node_modules/
269 |
270 | # Visual Studio 6 build log
271 | *.plg
272 |
273 | # Visual Studio 6 workspace options file
274 | *.opt
275 |
276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
277 | *.vbw
278 |
279 | # Visual Studio LightSwitch build output
280 | **/*.HTMLClient/GeneratedArtifacts
281 | **/*.DesktopClient/GeneratedArtifacts
282 | **/*.DesktopClient/ModelManifest.xml
283 | **/*.Server/GeneratedArtifacts
284 | **/*.Server/ModelManifest.xml
285 | _Pvt_Extensions
286 |
287 | # Paket dependency manager
288 | .paket/paket.exe
289 | paket-files/
290 |
291 | # FAKE - F# Make
292 | .fake/
293 |
294 | # JetBrains Rider
295 | .idea/
296 | *.sln.iml
297 |
298 | # CodeRush personal settings
299 | .cr/personal
300 |
301 | # Python Tools for Visual Studio (PTVS)
302 | __pycache__/
303 | *.pyc
304 |
305 | # Cake - Uncomment if you are using it
306 | # tools/**
307 | # !tools/packages.config
308 |
309 | # Tabs Studio
310 | *.tss
311 |
312 | # Telerik's JustMock configuration file
313 | *.jmconfig
314 |
315 | # BizTalk build output
316 | *.btp.cs
317 | *.btm.cs
318 | *.odx.cs
319 | *.xsd.cs
320 |
321 | # OpenCover UI analysis results
322 | OpenCover/
323 |
324 | # Azure Stream Analytics local run output
325 | ASALocalRun/
326 |
327 | # MSBuild Binary and Structured Log
328 | *.binlog
329 |
330 | # NVidia Nsight GPU debugger configuration file
331 | *.nvuser
332 |
333 | # MFractors (Xamarin productivity tool) working folder
334 | .mfractor/
335 |
336 | # Local History for Visual Studio
337 | .localhistory/
338 |
339 | # BeatPulse healthcheck temp database
340 | healthchecksdb
--------------------------------------------------------------------------------
/UWPMessanger/UWPMessanger/UWPMessanger.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | x86
7 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}
8 | AppContainerExe
9 | Properties
10 | UWPMessanger
11 | UWPMessanger
12 | ru-RU
13 | UAP
14 | 10.0.18362.0
15 | 10.0.17763.0
16 | 14
17 | 512
18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
19 | true
20 | false
21 |
22 |
23 | true
24 | bin\x86\Debug\
25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
26 | ;2008
27 | full
28 | x86
29 | false
30 | prompt
31 | true
32 |
33 |
34 | bin\x86\Release\
35 | TRACE;NETFX_CORE;WINDOWS_UWP
36 | true
37 | ;2008
38 | pdbonly
39 | x86
40 | false
41 | prompt
42 | true
43 | true
44 |
45 |
46 | true
47 | bin\ARM\Debug\
48 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
49 | ;2008
50 | full
51 | ARM
52 | false
53 | prompt
54 | true
55 |
56 |
57 | bin\ARM\Release\
58 | TRACE;NETFX_CORE;WINDOWS_UWP
59 | true
60 | ;2008
61 | pdbonly
62 | ARM
63 | false
64 | prompt
65 | true
66 | true
67 |
68 |
69 | true
70 | bin\ARM64\Debug\
71 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
72 | ;2008
73 | full
74 | ARM64
75 | false
76 | prompt
77 | true
78 | true
79 |
80 |
81 | bin\ARM64\Release\
82 | TRACE;NETFX_CORE;WINDOWS_UWP
83 | true
84 | ;2008
85 | pdbonly
86 | ARM64
87 | false
88 | prompt
89 | true
90 | true
91 |
92 |
93 | true
94 | bin\x64\Debug\
95 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
96 | ;2008
97 | full
98 | x64
99 | false
100 | prompt
101 | true
102 |
103 |
104 | bin\x64\Release\
105 | TRACE;NETFX_CORE;WINDOWS_UWP
106 | true
107 | ;2008
108 | pdbonly
109 | x64
110 | false
111 | prompt
112 | true
113 | true
114 |
115 |
116 | PackageReference
117 |
118 |
119 |
120 | App.xaml
121 |
122 |
123 | MainPage.xaml
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 | Designer
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 | MSBuild:Compile
147 | Designer
148 |
149 |
150 | MSBuild:Compile
151 | Designer
152 |
153 |
154 |
155 |
156 | 6.2.10
157 |
158 |
159 | 12.0.3
160 |
161 |
162 |
163 | 14.0
164 |
165 |
166 |
173 |
--------------------------------------------------------------------------------
/MessengerCS.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30907.101
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASP Core Server", "Server\Server\ASP Core Server.csproj", "{4843B40D-9AD0-4387-AA2E-F2ABB19732F2}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleMessengerWithGUI", "ConsoleMessengerWithGUI\ConsoleMessengerWithGUI.csproj", "{55252F6D-0AFB-46FB-B79A-97590F31CE78}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsFormsMessenger", "WMMessanger\WindowsFormsApp1\WindowsFormsMessenger.csproj", "{63BA07A4-186B-4C2E-8405-117E38B08D16}"
11 | EndProject
12 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3E1D7994-B10F-4D77-AFB6-3BABDBE04FA8}"
13 | EndProject
14 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleMessenger", "ConsoleMessenger\ConsoleMessenger.csproj", "{BB4E0915-B501-4653-BD6E-FDEEA10A006F}"
15 | EndProject
16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPMessanger", "UWPMessanger\UWPMessanger\UWPMessanger.csproj", "{0F579B8A-E849-4DCD-8BF3-9B5042843FEB}"
17 | EndProject
18 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfMesenger", "WpfMesenger\WpfMesenger.csproj", "{AF1F758A-690E-4E9C-9905-505B5F360116}"
19 | EndProject
20 | Global
21 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
22 | Debug|Any CPU = Debug|Any CPU
23 | Debug|ARM = Debug|ARM
24 | Debug|ARM64 = Debug|ARM64
25 | Debug|x64 = Debug|x64
26 | Debug|x86 = Debug|x86
27 | Release|Any CPU = Release|Any CPU
28 | Release|ARM = Release|ARM
29 | Release|ARM64 = Release|ARM64
30 | Release|x64 = Release|x64
31 | Release|x86 = Release|x86
32 | EndGlobalSection
33 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
34 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|ARM.ActiveCfg = Debug|Any CPU
37 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|ARM.Build.0 = Debug|Any CPU
38 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
39 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|ARM64.Build.0 = Debug|Any CPU
40 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|x64.ActiveCfg = Debug|Any CPU
41 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|x64.Build.0 = Debug|Any CPU
42 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|x86.ActiveCfg = Debug|Any CPU
43 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Debug|x86.Build.0 = Debug|Any CPU
44 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
45 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|Any CPU.Build.0 = Release|Any CPU
46 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|ARM.ActiveCfg = Release|Any CPU
47 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|ARM.Build.0 = Release|Any CPU
48 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|ARM64.ActiveCfg = Release|Any CPU
49 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|ARM64.Build.0 = Release|Any CPU
50 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|x64.ActiveCfg = Release|Any CPU
51 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|x64.Build.0 = Release|Any CPU
52 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|x86.ActiveCfg = Release|Any CPU
53 | {4843B40D-9AD0-4387-AA2E-F2ABB19732F2}.Release|x86.Build.0 = Release|Any CPU
54 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|Any CPU.Build.0 = Debug|Any CPU
56 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|ARM.ActiveCfg = Debug|Any CPU
57 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|ARM.Build.0 = Debug|Any CPU
58 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|ARM64.ActiveCfg = Debug|Any CPU
59 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|ARM64.Build.0 = Debug|Any CPU
60 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|x64.ActiveCfg = Debug|Any CPU
61 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|x64.Build.0 = Debug|Any CPU
62 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|x86.ActiveCfg = Debug|Any CPU
63 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Debug|x86.Build.0 = Debug|Any CPU
64 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|Any CPU.ActiveCfg = Release|Any CPU
65 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|Any CPU.Build.0 = Release|Any CPU
66 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|ARM.ActiveCfg = Release|Any CPU
67 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|ARM.Build.0 = Release|Any CPU
68 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|ARM64.ActiveCfg = Release|Any CPU
69 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|ARM64.Build.0 = Release|Any CPU
70 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|x64.ActiveCfg = Release|Any CPU
71 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|x64.Build.0 = Release|Any CPU
72 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|x86.ActiveCfg = Release|Any CPU
73 | {55252F6D-0AFB-46FB-B79A-97590F31CE78}.Release|x86.Build.0 = Release|Any CPU
74 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
75 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|Any CPU.Build.0 = Debug|Any CPU
76 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|ARM.ActiveCfg = Debug|Any CPU
77 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|ARM.Build.0 = Debug|Any CPU
78 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|ARM64.ActiveCfg = Debug|Any CPU
79 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|ARM64.Build.0 = Debug|Any CPU
80 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|x64.ActiveCfg = Debug|Any CPU
81 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|x64.Build.0 = Debug|Any CPU
82 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|x86.ActiveCfg = Debug|Any CPU
83 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Debug|x86.Build.0 = Debug|Any CPU
84 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|Any CPU.ActiveCfg = Release|Any CPU
85 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|Any CPU.Build.0 = Release|Any CPU
86 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|ARM.ActiveCfg = Release|Any CPU
87 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|ARM.Build.0 = Release|Any CPU
88 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|ARM64.ActiveCfg = Release|Any CPU
89 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|ARM64.Build.0 = Release|Any CPU
90 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|x64.ActiveCfg = Release|Any CPU
91 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|x64.Build.0 = Release|Any CPU
92 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|x86.ActiveCfg = Release|Any CPU
93 | {63BA07A4-186B-4C2E-8405-117E38B08D16}.Release|x86.Build.0 = Release|Any CPU
94 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
95 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|Any CPU.Build.0 = Debug|Any CPU
96 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|ARM.ActiveCfg = Debug|Any CPU
97 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|ARM.Build.0 = Debug|Any CPU
98 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
99 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|ARM64.Build.0 = Debug|Any CPU
100 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|x64.ActiveCfg = Debug|Any CPU
101 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|x64.Build.0 = Debug|Any CPU
102 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|x86.ActiveCfg = Debug|Any CPU
103 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Debug|x86.Build.0 = Debug|Any CPU
104 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|Any CPU.ActiveCfg = Release|Any CPU
105 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|Any CPU.Build.0 = Release|Any CPU
106 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|ARM.ActiveCfg = Release|Any CPU
107 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|ARM.Build.0 = Release|Any CPU
108 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|ARM64.ActiveCfg = Release|Any CPU
109 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|ARM64.Build.0 = Release|Any CPU
110 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|x64.ActiveCfg = Release|Any CPU
111 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|x64.Build.0 = Release|Any CPU
112 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|x86.ActiveCfg = Release|Any CPU
113 | {BB4E0915-B501-4653-BD6E-FDEEA10A006F}.Release|x86.Build.0 = Release|Any CPU
114 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|Any CPU.ActiveCfg = Debug|x86
115 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM.ActiveCfg = Debug|ARM
116 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM.Build.0 = Debug|ARM
117 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM.Deploy.0 = Debug|ARM
118 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM64.ActiveCfg = Debug|ARM64
119 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM64.Build.0 = Debug|ARM64
120 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|ARM64.Deploy.0 = Debug|ARM64
121 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x64.ActiveCfg = Debug|x64
122 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x64.Build.0 = Debug|x64
123 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x64.Deploy.0 = Debug|x64
124 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x86.ActiveCfg = Debug|x86
125 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x86.Build.0 = Debug|x86
126 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Debug|x86.Deploy.0 = Debug|x86
127 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|Any CPU.ActiveCfg = Release|x86
128 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM.ActiveCfg = Release|ARM
129 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM.Build.0 = Release|ARM
130 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM.Deploy.0 = Release|ARM
131 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM64.ActiveCfg = Release|ARM64
132 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM64.Build.0 = Release|ARM64
133 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|ARM64.Deploy.0 = Release|ARM64
134 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x64.ActiveCfg = Release|x64
135 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x64.Build.0 = Release|x64
136 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x64.Deploy.0 = Release|x64
137 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x86.ActiveCfg = Release|x86
138 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x86.Build.0 = Release|x86
139 | {0F579B8A-E849-4DCD-8BF3-9B5042843FEB}.Release|x86.Deploy.0 = Release|x86
140 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
141 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|Any CPU.Build.0 = Debug|Any CPU
142 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|ARM.ActiveCfg = Debug|Any CPU
143 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|ARM.Build.0 = Debug|Any CPU
144 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|ARM64.ActiveCfg = Debug|Any CPU
145 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|ARM64.Build.0 = Debug|Any CPU
146 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|x64.ActiveCfg = Debug|Any CPU
147 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|x64.Build.0 = Debug|Any CPU
148 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|x86.ActiveCfg = Debug|Any CPU
149 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Debug|x86.Build.0 = Debug|Any CPU
150 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|Any CPU.ActiveCfg = Release|Any CPU
151 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|Any CPU.Build.0 = Release|Any CPU
152 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|ARM.ActiveCfg = Release|Any CPU
153 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|ARM.Build.0 = Release|Any CPU
154 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|ARM64.ActiveCfg = Release|Any CPU
155 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|ARM64.Build.0 = Release|Any CPU
156 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|x64.ActiveCfg = Release|Any CPU
157 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|x64.Build.0 = Release|Any CPU
158 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|x86.ActiveCfg = Release|Any CPU
159 | {AF1F758A-690E-4E9C-9905-505B5F360116}.Release|x86.Build.0 = Release|Any CPU
160 | EndGlobalSection
161 | GlobalSection(SolutionProperties) = preSolution
162 | HideSolutionNode = FALSE
163 | EndGlobalSection
164 | GlobalSection(ExtensibilityGlobals) = postSolution
165 | SolutionGuid = {D8AD02C1-FB91-49BA-A323-CB9DDA014324}
166 | EndGlobalSection
167 | EndGlobal
168 |
--------------------------------------------------------------------------------