@@ -17,6 +17,7 @@ | |||
<ItemGroup> | |||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Helper\BPASmartClient.Helper.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Http\BPASmartClient.Http.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.MQTT\BPASmartClient.MQTT.csproj" /> | |||
</ItemGroup> | |||
@@ -1,12 +0,0 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Business | |||
{ | |||
public class DataStorage | |||
{ | |||
} | |||
} |
@@ -31,61 +31,13 @@ namespace BPASmartClient.Business | |||
NetworkConnectState = UniversalHelper.GetInstance().GetNetworkState(); | |||
Thread.Sleep(2000); | |||
} | |||
ClientId = int.Parse(System.Configuration.ConfigurationManager.AppSettings["ClientId"]); | |||
} | |||
/// <summary> | |||
/// Consul 地址 | |||
/// </summary> | |||
public static string ConsulAddress { get; set; } | |||
/// <summary> | |||
/// 网络连接状态 | |||
/// </summary> | |||
public static bool NetworkConnectState { get; set; } | |||
/// <summary> | |||
/// 广告地址 | |||
/// </summary> | |||
public static Uri SorbetesAddress { get; set; } | |||
/// <summary> | |||
/// 客户端ID | |||
/// </summary> | |||
public static int ClientId { get; set; } | |||
/// <summary> | |||
/// IOTAPI 地址 | |||
/// </summary> | |||
public static string IotApiAddress { get; set; } | |||
#region MQTT连接信息 | |||
/// <summary> | |||
/// mqtt 服务地址 | |||
/// </summary> | |||
public static string MqttAddress { get; set; } | |||
/// <summary> | |||
/// mqtt 用户名 | |||
/// </summary> | |||
public static string MqttUserName { get; set; } | |||
/// <summary> | |||
/// mqtt 密码 | |||
/// </summary> | |||
public static string MqttPassword { get; set; } | |||
/// <summary> | |||
/// mqtt 端口号 | |||
/// </summary> | |||
public static int MqttPort { get; set; } | |||
#endregion | |||
#region API地址 | |||
/// <summary> | |||
@@ -23,14 +23,8 @@ namespace BPASmartClient.Business | |||
Plugin.GetInstance().Init(); | |||
//主题初始化 | |||
TopicDefine.GetInstance().Initialize(Plugin.GetInstance().GetPlugin<DeviceMgr>().GetDevices()); | |||
//MQTT 重连成功 | |||
MqttHelper.GetInstance().Reconnection = new Action(() => | |||
{ | |||
MqttHelper.GetInstance().MqttSubscriptionAsync(TopicDefine.GetInstance().SubscribTopics.ToArray()); | |||
}); | |||
//MQTT 连接 | |||
MqttHelper.GetInstance().MqttInitAsync(InternetInfo.MqttUserName, InternetInfo.MqttPassword, | |||
InternetInfo.MqttAddress, InternetInfo.MqttPort, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")); | |||
//设备开启 | |||
Plugin.GetInstance().GetPlugin<DeviceMgr>().StartService(); | |||
} | |||
/// <summary> | |||
@@ -33,6 +33,8 @@ namespace BPASmartClient.Business | |||
{ | |||
ClientId = int.Parse(System.Configuration.ConfigurationManager.AppSettings["ClientId"]); | |||
apolloUri = System.Configuration.ConfigurationManager.AppSettings["ApolloUri"].ToString(); | |||
InternetInfo.OrderServer= System.Configuration.ConfigurationManager.AppSettings["OrderServiceUri"].ToString(); | |||
InternetInfo.StockServer= System.Configuration.ConfigurationManager.AppSettings["StockServiceUri"].ToString(); | |||
InitDeviceModel(); | |||
InitMQTT(); | |||
@@ -33,12 +33,11 @@ namespace BPASmartClient.Business | |||
private List<RecivedHandle> messageRecives = new List<RecivedHandle>(); | |||
public void Initialize() | |||
{ | |||
running = true; | |||
//MQTT 连接成功 | |||
mqttProxy.Connected = new Action(() => | |||
{ | |||
MqttHelper.GetInstance().MqttSubscriptionAsync(TopicDefine.GetInstance().SubscribTopics.ToArray()); | |||
mqttProxy.Subscrib(TopicDefine.GetInstance().SubscribTopics.ToArray()); | |||
}); | |||
//MQTT 连接成功 | |||
mqttProxy.LostConnect = new Action(() => | |||
@@ -75,7 +74,7 @@ namespace BPASmartClient.Business | |||
} | |||
Thread.Sleep(50); | |||
} | |||
}, "MQTT 消息处理"); | |||
}, "MQTT 消息处理",true); | |||
} | |||
/// <summary> | |||
@@ -1,13 +1,17 @@ | |||
using BPA.Message; | |||
using BPASmartClient.EventBus; | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.Http; | |||
using BPASmartClient.Message; | |||
using BPASmartClient.Model; | |||
using Newtonsoft.Json; | |||
using System; | |||
using System.Collections.Concurrent; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
using static BPASmartClient.EventBus.EventBus; | |||
namespace BPASmartClient.Business | |||
{ | |||
@@ -27,6 +31,7 @@ namespace BPASmartClient.Business | |||
/// </summary> | |||
public void Initialize() | |||
{ | |||
running = true; | |||
deviceMgr = Plugin.GetInstance().GetPlugin<DeviceMgr>(); | |||
Plugin.GetInstance().GetPlugin<MQTTMgr>().SetMessageReciveHandler(delegate (IMessage orderInfo) | |||
@@ -38,6 +43,8 @@ namespace BPASmartClient.Business | |||
} | |||
}); | |||
EventBus.EventBus.GetInstance().Subscribe<OrderStatusChangedEvent>(0, OrderStatusChangedHandle); | |||
ThreadManage.GetInstance().StartLong(() => | |||
{ | |||
while (running) | |||
@@ -64,6 +71,25 @@ namespace BPASmartClient.Business | |||
}, "MQTT 消息处理"); | |||
} | |||
public void OrderStatusChangedHandle(IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
OrderStatusChangedEvent orderStatusChangedEvent = @event as OrderStatusChangedEvent; | |||
string result = string.Empty; | |||
OrderStatusChange orderStatusChange = new OrderStatusChange() { CookingStatus = orderStatusChangedEvent.Status, SuborderId = orderStatusChangedEvent.SubOrderId }; | |||
try | |||
{ | |||
string header = $"[{InternetInfo.OrderServer}/order/robotstatuschange]_[{DateTime.Now.Ticks}]".AESEncrypt(); | |||
string url = $"{InternetInfo.OrderServer}/order/robotstatuschange"; | |||
result = APIHelper.GetInstance.HttpRequest(url, header, orderStatusChange, RequestType.POST); | |||
} | |||
catch (Exception ex) | |||
{ | |||
MessageLog.GetInstance.ShowEx(ex.ToString()); | |||
} | |||
var res = JsonConvert.DeserializeObject<OrderStatusRsp>(result); | |||
MessageLog.GetInstance.ShowEx(string.Format("订单状态改变,调用API执行结果{0}", res == null ? false : res.isSuccess)); | |||
} | |||
/// <summary> | |||
/// 资源释放 | |||
/// </summary> | |||
@@ -0,0 +1,42 @@ | |||
using BPASmartClient.Helper; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Business | |||
{ | |||
/// <summary> | |||
/// 状态管理器 | |||
/// </summary> | |||
public class StatusMgr : IPlugin | |||
{ | |||
//运行标识 | |||
private bool running = false; | |||
//设备管理 | |||
private DeviceMgr deviceMgr; | |||
private Dictionary<int, Dictionary<string, object>> deviceStatus = new Dictionary<int, Dictionary<string, object>>(); | |||
public void Initialize() | |||
{ | |||
deviceMgr = Plugin.GetInstance().GetPlugin<DeviceMgr>(); | |||
ThreadManage.GetInstance().StartLong(() => | |||
{ | |||
while (running) | |||
{ | |||
foreach (var device in deviceMgr.GetDevices()) | |||
{ | |||
deviceStatus[device.DeviceId] = device.Status.GetStatus(); | |||
} | |||
Thread.Sleep(50); | |||
} | |||
}, "MQTT 消息处理"); | |||
} | |||
public void Dispose() | |||
{ | |||
} | |||
} | |||
} |
@@ -29,8 +29,8 @@ namespace BPASmartClient.Business | |||
PushHeartbeatTopics = new Dictionary<DeviceClientType, string>(); | |||
foreach (var device in devices) | |||
{ | |||
SubscribTopics.Add(TOPIC.GetInstance.GetOrderPushTopic(device.DeviceType, InternetInfo.ClientId)); | |||
SubscribTopics.Add(TOPIC.GetInstance.GetBusinessTopic(device.DeviceType, InternetInfo.ClientId)); | |||
SubscribTopics.Add(TOPIC.GetInstance.GetOrderPushTopic(device.DeviceType, Plugin.GetInstance().GetPlugin<ConfigMgr>().ClientId)); | |||
SubscribTopics.Add(TOPIC.GetInstance.GetBusinessTopic(device.DeviceType, Plugin.GetInstance().GetPlugin<ConfigMgr>().ClientId)); | |||
PushHeartbeatTopics.Add(device.DeviceType, TOPIC.GetInstance.GetHeatbeatTopic(device.DeviceType)); | |||
} | |||
@@ -1,4 +1,5 @@ | |||
using System; | |||
using System.Collections.Concurrent; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
@@ -8,10 +9,16 @@ namespace BPASmartClient.Device | |||
{ | |||
public class DeviceStatus | |||
{ | |||
public Dictionary<string,object> status=new Dictionary<string,object>(); | |||
public ConcurrentDictionary<string, object> status = new ConcurrentDictionary<string, object>(); | |||
public void Update(string key, object value) { | |||
status[key] = value; | |||
public void Update(string key, object value) | |||
{ | |||
status.AddOrUpdate(key, value, (key, value) => value); | |||
} | |||
public Dictionary<string, object> GetStatus() | |||
{ | |||
return status.ToDictionary(x => x.Key, x => x.Value); | |||
} | |||
} | |||
} |
@@ -5,7 +5,7 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.MQTTClient" Version="1.0.9" /> | |||
<PackageReference Include="BPA.MQTTClient" Version="1.0.10" /> | |||
<PackageReference Include="BPA.MQTTnet" Version="1.0.3" /> | |||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" /> | |||
</ItemGroup> | |||
@@ -1,4 +1,8 @@ | |||
using Microsoft.Extensions.Configuration; | |||
using BPA.MQTTClient; | |||
using Microsoft.Extensions.Configuration; | |||
using MQTTnet; | |||
using MQTTnet.Client; | |||
using MQTTnet.Client.Receiving; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.IO; | |||
@@ -16,34 +20,54 @@ namespace BPASmartClient.MQTT | |||
public bool IsConnected { get; set; } | |||
public void Init() | |||
{ | |||
//IConfigurationBuilder configurationBuilder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()); | |||
//IConfiguration config = configurationBuilder.Build(); | |||
//configurationBuilder. | |||
//var mqttBroker = config.GetSection("BrokerHostSettings"); | |||
//MQTT_Config = mqttBroker.Value.FromJSON<MQTT_Entity>(); | |||
} | |||
private IMqttClient client; | |||
public void Connect(string ip, int port, string clientId) | |||
{ | |||
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); | |||
configurationBuilder.AddMqttClientHostedService(p => | |||
{ | |||
p.Server = ip; | |||
p.Port = port; | |||
p.UserName = "rafiul"; | |||
p.Password = "12345678"; | |||
p.mqttClientConnectedHandlerDelegate = new MQTTnet.Client.Connecting.MqttClientConnectedHandlerDelegate(e => | |||
{ | |||
IsConnected = true; | |||
Connected?.Invoke(); | |||
}); | |||
//p.mqttClientDisconnectedHandlerDelegate = new MQTTnet.Client.Disconnecting.MqttClientDisconnectedHandlerDelegate(e => | |||
//{ | |||
// IsConnected = false; | |||
// LostConnect?.Invoke(); | |||
//}); | |||
p.ConnectedResult += (s, e) => | |||
{ | |||
client = e; | |||
}; | |||
p.MqttApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e => | |||
{ | |||
MessageRecive?.Invoke(Encoding.Default.GetString(e.ApplicationMessage.Payload)); | |||
}); | |||
}); | |||
} | |||
public void CloseConnect() | |||
{ | |||
client.Dispose(); | |||
} | |||
public void Publish(string topic, string content) | |||
public async void Publish(string topic, string content) | |||
{ | |||
await client.PublishAsync(topic, content); | |||
} | |||
public void Subscrib(params string[] topic) | |||
public async void Subscrib(params string[] topics) | |||
{ | |||
foreach (var topic in topics) | |||
{ | |||
await client.SubscribeAsync(new MqttTopicFilter() { Topic = topic, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce}); | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,24 @@ | |||
using BPA.Message.Enum; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Model | |||
{ | |||
/// <summary> | |||
/// 订单状态改变事件 | |||
/// </summary> | |||
public class OrderStatusChangedEvent:BaseEvent | |||
{ | |||
/// <summary> | |||
/// 子订单ID | |||
/// </summary> | |||
public string SubOrderId { get; set; } | |||
/// <summary> | |||
/// 状态 | |||
/// </summary> | |||
public ORDER_STATUS Status { get; set; } | |||
} | |||
} |
@@ -0,0 +1,24 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Model | |||
{ | |||
public class OrderStatusRsp | |||
{ | |||
/// <summary> | |||
/// 子订单ID | |||
/// </summary> | |||
public string SuborderId { get; set; } | |||
/// <summary> | |||
/// 订单状态 | |||
/// </summary> | |||
public int Result { get; set; } = 0; | |||
public bool isSuccess { get; set; } | |||
public bool data { get; set; } | |||
public string msg { get; set; } | |||
} | |||
} |
@@ -1,9 +0,0 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<PropertyGroup> | |||
<TargetFramework>net6.0</TargetFramework> | |||
<ImplicitUsings>enable</ImplicitUsings> | |||
<Nullable>enable</Nullable> | |||
</PropertyGroup> | |||
</Project> |
@@ -1,7 +0,0 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<PropertyGroup> | |||
<TargetFramework>net6.0</TargetFramework> | |||
</PropertyGroup> | |||
</Project> |
@@ -1,8 +0,0 @@ | |||
using System; | |||
namespace BPASmartClient.Status | |||
{ | |||
public class Class1 | |||
{ | |||
} | |||
} |
@@ -1,26 +1,29 @@ | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<configuration> | |||
<appSettings> | |||
<!--通用配置--> | |||
<appSettings> | |||
<!--通用配置--> | |||
<!--测试服务 Consul 地址--> | |||
<add key="ConsulAddress" value="http://111.9.47.105:9011/" /> | |||
<!--测试服务 Consul 地址--> | |||
<add key="ConsulAddress" value="http://111.9.47.105:9011/" /> | |||
<!--正式服务 Consul 地址--> | |||
<!--<add key="ConsulAddress" value="http://162.14.105.138:9005" />--> | |||
<!--正式服务 Consul 地址--> | |||
<!--<add key="ConsulAddress" value="http://162.14.105.138:9005" />--> | |||
<!--客户端ID--> | |||
<!--1:且时且多冰淇淋咖啡机,2:且时且多煮面机,3:海科煮面机测试店铺--> | |||
<add key="ClientId" value="12"/> | |||
<add key="ApolloUri" value="http://10.2.1.21:28080"/> | |||
<!--客户端ID--> | |||
<!--1:且时且多冰淇淋咖啡机,2:且时且多煮面机,3:海科煮面机测试店铺--> | |||
<add key="ClientId" value="12"/> | |||
<add key="ApolloUri" value="http://10.2.1.21:28080"/> | |||
<add key="OrderServiceUri" value="http://10.2.1.26:21527/order/"/> | |||
<add key="StockServiceUri" value="http://10.2.1.26:21527/stock/"/> | |||
<add key="COM_Coffee" value="COM3"/> | |||
<add key="BAUD_Coffee" value="115200"/> | |||
<add key="COM_IceCream" value="COM12"/> | |||
<add key="BAUD_IceCream" value="9600"/> | |||
<add key="IceCream_CXB_Threshold" value="90"/> | |||
<add key="COM_ICChip" value="COM6"/> | |||
<add key="BAUD_IChip" value="9600"/> | |||
</appSettings> | |||
<add key="COM_Coffee" value="COM3"/> | |||
<add key="BAUD_Coffee" value="115200"/> | |||
<add key="COM_IceCream" value="COM12"/> | |||
<add key="BAUD_IceCream" value="9600"/> | |||
<add key="IceCream_CXB_Threshold" value="90"/> | |||
<add key="COM_ICChip" value="COM6"/> | |||
<add key="BAUD_IChip" value="9600"/> | |||
</appSettings> | |||
</configuration> |
@@ -41,8 +41,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Helper", "BP | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Message", "BPASmartClient.Message\BPASmartClient.Message.csproj", "{C517D33F-8800-405E-9D59-E1F6CA201431}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Status", "BPASmartClient.Status\BPASmartClient.Status.csproj", "{2C8DAB92-D5EB-4462-87C1-0BED75B26C54}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.IoT", "BPASmartClient.IoT\BPASmartClient.IoT.csproj", "{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient", "BPASmartClient\BPASmartClient.csproj", "{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}" | |||
@@ -57,8 +55,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Socket", "BP | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Peripheral", "BPASmartClient.Peripheral\BPASmartClient.Peripheral.csproj", "{9F5E2879-972A-45FB-913C-89E9F0CEB189}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.OrderProxy", "BPASmartClient.OrderProxy\BPASmartClient.OrderProxy.csproj", "{EBDFF87C-0B98-4BB5-8760-D86964E38A88}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MessageCommunication", "BPASmartClient.MessageCommunication\BPASmartClient.MessageCommunication.csproj", "{DCC07B39-E342-4841-B9E4-4D44DA2978FD}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.EventBus", "BPASmartClient.EventBus\BPASmartClient.EventBus.csproj", "{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}" | |||
@@ -76,7 +72,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.CustomResour | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lebai.SDK", "Lebai.SDK\Lebai.SDK.csproj", "{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.MORKSM.BK.PLC", "BPASmartClient.MORKSM.BK.PLC\BPASmartClient.MORKSM.BK.PLC.csproj", "{7F04A788-38B5-42CB-B601-70C657C953B8}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MORKSM.BK.PLC", "BPASmartClient.MORKSM.BK.PLC\BPASmartClient.MORKSM.BK.PLC.csproj", "{7F04A788-38B5-42CB-B601-70C657C953B8}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
@@ -136,10 +132,6 @@ Global | |||
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{2C8DAB92-D5EB-4462-87C1-0BED75B26C54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{2C8DAB92-D5EB-4462-87C1-0BED75B26C54}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{2C8DAB92-D5EB-4462-87C1-0BED75B26C54}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{2C8DAB92-D5EB-4462-87C1-0BED75B26C54}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
@@ -168,10 +160,6 @@ Global | |||
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{EBDFF87C-0B98-4BB5-8760-D86964E38A88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{EBDFF87C-0B98-4BB5-8760-D86964E38A88}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{EBDFF87C-0B98-4BB5-8760-D86964E38A88}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{EBDFF87C-0B98-4BB5-8760-D86964E38A88}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
@@ -218,7 +206,6 @@ Global | |||
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF} = {1A9920BA-7C8D-4BDC-8D7D-6544A71AF3CF} | |||
{C517D33F-8800-405E-9D59-E1F6CA201431} = {1A9920BA-7C8D-4BDC-8D7D-6544A71AF3CF} | |||
{2C8DAB92-D5EB-4462-87C1-0BED75B26C54} = {6CEA3385-6F62-452A-8275-033A6037235D} | |||
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF} = {6CEA3385-6F62-452A-8275-033A6037235D} | |||
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | |||
{4E393E60-D39A-4118-8BD5-427DC72E9ACE} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | |||
@@ -226,7 +213,6 @@ Global | |||
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | |||
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | |||
{9F5E2879-972A-45FB-913C-89E9F0CEB189} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | |||
{EBDFF87C-0B98-4BB5-8760-D86964E38A88} = {6CEA3385-6F62-452A-8275-033A6037235D} | |||
{DCC07B39-E342-4841-B9E4-4D44DA2978FD} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | |||
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5} = {1A9920BA-7C8D-4BDC-8D7D-6544A71AF3CF} | |||
{268012B6-C4FC-4C40-802C-74D5FAD3CA45} = {1A9920BA-7C8D-4BDC-8D7D-6544A71AF3CF} | |||