瀏覽代碼

Merge branch 'master' of http://111.9.47.105:10244/bpa/BPASmartClient

样式分支
pry 2 年之前
父節點
當前提交
ce73cb63ef
共有 20 個文件被更改,包括 199 次插入151 次删除
  1. +1
    -0
      BPASmartClient.Business/BPASmartClient.Business.csproj
  2. +0
    -12
      BPASmartClient.Business/DataStorage.cs
  3. +0
    -48
      BPASmartClient.Business/InternetInfo.cs
  4. +2
    -8
      BPASmartClient.Business/MainConsole.cs
  5. +2
    -0
      BPASmartClient.Business/Plugin/ConfigMgr.cs
  6. +3
    -4
      BPASmartClient.Business/Plugin/MQTTMgr.cs
  7. +26
    -0
      BPASmartClient.Business/Plugin/OrderProxy.cs
  8. +42
    -0
      BPASmartClient.Business/Plugin/StatusMgr.cs
  9. +2
    -2
      BPASmartClient.Business/TopicDefine.cs
  10. +10
    -3
      BPASmartClient.Device/DeviceStatus.cs
  11. +1
    -1
      BPASmartClient.MQTT/BPASmartClient.MQTT.csproj
  12. +40
    -16
      BPASmartClient.MQTT/MQTTProxy.cs
  13. +0
    -0
      BPASmartClient.Model/订单/DoOrderEvent.cs
  14. +24
    -0
      BPASmartClient.Model/订单/OrderStatusChangedEvent.cs
  15. +24
    -0
      BPASmartClient.Model/订单/OrderStatusRsp.cs
  16. +0
    -9
      BPASmartClient.OrderProxy/BPASmartClient.OrderProxy.csproj
  17. +0
    -7
      BPASmartClient.Status/BPASmartClient.Status.csproj
  18. +0
    -8
      BPASmartClient.Status/Class1.cs
  19. +21
    -18
      BPASmartClient/App.config
  20. +1
    -15
      SmartClient.sln

+ 1
- 0
BPASmartClient.Business/BPASmartClient.Business.csproj 查看文件

@@ -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>


+ 0
- 12
BPASmartClient.Business/DataStorage.cs 查看文件

@@ -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
{
}
}

+ 0
- 48
BPASmartClient.Business/InternetInfo.cs 查看文件

@@ -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>


+ 2
- 8
BPASmartClient.Business/MainConsole.cs 查看文件

@@ -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>


+ 2
- 0
BPASmartClient.Business/Plugin/ConfigMgr.cs 查看文件

@@ -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();


+ 3
- 4
BPASmartClient.Business/Plugin/MQTTMgr.cs 查看文件

@@ -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>


+ 26
- 0
BPASmartClient.Business/Plugin/OrderProxy.cs 查看文件

@@ -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>


+ 42
- 0
BPASmartClient.Business/Plugin/StatusMgr.cs 查看文件

@@ -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()
{
}
}
}

+ 2
- 2
BPASmartClient.Business/TopicDefine.cs 查看文件

@@ -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));
}


+ 10
- 3
BPASmartClient.Device/DeviceStatus.cs 查看文件

@@ -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);
}
}
}

+ 1
- 1
BPASmartClient.MQTT/BPASmartClient.MQTT.csproj 查看文件

@@ -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>


+ 40
- 16
BPASmartClient.MQTT/MQTTProxy.cs 查看文件

@@ -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});
}
}
}
}

BPASmartClient.Model/DoOrderEvent.cs → BPASmartClient.Model/订单/DoOrderEvent.cs 查看文件


+ 24
- 0
BPASmartClient.Model/订单/OrderStatusChangedEvent.cs 查看文件

@@ -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; }
}
}

+ 24
- 0
BPASmartClient.Model/订单/OrderStatusRsp.cs 查看文件

@@ -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; }

}
}

+ 0
- 9
BPASmartClient.OrderProxy/BPASmartClient.OrderProxy.csproj 查看文件

@@ -1,9 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>

+ 0
- 7
BPASmartClient.Status/BPASmartClient.Status.csproj 查看文件

@@ -1,7 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

</Project>

+ 0
- 8
BPASmartClient.Status/Class1.cs 查看文件

@@ -1,8 +0,0 @@
using System;

namespace BPASmartClient.Status
{
public class Class1
{
}
}

+ 21
- 18
BPASmartClient/App.config 查看文件

@@ -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>

+ 1
- 15
SmartClient.sln 查看文件

@@ -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}


Loading…
取消
儲存