diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs
deleted file mode 100644
index 6ff0c37..0000000
--- a/src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace JT808.DotNetty.Abstractions.Dtos
-{
- ///
- /// 原包通道信息
- ///
- public class JT808SourcePackageChannelInfoDto
- {
- ///
- /// 远程地址
- ///
- public string RemoteAddress { get; set; }
- ///
- /// 本地地址
- ///
- public string LocalAddress { get; set; }
- ///
- /// 是否注册
- ///
- public bool Registered { get; set; }
- ///
- /// 是否活动
- ///
- public bool Active { get; set; }
- ///
- /// 是否打开
- ///
- public bool Open { get; set; }
- }
-}
diff --git a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
index 3993216..b8779d3 100644
--- a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
+++ b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
@@ -1,8 +1,20 @@
-
+
netstandard2.0
7.1
+ Copyright 2018.
+ SmallChi
+ JT808.DotNetty.Abstractions
+ JT808.DotNetty.Abstractions
+ 基于DotNetty实现的JT808DotNetty的抽象库
+ 基于DotNetty实现的JT808DotNetty的抽象库
+ false
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ true
+ 1.0.0
diff --git a/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj b/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj
index 19d837a..56628c4 100644
--- a/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj
+++ b/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj
@@ -3,6 +3,18 @@
netstandard2.0
7.1
+ Copyright 2018.
+ SmallChi
+ JT808.DotNetty.Codecs
+ JT808.DotNetty.Codecs
+ 基于DotNetty实现的JT808DotNetty的编解码库
+ 基于DotNetty实现的JT808DotNetty的编解码库
+ false
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ true
+ 1.0.0
diff --git a/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationTcpSendService.cs b/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationTcpSendService.cs
index c4cc5db..528edcf 100644
--- a/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationTcpSendService.cs
+++ b/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationTcpSendService.cs
@@ -5,7 +5,7 @@ namespace JT808.DotNetty.Core.Interfaces
///
/// JT808基于tcp的统一下发命令服务
///
- internal interface IJT808UnificationTcpSendService
+ public interface IJT808UnificationTcpSendService
{
JT808ResultDto Send(string terminalPhoneNo, byte[] data);
}
diff --git a/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationUdpSendService.cs b/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationUdpSendService.cs
index 722f02d..fffbd94 100644
--- a/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationUdpSendService.cs
+++ b/src/JT808.DotNetty.Core/Interfaces/IJT808UnificationUdpSendService.cs
@@ -5,7 +5,7 @@ namespace JT808.DotNetty.Core.Interfaces
///
/// JT808基于udp的统一下发命令服务
///
- internal interface IJT808UnificationUdpSendService
+ public interface IJT808UnificationUdpSendService
{
JT808ResultDto Send(string terminalPhoneNo, byte[] data);
}
diff --git a/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj b/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
index 351436a..d0f8873 100644
--- a/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
+++ b/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
@@ -3,6 +3,18 @@
netstandard2.0
7.1
+ Copyright 2018.
+ SmallChi
+ JT808.DotNetty.Core
+ JT808.DotNetty.Core
+ 基于DotNetty实现的JT808DotNetty的核心库
+ 基于DotNetty实现的JT808DotNetty的核心库
+ false
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ true
+ 1.0.0
diff --git a/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj b/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
index 0e326c3..b637e79 100644
--- a/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
+++ b/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
@@ -2,6 +2,19 @@
netstandard2.0
+ 7.1
+ Copyright 2018.
+ SmallChi
+ JT808.DotNetty.Tcp
+ JT808.DotNetty.Tcp
+ 基于DotNetty实现的JT808DotNetty的Tcp服务
+ 基于DotNetty实现的JT808DotNetty的Tcp服务
+ false
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ true
+ 1.0.0
diff --git a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
index ba170c6..29cc648 100644
--- a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
+++ b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
@@ -51,6 +51,11 @@ namespace JT808.DotNetty.Udp.Handlers
//解析具体的消息体,具体调用JT808Serializer.Deserialize
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg.Buffer);
jT808UdpAtomicCounterService.MsgSuccessIncrement();
+ jT808UdpSessionManager.TryAdd(new JT808UdpSession {
+ Channel= ctx.Channel,
+ Sender= msg.Sender,
+ TerminalPhoneNo= jT808HeaderPackage.Header.TerminalPhoneNo
+ });
if (logger.IsEnabled(LogLevel.Debug))
{
logger.LogDebug("accept package success count<<<" + jT808UdpAtomicCounterService.MsgSuccessCount.ToString());
diff --git a/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj b/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
index e04aa62..ca0c59e 100644
--- a/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
+++ b/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
@@ -1,8 +1,20 @@
-
+
netstandard2.0
7.1
+ Copyright 2018.
+ SmallChi
+ JT808.DotNetty.Udp
+ JT808.DotNetty.Udp
+ 基于DotNetty实现的JT808DotNetty的Udp服务
+ 基于DotNetty实现的JT808DotNetty的Udp服务
+ false
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ true
+ 1.0.0
diff --git a/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs b/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
index 37cefef..952f3ee 100644
--- a/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
+++ b/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
@@ -1,27 +1,236 @@
-using JT808.DotNetty.Core.Handlers;
+using JT808.DotNetty.Abstractions.Dtos;
+using JT808.DotNetty.Core.Handlers;
+using JT808.DotNetty.Core.Interfaces;
+using JT808.DotNetty.Core.Metadata;
+using JT808.DotNetty.Core.Services;
+using Newtonsoft.Json;
namespace JT808.DotNetty.WebApi.Handlers
{
///
/// 默认消息处理业务实现
///
- internal class JT808MsgIdDefaultWebApiHandler : JT808MsgIdHttpHandlerBase
+ public class JT808MsgIdDefaultWebApiHandler : JT808MsgIdHttpHandlerBase
{
private const string sessionRoutePrefix = "Session";
- private const string sourcePackagePrefix = "SourcePackage";
-
private const string transmitPrefix = "Transmit";
- //1.TCP一套注入
- //2.UDP一套注入
- //3.统一的一套注入
+ private readonly JT808TcpAtomicCounterService jT808TcpAtomicCounterService;
+
+ private readonly JT808UdpAtomicCounterService jT808UdpAtomicCounterService;
+
+ private readonly JT808TransmitAddressFilterService jT808TransmitAddressFilterService;
+
+ private readonly IJT808TcpSessionService jT808TcpSessionService;
+
+ private readonly IJT808UnificationTcpSendService jT808UnificationTcpSendService;
+
+ private readonly IJT808UnificationUdpSendService jT808UnificationUdpSendService;
+ ///
+ /// TCP一套注入
+ ///
+ ///
public JT808MsgIdDefaultWebApiHandler(
+ IJT808UnificationTcpSendService jT808UnificationTcpSendService,
+ IJT808TcpSessionService jT808TcpSessionService,
+ JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
+ JT808TcpAtomicCounterService jT808TcpAtomicCounterService
+ )
+ {
+ this.jT808UnificationTcpSendService = jT808UnificationTcpSendService;
+ this.jT808TcpSessionService = jT808TcpSessionService;
+ this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
+ this.jT808TcpAtomicCounterService = jT808TcpAtomicCounterService;
+ InitTcpRoute();
+ }
+ ///
+ /// UDP一套注入
+ ///
+ ///
+ public JT808MsgIdDefaultWebApiHandler(
+ IJT808UnificationUdpSendService jT808UnificationUdpSendService,
+ JT808UdpAtomicCounterService jT808UdpAtomicCounterService
)
{
+ this.jT808UnificationUdpSendService = jT808UnificationUdpSendService;
+ this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
+ InitUdpRoute();
+ }
+
+ ///
+ /// 统一的一套注入
+ ///
+ ///
+ ///
+ public JT808MsgIdDefaultWebApiHandler(
+ IJT808UnificationTcpSendService jT808UnificationTcpSendService,
+ IJT808UnificationUdpSendService jT808UnificationUdpSendService,
+ IJT808TcpSessionService jT808TcpSessionService,
+ JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
+ JT808TcpAtomicCounterService jT808TcpAtomicCounterService,
+ JT808UdpAtomicCounterService jT808UdpAtomicCounterService
+ )
+ {
+ this.jT808UnificationTcpSendService = jT808UnificationTcpSendService;
+ this.jT808UnificationUdpSendService = jT808UnificationUdpSendService;
+ this.jT808TcpSessionService = jT808TcpSessionService;
+ this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
+ this.jT808TcpAtomicCounterService = jT808TcpAtomicCounterService;
+ this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
+ InitTcpRoute();
+ InitUdpRoute();
+ }
+
+ ///
+ /// 会话服务集合
+ ///
+ ///
+ ///
+ public JT808HttpResponse GetSessionAll(JT808HttpRequest request)
+ {
+ var result = jT808TcpSessionService.GetAll();
+ return CreateJT808HttpResponse(result);
+ }
+
+ ///
+ /// 会话服务-通过设备终端号移除对应会话
+ ///
+ ///
+ ///
+ public JT808HttpResponse RemoveByTerminalPhoneNo(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ var result = jT808TcpSessionService.RemoveByTerminalPhoneNo(request.Json);
+ return CreateJT808HttpResponse(result);
+ }
+
+ ///
+ /// 添加转发过滤地址
+ ///
+ ///
+ ///
+ public JT808HttpResponse AddTransmitAddress(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ JT808IPAddressDto jT808IPAddressDto = JsonConvert.DeserializeObject(request.Json);
+ return CreateJT808HttpResponse(jT808TransmitAddressFilterService.Add(jT808IPAddressDto));
+ }
+
+ ///
+ /// 删除转发过滤地址(不能删除在网关服务器配置文件配的地址)
+ ///
+ ///
+ ///
+ public JT808HttpResponse RemoveTransmitAddress(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ JT808IPAddressDto jT808IPAddressDto = JsonConvert.DeserializeObject(request.Json);
+ return CreateJT808HttpResponse(jT808TransmitAddressFilterService.Remove(jT808IPAddressDto));
+ }
+
+ ///
+ /// 获取转发过滤地址信息集合
+ ///
+ ///
+ ///
+ public JT808HttpResponse GetTransmitAll(JT808HttpRequest request)
+ {
+ return CreateJT808HttpResponse(jT808TransmitAddressFilterService.GetAll());
+ }
+
+ ///
+ /// 获取Tcp包计数器
+ ///
+ ///
+ ///
+ public JT808HttpResponse GetTcpAtomicCounter(JT808HttpRequest request)
+ {
+ JT808AtomicCounterDto jT808AtomicCounterDto = new JT808AtomicCounterDto();
+ jT808AtomicCounterDto.MsgFailCount = jT808TcpAtomicCounterService.MsgFailCount;
+ jT808AtomicCounterDto.MsgSuccessCount = jT808TcpAtomicCounterService.MsgSuccessCount;
+ return CreateJT808HttpResponse(new JT808ResultDto
+ {
+ Code = JT808ResultCode.Ok,
+ Data = jT808AtomicCounterDto
+ });
+ }
+ ///
+ /// 获取Udp包计数器
+ ///
+ ///
+ ///
+ public JT808HttpResponse GetUdpAtomicCounter(JT808HttpRequest request)
+ {
+ JT808AtomicCounterDto jT808AtomicCounterDto = new JT808AtomicCounterDto();
+ jT808AtomicCounterDto.MsgFailCount = jT808UdpAtomicCounterService.MsgFailCount;
+ jT808AtomicCounterDto.MsgSuccessCount = jT808UdpAtomicCounterService.MsgSuccessCount;
+ return CreateJT808HttpResponse(new JT808ResultDto
+ {
+ Code = JT808ResultCode.Ok,
+ Data = jT808AtomicCounterDto
+ });
+ }
+
+ ///
+ /// 基于Tcp的统一下发信息
+ ///
+ ///
+ ///
+ public JT808HttpResponse UnificationTcpSend(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ JT808UnificationSendRequestDto jT808UnificationSendRequestDto = JsonConvert.DeserializeObject(request.Json);
+ var result = jT808UnificationTcpSendService.Send(jT808UnificationSendRequestDto.TerminalPhoneNo, jT808UnificationSendRequestDto.Data);
+ return CreateJT808HttpResponse(result);
+ }
+
+ ///
+ /// 基于Udp的统一下发信息
+ ///
+ ///
+ ///
+ public JT808HttpResponse UnificationUdpSend(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ JT808UnificationSendRequestDto jT808UnificationSendRequestDto = JsonConvert.DeserializeObject(request.Json);
+ var result = jT808UnificationUdpSendService.Send(jT808UnificationSendRequestDto.TerminalPhoneNo, jT808UnificationSendRequestDto.Data);
+ return CreateJT808HttpResponse(result);
+ }
+
+ protected virtual void InitTcpRoute()
+ {
+ CreateRoute($"{transmitPrefix}/Add", AddTransmitAddress);
+ CreateRoute($"{transmitPrefix}/Remove", RemoveTransmitAddress);
+ CreateRoute($"{transmitPrefix}/GetAll", GetTransmitAll);
+ CreateRoute($"GetTcpAtomicCounter", GetTcpAtomicCounter);
+ CreateRoute($"{sessionRoutePrefix}/GetAll", GetSessionAll);
+ CreateRoute($"{sessionRoutePrefix}/RemoveByTerminalPhoneNo", RemoveByTerminalPhoneNo);
+ CreateRoute($"UnificationTcpSend", UnificationTcpSend);
+ }
+
+ protected virtual void InitUdpRoute()
+ {
+ CreateRoute($"GetUdpAtomicCounter", GetUdpAtomicCounter);
+ CreateRoute($"UnificationUdpSend", UnificationUdpSend);
}
}
}
diff --git a/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj b/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
index ccfddaa..60a8945 100644
--- a/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
+++ b/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
@@ -2,6 +2,19 @@
netstandard2.0
+ 7.1
+ Copyright 2018.
+ SmallChi
+ JT808.DotNetty.WebApi
+ JT808.DotNetty.WebApi
+ 基于DotNetty实现的JT808DotNetty的WebApi服务
+ 基于DotNetty实现的JT808DotNetty的WebApi服务
+ false
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ true
+ 1.0.0
diff --git a/src/JT808.DotNetty.sln b/src/JT808.DotNetty.sln
index 7183ebb..79aa084 100644
--- a/src/JT808.DotNetty.sln
+++ b/src/JT808.DotNetty.sln
@@ -1,12 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28307.168
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28407.52
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty", "JT808.DotNetty\JT808.DotNetty.csproj", "{80C7F67E-6B7C-4178-8726-ADD3695622DD}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Test", "JT808.DotNetty.Test\JT808.DotNetty.Test.csproj", "{7315D030-16CA-4AC8-B892-720F3D78C651}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol", "JT808.Protocol\src\JT808.Protocol\JT808.Protocol.csproj", "{9FCA2EE9-8253-41AA-A64C-9883413864F9}"
@@ -17,13 +13,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Codecs", "JT
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Core", "JT808.DotNetty.Core\JT808.DotNetty.Core.csproj", "{67C5DC72-0004-48B3-BB5A-9CB7069B4F02}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Abstractions", "JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj", "{4DCF33C0-67C5-4179-AF1E-4E919F9F856D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Abstractions", "JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj", "{4DCF33C0-67C5-4179-AF1E-4E919F9F856D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{3BD7FF02-8516-4A77-A385-9FDCDD792E22}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Tcp", "JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj", "{330CD783-5564-4083-ABFC-573CDC369F50}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Tcp", "JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj", "{330CD783-5564-4083-ABFC-573CDC369F50}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.WebApi", "JT808.DotNetty.WebApi\JT808.DotNetty.WebApi.csproj", "{B783DE53-CE2A-4225-921F-04E5E57B28F3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.WebApi", "JT808.DotNetty.WebApi\JT808.DotNetty.WebApi.csproj", "{B783DE53-CE2A-4225-921F-04E5E57B28F3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -31,14 +27,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {80C7F67E-6B7C-4178-8726-ADD3695622DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {80C7F67E-6B7C-4178-8726-ADD3695622DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {80C7F67E-6B7C-4178-8726-ADD3695622DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {80C7F67E-6B7C-4178-8726-ADD3695622DD}.Release|Any CPU.Build.0 = Release|Any CPU
- {7315D030-16CA-4AC8-B892-720F3D78C651}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7315D030-16CA-4AC8-B892-720F3D78C651}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7315D030-16CA-4AC8-B892-720F3D78C651}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7315D030-16CA-4AC8-B892-720F3D78C651}.Release|Any CPU.Build.0 = Release|Any CPU
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -72,8 +60,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {80C7F67E-6B7C-4178-8726-ADD3695622DD} = {B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}
- {7315D030-16CA-4AC8-B892-720F3D78C651} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22}
{9FCA2EE9-8253-41AA-A64C-9883413864F9} = {B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution