Implement NET8 server but without packaging capability.
This commit is contained in:
@@ -30,6 +30,7 @@
|
|||||||
<None Remove="Views\WelcomePage.xaml" />
|
<None Remove="Views\WelcomePage.xaml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Page Remove="App.xaml" />
|
||||||
<Page Remove="AppThemes\Custom.xaml" />
|
<Page Remove="AppThemes\Custom.xaml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,6 @@
|
|||||||
<DefaultLanguage>en-US</DefaultLanguage>
|
<DefaultLanguage>en-US</DefaultLanguage>
|
||||||
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
||||||
<NoWarn>$(NoWarn);NU1702</NoWarn>
|
<NoWarn>$(NoWarn);NU1702</NoWarn>
|
||||||
<EntryPointProjectUniqueName>..\Wino.Mail\Wino.Mail.csproj</EntryPointProjectUniqueName>
|
|
||||||
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
|
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
|
||||||
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
|
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
|
||||||
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
|
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
|
||||||
@@ -65,6 +64,7 @@
|
|||||||
<AppxBundlePlatforms>x64</AppxBundlePlatforms>
|
<AppxBundlePlatforms>x64</AppxBundlePlatforms>
|
||||||
<GenerateTemporaryStoreCertificate>True</GenerateTemporaryStoreCertificate>
|
<GenerateTemporaryStoreCertificate>True</GenerateTemporaryStoreCertificate>
|
||||||
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
|
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
|
||||||
|
<EntryPointProjectUniqueName>..\Wino.Mail.WinUI\Wino.Mail.WinUI.csproj</EntryPointProjectUniqueName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||||
<AppxBundle>Always</AppxBundle>
|
<AppxBundle>Always</AppxBundle>
|
||||||
@@ -157,10 +157,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
|
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.3233" PrivateAssets="all" />
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1" PrivateAssets="all" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Wino.Mail\Wino.Mail.csproj" />
|
<ProjectReference Include="..\Wino.Mail.WinUI\Wino.Mail.WinUI.csproj" />
|
||||||
<ProjectReference Include="..\Wino.Server\Wino.Server.csproj" />
|
<ProjectReference Include="..\Wino.Server.NET8\Wino.Server.NET8.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -3,14 +3,14 @@
|
|||||||
x:Class="Wino.Server.NET8.App"
|
x:Class="Wino.Server.NET8.App"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:local="using:Wino.Server.NET8">
|
xmlns:local="using:Wino.Server.NET8"
|
||||||
|
xmlns:styles="using:Wino.Server.Styles">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
||||||
<!-- Other merged dictionaries here -->
|
<styles:TrayIconResources />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
<!-- Other app resources here -->
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
</Application>
|
</Application>
|
||||||
|
|||||||
@@ -1,32 +1,87 @@
|
|||||||
using H.NotifyIcon;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using H.NotifyIcon;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.UI.Xaml;
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.UI.Xaml.Input;
|
using Microsoft.UI.Xaml.Input;
|
||||||
|
using Windows.Storage;
|
||||||
|
using Wino.Core;
|
||||||
|
using Wino.Core.Domain.Interfaces;
|
||||||
|
using Wino.Core.Services;
|
||||||
|
using Wino.Core.UWP.Services;
|
||||||
|
using Wino.Services;
|
||||||
|
|
||||||
namespace Wino.Server.NET8
|
namespace Wino.Server.NET8
|
||||||
{
|
{
|
||||||
public partial class App : Application
|
public partial class App : Application
|
||||||
{
|
{
|
||||||
public TaskbarIcon? TrayIcon { get; private set; }
|
public new static App Current => (App)Application.Current;
|
||||||
public Window? Window { get; set; }
|
|
||||||
|
|
||||||
|
private const string WinoServerAppName = "Wino.Server";
|
||||||
|
|
||||||
|
public TaskbarIcon TrayIcon { get; private set; }
|
||||||
public bool HandleClosedEvents { get; set; } = true;
|
public bool HandleClosedEvents { get; set; } = true;
|
||||||
|
public IServiceProvider Services { get; private set; }
|
||||||
public App()
|
public App()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnLaunched(LaunchActivatedEventArgs args)
|
private IServiceProvider ConfigureServices()
|
||||||
{
|
{
|
||||||
|
var services = new ServiceCollection();
|
||||||
|
|
||||||
|
services.AddTransient<ServerContext>();
|
||||||
|
services.AddTransient<ServerViewModel>();
|
||||||
|
|
||||||
|
services.RegisterCoreServices();
|
||||||
|
|
||||||
|
// Below services belongs to UWP.Core package and some APIs are not available for WPF.
|
||||||
|
// We register them here to avoid compilation errors.
|
||||||
|
|
||||||
|
services.AddSingleton<IConfigurationService, ConfigurationService>();
|
||||||
|
services.AddSingleton<INativeAppService, NativeAppService>();
|
||||||
|
services.AddSingleton<IPreferencesService, PreferencesService>();
|
||||||
|
|
||||||
|
return services.BuildServiceProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override async void OnLaunched(LaunchActivatedEventArgs args)
|
||||||
|
{
|
||||||
|
Services = ConfigureServices();
|
||||||
|
|
||||||
|
await InitializeNewServerAsync();
|
||||||
|
InitializeTrayIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<ServerViewModel> InitializeNewServerAsync()
|
||||||
|
{
|
||||||
|
// TODO: Error handling.
|
||||||
|
|
||||||
|
var databaseService = Services.GetService<IDatabaseService>();
|
||||||
|
var applicationFolderConfiguration = Services.GetService<IApplicationConfiguration>();
|
||||||
|
|
||||||
|
applicationFolderConfiguration.ApplicationDataFolderPath = ApplicationData.Current.LocalFolder.Path;
|
||||||
|
applicationFolderConfiguration.PublisherSharedFolderPath = ApplicationData.Current.GetPublisherCacheFolder(ApplicationConfiguration.SharedFolderName).Path;
|
||||||
|
|
||||||
|
await databaseService.InitializeAsync();
|
||||||
|
|
||||||
|
var serverViewModel = Services.GetRequiredService<ServerViewModel>();
|
||||||
|
|
||||||
|
await serverViewModel.InitializeAsync();
|
||||||
|
|
||||||
|
return serverViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeTrayIcon()
|
private void InitializeTrayIcon()
|
||||||
{
|
{
|
||||||
var showHideWindowCommand = (XamlUICommand)Resources["ShowHideWindowCommand"];
|
var viewModel = Services.GetService<ServerViewModel>();
|
||||||
// showHideWindowCommand.ExecuteRequested ;
|
|
||||||
|
|
||||||
var exitApplicationCommand = (XamlUICommand)Resources["ExitApplicationCommand"];
|
var launchCommand = (XamlUICommand)Resources["LaunchCommand"];
|
||||||
//exitApplicationCommand.ExecuteRequested += ExitApplicationCommand_ExecuteRequested;
|
launchCommand.Command = viewModel.LaunchWinoCommand;
|
||||||
|
|
||||||
|
var exitApplicationCommand = (XamlUICommand)Resources["TerminateCommand"];
|
||||||
|
exitApplicationCommand.Command = viewModel.ExitApplicationCommand;
|
||||||
|
|
||||||
TrayIcon = (TaskbarIcon)Resources["TrayIcon"];
|
TrayIcon = (TaskbarIcon)Resources["TrayIcon"];
|
||||||
TrayIcon.ForceCreate();
|
TrayIcon.ForceCreate();
|
||||||
|
|||||||
217
Wino.Server.NET8/ServerContext.cs
Normal file
217
Wino.Server.NET8/ServerContext.cs
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CommunityToolkit.Mvvm.Messaging;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Windows.ApplicationModel;
|
||||||
|
using Windows.ApplicationModel.AppService;
|
||||||
|
using Windows.Foundation.Collections;
|
||||||
|
using Wino.Core.Authenticators;
|
||||||
|
using Wino.Core.Domain.Interfaces;
|
||||||
|
using Wino.Core.Domain.Models.Synchronization;
|
||||||
|
using Wino.Core.Integration.Processors;
|
||||||
|
using Wino.Core.Services;
|
||||||
|
using Wino.Core.Synchronizers;
|
||||||
|
using Wino.Messaging;
|
||||||
|
using Wino.Messaging.Enums;
|
||||||
|
using Wino.Messaging.Server;
|
||||||
|
using Wino.Server.NET8;
|
||||||
|
|
||||||
|
namespace Wino.Server
|
||||||
|
{
|
||||||
|
public class ServerContext :
|
||||||
|
IRecipient<AccountCreatedMessage>,
|
||||||
|
IRecipient<AccountUpdatedMessage>,
|
||||||
|
IRecipient<AccountRemovedMessage>,
|
||||||
|
IRecipient<DraftCreated>,
|
||||||
|
IRecipient<DraftFailed>,
|
||||||
|
IRecipient<DraftMapped>,
|
||||||
|
IRecipient<FolderRenamed>,
|
||||||
|
IRecipient<FolderSynchronizationEnabled>,
|
||||||
|
IRecipient<MailAddedMessage>,
|
||||||
|
IRecipient<MailDownloadedMessage>,
|
||||||
|
IRecipient<MailRemovedMessage>,
|
||||||
|
IRecipient<MailUpdatedMessage>,
|
||||||
|
IRecipient<MergedInboxRenamed>
|
||||||
|
{
|
||||||
|
private static object connectionLock = new object();
|
||||||
|
|
||||||
|
private AppServiceConnection connection = null;
|
||||||
|
|
||||||
|
private readonly IDatabaseService _databaseService;
|
||||||
|
private readonly IApplicationConfiguration _applicationFolderConfiguration;
|
||||||
|
|
||||||
|
public ServerContext(IDatabaseService databaseService, IApplicationConfiguration applicationFolderConfiguration)
|
||||||
|
{
|
||||||
|
_databaseService = databaseService;
|
||||||
|
_applicationFolderConfiguration = applicationFolderConfiguration;
|
||||||
|
|
||||||
|
WeakReferenceMessenger.Default.RegisterAll(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Message Handlers
|
||||||
|
|
||||||
|
public async void Receive(MailAddedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(AccountCreatedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(AccountUpdatedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(AccountRemovedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(DraftCreated message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(DraftFailed message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(DraftMapped message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(FolderRenamed message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(FolderSynchronizationEnabled message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(MailDownloadedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(MailRemovedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(MailUpdatedMessage message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
public async void Receive(MergedInboxRenamed message) => await SendMessageAsync(MessageType.UIMessage, message);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
/// <summary>
|
||||||
|
/// Open connection to UWP app service
|
||||||
|
/// </summary>
|
||||||
|
public async Task InitializeAppServiceConnectionAsync()
|
||||||
|
{
|
||||||
|
if (connection != null) DisposeConnection();
|
||||||
|
|
||||||
|
connection = new AppServiceConnection
|
||||||
|
{
|
||||||
|
AppServiceName = "WinoInteropService",
|
||||||
|
PackageFamilyName = GetAppPackagFamilyName()
|
||||||
|
};
|
||||||
|
|
||||||
|
connection.RequestReceived += OnWinRTMessageReceived;
|
||||||
|
connection.ServiceClosed += OnConnectionClosed;
|
||||||
|
|
||||||
|
AppServiceConnectionStatus status = await connection.OpenAsync();
|
||||||
|
|
||||||
|
if (status != AppServiceConnectionStatus.Success)
|
||||||
|
{
|
||||||
|
// TODO: Handle connection error
|
||||||
|
|
||||||
|
DisposeConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task TestOutlookSynchronizer()
|
||||||
|
{
|
||||||
|
var accountService = App.Current.Services.GetService<IAccountService>();
|
||||||
|
|
||||||
|
var accs = await accountService.GetAccountsAsync();
|
||||||
|
var acc = accs.ElementAt(0);
|
||||||
|
|
||||||
|
var authenticator = App.Current.Services.GetService<OutlookAuthenticator>();
|
||||||
|
var processor = App.Current.Services.GetService<IOutlookChangeProcessor>();
|
||||||
|
|
||||||
|
var sync = new OutlookSynchronizer(acc, authenticator, processor);
|
||||||
|
|
||||||
|
var options = new SynchronizationOptions()
|
||||||
|
{
|
||||||
|
AccountId = acc.Id,
|
||||||
|
Type = Core.Domain.Enums.SynchronizationType.Full
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = await sync.SynchronizeAsync(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disposes current connection to UWP app service.
|
||||||
|
/// </summary>
|
||||||
|
private void DisposeConnection()
|
||||||
|
{
|
||||||
|
lock (connectionLock)
|
||||||
|
{
|
||||||
|
if (connection == null) return;
|
||||||
|
|
||||||
|
connection.RequestReceived -= OnWinRTMessageReceived;
|
||||||
|
connection.ServiceClosed -= OnConnectionClosed;
|
||||||
|
|
||||||
|
connection.Dispose();
|
||||||
|
connection = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sends a serialized object to UWP application if connection exists with given type.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="messageType">Type of the message.</param>
|
||||||
|
/// <param name="message">IServerMessage object that will be serialized.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="ArgumentException">When the message is not IServerMessage.</exception>
|
||||||
|
private async Task SendMessageAsync(MessageType messageType, object message)
|
||||||
|
{
|
||||||
|
if (connection == null) return;
|
||||||
|
|
||||||
|
if (message is not IServerMessage serverMessage)
|
||||||
|
throw new ArgumentException("Server message must be a type of IServerMessage");
|
||||||
|
|
||||||
|
string json = JsonSerializer.Serialize(message);
|
||||||
|
|
||||||
|
var set = new ValueSet
|
||||||
|
{
|
||||||
|
{ MessageConstants.MessageTypeKey, (int)messageType },
|
||||||
|
{ MessageConstants.MessageDataKey, json },
|
||||||
|
{ MessageConstants.MessageDataTypeKey, message.GetType().Name }
|
||||||
|
};
|
||||||
|
|
||||||
|
Debug.WriteLine($"S: {messageType} ({message.GetType().Name})");
|
||||||
|
await connection.SendMessageAsync(set);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnConnectionClosed(AppServiceConnection sender, AppServiceClosedEventArgs args)
|
||||||
|
{
|
||||||
|
// TODO: Handle connection closed.
|
||||||
|
|
||||||
|
// UWP app might've been terminated or suspended.
|
||||||
|
// At this point, we must keep active synchronizations going, but connection is lost.
|
||||||
|
// As long as this process is alive, database will be kept updated, but no messages will be sent.
|
||||||
|
|
||||||
|
DisposeConnection();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnWinRTMessageReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
|
||||||
|
{
|
||||||
|
// TODO: Handle incoming messages from UWP/WINUI Application.
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Init
|
||||||
|
|
||||||
|
private string GetAppPackagFamilyName()
|
||||||
|
{
|
||||||
|
// If running as a standalone app, Package will throw exception.
|
||||||
|
// Return hardcoded value for debugging purposes.
|
||||||
|
// Connection will not be available in this case.
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Package.Current.Id.FamilyName;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return "Debug.Wino.Server.FamilyName";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task InitializeAsync()
|
||||||
|
{
|
||||||
|
|
||||||
|
await InitializeAppServiceConnectionAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
37
Wino.Server.NET8/ServerViewModel.cs
Normal file
37
Wino.Server.NET8/ServerViewModel.cs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
using CommunityToolkit.Mvvm.Input;
|
||||||
|
using Wino.Core.Domain.Interfaces;
|
||||||
|
|
||||||
|
namespace Wino.Server
|
||||||
|
{
|
||||||
|
public partial class ServerViewModel : ObservableObject, IInitializeAsync
|
||||||
|
{
|
||||||
|
public ServerContext Context { get; }
|
||||||
|
|
||||||
|
public ServerViewModel(ServerContext serverContext)
|
||||||
|
{
|
||||||
|
Context = serverContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
[RelayCommand]
|
||||||
|
public async Task LaunchWinoAsync()
|
||||||
|
{
|
||||||
|
await Context.TestOutlookSynchronizer();
|
||||||
|
// ServerContext.SendTestMessageAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shuts down the application.
|
||||||
|
/// </summary>
|
||||||
|
[RelayCommand]
|
||||||
|
public void ExitApplication()
|
||||||
|
{
|
||||||
|
// TODO: App service send message to UWP app to terminate itself.
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task ReconnectAsync() => await Context.InitializeAppServiceConnectionAsync();
|
||||||
|
|
||||||
|
public Task InitializeAsync() => Context.InitializeAppServiceConnectionAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
<ResourceDictionary
|
<ResourceDictionary
|
||||||
x:Class="Wino.Server.TrayIconResources"
|
x:Class="Wino.Server.Styles.TrayIconResources"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:domain="using:Wino.Core.Domain"
|
xmlns:domain="using:Wino.Core.Domain"
|
||||||
xmlns:tb="using:H.NotifyIcon"
|
xmlns:local="using:Wino.Server"
|
||||||
xmlns:local="using:Wino.Server">
|
xmlns:tb="using:H.NotifyIcon">
|
||||||
|
|
||||||
<!-- TODO: Localize by Translator. -->
|
<!-- TODO: Localize by Translator. -->
|
||||||
|
|
||||||
<XamlUICommand
|
<XamlUICommand
|
||||||
x:Key="LaunchCommand"
|
x:Key="LaunchCommand"
|
||||||
Label="Launch"
|
Label="Launch"
|
||||||
@@ -30,10 +29,10 @@
|
|||||||
x:Key="TrayIcon"
|
x:Key="TrayIcon"
|
||||||
Visibility="Visible"
|
Visibility="Visible"
|
||||||
ToolTipText="Wino Mail"
|
ToolTipText="Wino Mail"
|
||||||
ContextMenuMode="SecondWindow"
|
ContextMenuMode="PopupMenu"
|
||||||
LeftClickCommand="{StaticResource LaunchCommand}"
|
LeftClickCommand="{StaticResource LaunchCommand}"
|
||||||
NoLeftClickDelay="True"
|
NoLeftClickDelay="True"
|
||||||
IconSource="\Images\Wino_Icon.ico">
|
IconSource="\Assets\Wino_Icon.ico">
|
||||||
<tb:TaskbarIcon.ContextFlyout>
|
<tb:TaskbarIcon.ContextFlyout>
|
||||||
<MenuFlyout>
|
<MenuFlyout>
|
||||||
<MenuFlyoutItem Command="{StaticResource LaunchCommand}" />
|
<MenuFlyoutItem Command="{StaticResource LaunchCommand}" />
|
||||||
12
Wino.Server.NET8/Styles/TrayIconResources.xaml.cs
Normal file
12
Wino.Server.NET8/Styles/TrayIconResources.xaml.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using Microsoft.UI.Xaml;
|
||||||
|
|
||||||
|
namespace Wino.Server.Styles
|
||||||
|
{
|
||||||
|
partial class TrayIconResources : ResourceDictionary
|
||||||
|
{
|
||||||
|
public TrayIconResources()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.UI.Xaml;
|
|
||||||
|
|
||||||
namespace Wino.Server
|
|
||||||
{
|
|
||||||
partial class TrayIconResources : ResourceDictionary
|
|
||||||
{
|
|
||||||
public TrayIconResources()
|
|
||||||
{
|
|
||||||
this.InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,11 +6,13 @@
|
|||||||
<RootNamespace>Wino.Server</RootNamespace>
|
<RootNamespace>Wino.Server</RootNamespace>
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
<Platforms>x86;x64;ARM64</Platforms>
|
<Platforms>x86;x64;ARM64</Platforms>
|
||||||
|
<SelfContained>true</SelfContained>
|
||||||
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>
|
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>
|
||||||
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) < 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
|
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) < 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
|
||||||
<PublishProfile>win-$(Platform).pubxml</PublishProfile>
|
<PublishProfile>win-$(Platform).pubxml</PublishProfile>
|
||||||
<UseWinUI>true</UseWinUI>
|
<UseWinUI>true</UseWinUI>
|
||||||
<EnableMsixTooling>true</EnableMsixTooling>
|
<EnableMsixTooling>true</EnableMsixTooling>
|
||||||
|
<DisableEmbeddedXbf>false</DisableEmbeddedXbf>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- Disable XAML generated main to enable single activation. -->
|
<!-- Disable XAML generated main to enable single activation. -->
|
||||||
@@ -34,12 +36,13 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Remove="Assets\Wino_Icon.ico" />
|
<None Remove="app.manifest" />
|
||||||
|
<None Remove="Assets\Wino_Icon.ico" />
|
||||||
|
<None Remove="TrayIconResources.xaml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Remove="app.manifest" />
|
<Page Remove="App.xaml" />
|
||||||
<None Remove="TrayIconResources.xaml" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -87,6 +90,10 @@
|
|||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Styles\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
|
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
|
||||||
Explorer "Package and Publish" context menu entry to be enabled for this project even if
|
Explorer "Package and Publish" context menu entry to be enabled for this project even if
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 124 KiB |
@@ -19,13 +19,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wino.Messaging.NET8", "Wino
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wino.Server.NET8", "Wino.Server.NET8\Wino.Server.NET8.csproj", "{A3B3BDBB-5946-4058-8038-55A97DBCFB38}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wino.Server.NET8", "Wino.Server.NET8\Wino.Server.NET8.csproj", "{A3B3BDBB-5946-4058-8038-55A97DBCFB38}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Wino.Packaging", "Wino.Packaging\Wino.Packaging.wapproj", "{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|ARM = Debug|ARM
|
||||||
Debug|ARM64 = Debug|ARM64
|
Debug|ARM64 = Debug|ARM64
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
Debug|x86 = Debug|x86
|
Debug|x86 = Debug|x86
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|ARM = Release|ARM
|
||||||
Release|ARM64 = Release|ARM64
|
Release|ARM64 = Release|ARM64
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
Release|x86 = Release|x86
|
Release|x86 = Release|x86
|
||||||
@@ -33,6 +37,8 @@ Global
|
|||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|ARM64.Build.0 = Debug|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -41,6 +47,8 @@ Global
|
|||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|x86.Build.0 = Debug|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|Any CPU.Build.0 = Release|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|ARM64.ActiveCfg = Release|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|ARM64.Build.0 = Release|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|x64.ActiveCfg = Release|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
@@ -49,6 +57,8 @@ Global
|
|||||||
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|x86.Build.0 = Release|Any CPU
|
{8E9C0D99-1895-45C1-AC84-9065B91DB1AD}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|ARM64.Build.0 = Debug|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -57,6 +67,8 @@ Global
|
|||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|x86.Build.0 = Debug|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|Any CPU.Build.0 = Release|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|ARM64.ActiveCfg = Release|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|ARM64.Build.0 = Release|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|x64.ActiveCfg = Release|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
@@ -65,6 +77,8 @@ Global
|
|||||||
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|x86.Build.0 = Release|Any CPU
|
{FAE1E245-8E73-4FA3-9E19-23AD4CE92200}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|ARM64.Build.0 = Debug|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -73,6 +87,8 @@ Global
|
|||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|x86.Build.0 = Debug|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|Any CPU.Build.0 = Release|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|ARM64.ActiveCfg = Release|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|ARM64.Build.0 = Release|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|x64.ActiveCfg = Release|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
@@ -81,6 +97,8 @@ Global
|
|||||||
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|x86.Build.0 = Release|Any CPU
|
{FEC05E9C-4186-4ECF-A522-C8EB5C187F0D}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|ARM64.Build.0 = Debug|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -89,6 +107,8 @@ Global
|
|||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|x86.Build.0 = Debug|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|Any CPU.Build.0 = Release|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|ARM64.ActiveCfg = Release|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|ARM64.Build.0 = Release|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|x64.ActiveCfg = Release|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
@@ -97,6 +117,8 @@ Global
|
|||||||
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|x86.Build.0 = Release|Any CPU
|
{FF3C03F7-4E9B-4333-9A9D-2BB1D1241C56}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|ARM64.Build.0 = Debug|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -105,6 +127,8 @@ Global
|
|||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|x86.Build.0 = Debug|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|Any CPU.Build.0 = Release|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|ARM64.ActiveCfg = Release|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|ARM64.Build.0 = Release|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|x64.ActiveCfg = Release|Any CPU
|
{2C86AF48-F7DD-4EA6-A9A6-610E69287F03}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
@@ -114,6 +138,9 @@ Global
|
|||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|Any CPU.ActiveCfg = Debug|x64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|Any CPU.Build.0 = Debug|x64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|Any CPU.Deploy.0 = Debug|x64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|Any CPU.Deploy.0 = Debug|x64
|
||||||
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM.ActiveCfg = Debug|x64
|
||||||
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM.Build.0 = Debug|x64
|
||||||
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM.Deploy.0 = Debug|x64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM64.Build.0 = Debug|ARM64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
||||||
@@ -126,6 +153,9 @@ Global
|
|||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|Any CPU.ActiveCfg = Release|x64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|Any CPU.Build.0 = Release|x64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|Any CPU.Deploy.0 = Release|x64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|Any CPU.Deploy.0 = Release|x64
|
||||||
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM.ActiveCfg = Release|x64
|
||||||
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM.Build.0 = Release|x64
|
||||||
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM.Deploy.0 = Release|x64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM64.ActiveCfg = Release|ARM64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM64.Build.0 = Release|ARM64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM64.Deploy.0 = Release|ARM64
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|ARM64.Deploy.0 = Release|ARM64
|
||||||
@@ -137,6 +167,8 @@ Global
|
|||||||
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|x86.Deploy.0 = Release|x86
|
{955936B2-112B-4756-8BC7-67FF12BF9759}.Release|x86.Deploy.0 = Release|x86
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|ARM64.Build.0 = Debug|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -145,6 +177,8 @@ Global
|
|||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|x86.Build.0 = Debug|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|Any CPU.Build.0 = Release|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|ARM64.ActiveCfg = Release|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|ARM64.Build.0 = Release|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|x64.ActiveCfg = Release|Any CPU
|
{88A9B1A8-BC59-4852-93D0-37A5D357ABC6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
@@ -154,6 +188,9 @@ Global
|
|||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|Any CPU.ActiveCfg = Debug|x64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|Any CPU.Build.0 = Debug|x64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|Any CPU.Deploy.0 = Debug|x64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|Any CPU.Deploy.0 = Debug|x64
|
||||||
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM.ActiveCfg = Debug|x64
|
||||||
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM.Build.0 = Debug|x64
|
||||||
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM.Deploy.0 = Debug|x64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM64.Build.0 = Debug|ARM64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
||||||
@@ -166,6 +203,9 @@ Global
|
|||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|Any CPU.ActiveCfg = Release|x64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|Any CPU.Build.0 = Release|x64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|Any CPU.Deploy.0 = Release|x64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|Any CPU.Deploy.0 = Release|x64
|
||||||
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM.ActiveCfg = Release|x64
|
||||||
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM.Build.0 = Release|x64
|
||||||
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM.Deploy.0 = Release|x64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM64.ActiveCfg = Release|ARM64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM64.Build.0 = Release|ARM64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM64.Deploy.0 = Release|ARM64
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|ARM64.Deploy.0 = Release|ARM64
|
||||||
@@ -175,6 +215,36 @@ Global
|
|||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|x86.ActiveCfg = Release|x86
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|x86.ActiveCfg = Release|x86
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|x86.Build.0 = Release|x86
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|x86.Build.0 = Release|x86
|
||||||
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|x86.Deploy.0 = Release|x86
|
{A3B3BDBB-5946-4058-8038-55A97DBCFB38}.Release|x86.Deploy.0 = Release|x86
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|ARM.Build.0 = Debug|ARM
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|x64.Deploy.0 = Debug|x64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Debug|x86.Deploy.0 = Debug|x86
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|ARM.ActiveCfg = Release|ARM
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|ARM.Build.0 = Release|ARM
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|ARM.Deploy.0 = Release|ARM
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|ARM64.Deploy.0 = Release|ARM64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|x64.Build.0 = Release|x64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|x64.Deploy.0 = Release|x64
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|x86.Build.0 = Release|x86
|
||||||
|
{760F5F31-8EE3-4B83-80F3-0E4FFBCC737C}.Release|x86.Deploy.0 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
Reference in New Issue
Block a user