提交示例代码
This commit is contained in:
BIN
聊天系统课程代码/Server/.DS_Store
vendored
Normal file
BIN
聊天系统课程代码/Server/.DS_Store
vendored
Normal file
Binary file not shown.
34
聊天系统课程代码/Server/Entity/AssemblyHelper.cs
Normal file
34
聊天系统课程代码/Server/Entity/AssemblyHelper.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System.Runtime.Loader;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public static class AssemblyHelper
|
||||
{
|
||||
private const string HotfixDll = "Hotfix";
|
||||
private static AssemblyLoadContext? _context = null;
|
||||
|
||||
public static System.Reflection.Assembly[] Assemblies
|
||||
{
|
||||
get
|
||||
{
|
||||
var assemblies = new System.Reflection.Assembly[2];
|
||||
assemblies[0] = typeof(AssemblyHelper).Assembly;
|
||||
assemblies[1] = LoadHotfixAssembly();
|
||||
return assemblies;
|
||||
}
|
||||
}
|
||||
|
||||
private static System.Reflection.Assembly LoadHotfixAssembly()
|
||||
{
|
||||
if (_context != null)
|
||||
{
|
||||
_context.Unload();
|
||||
System.GC.Collect();
|
||||
}
|
||||
|
||||
_context = new AssemblyLoadContext(HotfixDll, true);
|
||||
var dllBytes = File.ReadAllBytes(Path.Combine(Environment.CurrentDirectory, $"{HotfixDll}.dll"));
|
||||
var pdbBytes = File.ReadAllBytes(Path.Combine(Environment.CurrentDirectory, $"{HotfixDll}.pdb"));
|
||||
return _context.LoadFromStream(new MemoryStream(dllBytes), new MemoryStream(pdbBytes));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
/// <summary>
|
||||
/// 聊天中控中心
|
||||
/// 1、申请、创建、解散聊天频道。
|
||||
/// 2、管理聊天频道成员。
|
||||
/// 3、根据频道ID找到对应的频道。
|
||||
/// </summary>
|
||||
public class ChatChannelCenterComponent : Entity
|
||||
{
|
||||
public readonly Dictionary<long, ChatChannelComponent> Channels = new();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using Fantasy.Entitas;
|
||||
// ReSharper disable ArrangeObjectCreationWhenTypeEvident
|
||||
// ReSharper disable UsageOfDefaultStructEquality
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
/// <summary>
|
||||
/// 聊天频道实体
|
||||
/// 1、根据频道内的玩家进行广播聊天信息。
|
||||
/// 2、当前频道如果没有玩家的话,则自动销毁。
|
||||
/// 3、存放当前频道的玩家信息。
|
||||
/// </summary>
|
||||
public sealed class ChatChannelComponent : Entity
|
||||
{
|
||||
public readonly HashSet<long> Units = new HashSet<long>();
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class ChatUnitManageComponent : Entity
|
||||
{
|
||||
public readonly Dictionary<long, ChatUnit> Units = new();
|
||||
}
|
||||
49
聊天系统课程代码/Server/Entity/Chat/Enum/ChatChannelType.cs
Normal file
49
聊天系统课程代码/Server/Entity/Chat/Enum/ChatChannelType.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
namespace Fantasy;
|
||||
|
||||
/// <summary>
|
||||
/// 聊天频道类型
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum ChatChannelType
|
||||
{
|
||||
None = 0,
|
||||
World = 1 << 1, // 世界频道
|
||||
Private = 1 << 2, // 私聊频道
|
||||
System = 1 << 3, // 系统频道
|
||||
Broadcast = 1 << 4, // 广播频道
|
||||
Notice = 1 << 5, // 公告频道
|
||||
Team = 1 << 6, // 队伍频道
|
||||
Near = 1 << 7, // 附近频道
|
||||
CurrentMap = 1 << 8, // 当前地图频道
|
||||
|
||||
// 所有频道
|
||||
All = World | Private | System | Broadcast | Notice | Team | Near,
|
||||
// 其他聊天栏显示的频道
|
||||
Display = World | Private | System | Broadcast | Notice | Team | Near | CurrentMap
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 聊天节点类型
|
||||
/// </summary>
|
||||
public enum ChatNodeType
|
||||
{
|
||||
None = 0,
|
||||
Position = 1, // 位置节点
|
||||
OpenUI = 2, // 打开UI节点
|
||||
Link = 3, // 链接节点
|
||||
Item = 4, // 物品节点
|
||||
Text = 5, // 文本节点
|
||||
Image = 6, // 图片节点
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 聊天节点事件类型
|
||||
/// </summary>
|
||||
public enum ChatNodeEvent
|
||||
{
|
||||
None = 0,
|
||||
OpenUI = 1, // 打开UI节点
|
||||
OpenLink = 2, // 点击链接节点
|
||||
UseItem = 3, // 使用物品节点
|
||||
Position = 4, // 位置节点
|
||||
}
|
||||
15
聊天系统课程代码/Server/Entity/Chat/Model/ChatInfoTree.cs
Normal file
15
聊天系统课程代码/Server/Entity/Chat/Model/ChatInfoTree.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Runtime.Serialization;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using Newtonsoft.Json;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public partial class ChatInfoTree
|
||||
{
|
||||
[BsonIgnore]
|
||||
[JsonIgnore]
|
||||
[ProtoIgnore]
|
||||
[IgnoreDataMember]
|
||||
public Scene Scene { get; set; }
|
||||
}
|
||||
11
聊天系统课程代码/Server/Entity/Chat/Model/ChatUnit.cs
Normal file
11
聊天系统课程代码/Server/Entity/Chat/Model/ChatUnit.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class ChatUnit : Entity
|
||||
{
|
||||
public string UserName;
|
||||
public long GateRouteId;
|
||||
public readonly Dictionary<long, ChatChannelComponent> Channels = new();
|
||||
public readonly Dictionary<int, long> SendTime = new Dictionary<int, long>();
|
||||
}
|
||||
13
聊天系统课程代码/Server/Entity/Entity.csproj
Normal file
13
聊天系统课程代码/Server/Entity/Entity.csproj
Normal file
@@ -0,0 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Fantasy-Net" Version="2024.1.17" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,8 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class GateUnitFlagComponent : Entity
|
||||
{
|
||||
public long GateUnitId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class GateUnitManageComponent : Entity
|
||||
{
|
||||
public readonly Dictionary<long, GateUnit> Units = new Dictionary<long, GateUnit>();
|
||||
public readonly Dictionary<string, GateUnit> UnitsByUserName = new Dictionary<string, GateUnit>();
|
||||
}
|
||||
11
聊天系统课程代码/Server/Entity/Gate/Model/GateUnit.cs
Normal file
11
聊天系统课程代码/Server/Entity/Gate/Model/GateUnit.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Network;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class GateUnit : Entity
|
||||
{
|
||||
public EntityReference<Session> Session;
|
||||
public string UserName { get; set; }
|
||||
public readonly Dictionary<int, long> Routes = new Dictionary<int, long>();
|
||||
}
|
||||
27
聊天系统课程代码/Server/Entity/Generate/CustomExport/SceneType.cs
Normal file
27
聊天系统课程代码/Server/Entity/Generate/CustomExport/SceneType.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
// 生成器自动生成,请不要手动编辑。
|
||||
public static class SceneType
|
||||
{
|
||||
public const int Authentication = 1;
|
||||
public const int Addressable = 2;
|
||||
public const int Gate = 3;
|
||||
public const int Map = 4;
|
||||
public const int CopyDispatcher = 5;
|
||||
public const int CopyManager = 6;
|
||||
public const int Copy = 7;
|
||||
public const int Chat = 8;
|
||||
|
||||
public static readonly Dictionary<string, int> SceneTypeDic = new Dictionary<string, int>()
|
||||
{
|
||||
{ "Authentication", 1 },
|
||||
{ "Addressable", 2 },
|
||||
{ "Gate", 3 },
|
||||
{ "Map", 4 },
|
||||
{ "CopyDispatcher", 5 },
|
||||
{ "CopyManager", 6 },
|
||||
{ "Copy", 7 },
|
||||
{ "Chat", 8 },
|
||||
};
|
||||
}
|
||||
}
|
||||
194
聊天系统课程代码/Server/Entity/Generate/NetworkProtocol/InnerMessage.cs
Normal file
194
聊天系统课程代码/Server/Entity/Generate/NetworkProtocol/InnerMessage.cs
Normal file
@@ -0,0 +1,194 @@
|
||||
using ProtoBuf;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using Fantasy;
|
||||
using Fantasy.Network.Interface;
|
||||
using Fantasy.Serialize;
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable RedundantUsingDirective
|
||||
// ReSharper disable RedundantOverriddenMember
|
||||
// ReSharper disable PartialTypeWithSinglePart
|
||||
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
// ReSharper disable CheckNamespace
|
||||
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Fantasy
|
||||
{
|
||||
/// <summary>
|
||||
/// Gate登录到Chat服务器
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class G2Chat_LoginRequest : AMessage, IRouteRequest, IProto
|
||||
{
|
||||
public static G2Chat_LoginRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<G2Chat_LoginRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
UserName = default;
|
||||
UnitId = default;
|
||||
GateRouteId = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<G2Chat_LoginRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Chat2G_LoginResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return InnerOpcode.G2Chat_LoginRequest; }
|
||||
[ProtoMember(1)]
|
||||
public string UserName { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public long UnitId { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public long GateRouteId { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Chat2G_LoginResponse : AMessage, IRouteResponse, IProto
|
||||
{
|
||||
public static Chat2G_LoginResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Chat2G_LoginResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
ChatRouteId = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Chat2G_LoginResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return InnerOpcode.Chat2G_LoginResponse; }
|
||||
[ProtoMember(1)]
|
||||
public long ChatRouteId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gate通知Chat服务器下线
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class G2Chat_OfflineRequest : AMessage, IRouteRequest, IProto
|
||||
{
|
||||
public static G2Chat_OfflineRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<G2Chat_OfflineRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<G2Chat_OfflineRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Chat2G_OfflineResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return InnerOpcode.G2Chat_OfflineRequest; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Chat2G_OfflineResponse : AMessage, IRouteResponse, IProto
|
||||
{
|
||||
public static Chat2G_OfflineResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Chat2G_OfflineResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Chat2G_OfflineResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return InnerOpcode.Chat2G_OfflineResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Chat通知Gate发送一个全服广播的聊天信息
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class Chat2G_ChatMessage : AMessage, IRouteMessage, IProto
|
||||
{
|
||||
public static Chat2G_ChatMessage Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Chat2G_ChatMessage>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatInfoTree = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Chat2G_ChatMessage>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return InnerOpcode.Chat2G_ChatMessage; }
|
||||
[ProtoMember(1)]
|
||||
public ChatInfoTree ChatInfoTree { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 其他服务器发送聊天消息到Chat
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class Other2Chat_ChatMessage : AMessage, IRouteMessage, IProto
|
||||
{
|
||||
public static Other2Chat_ChatMessage Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Other2Chat_ChatMessage>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatInfoTree = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Other2Chat_ChatMessage>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return InnerOpcode.Other2Chat_ChatMessage; }
|
||||
[ProtoMember(1)]
|
||||
public ChatInfoTree ChatInfoTree { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gate登录到Map服务器
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class G2M_LoginRequest : AMessage, IRouteRequest, IProto
|
||||
{
|
||||
public static G2M_LoginRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<G2M_LoginRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatUnitRouteId = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<G2M_LoginRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public M2G_LoginResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return InnerOpcode.G2M_LoginRequest; }
|
||||
[ProtoMember(1)]
|
||||
public long ChatUnitRouteId { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class M2G_LoginResponse : AMessage, IRouteResponse, IProto
|
||||
{
|
||||
public static M2G_LoginResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<M2G_LoginResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
MapRouteId = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<M2G_LoginResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return InnerOpcode.M2G_LoginResponse; }
|
||||
[ProtoMember(1)]
|
||||
public long MapRouteId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
public static partial class InnerOpcode
|
||||
{
|
||||
public const uint G2Chat_LoginRequest = 1073751825;
|
||||
public const uint Chat2G_LoginResponse = 1207969553;
|
||||
public const uint G2Chat_OfflineRequest = 1073751826;
|
||||
public const uint Chat2G_OfflineResponse = 1207969554;
|
||||
public const uint Chat2G_ChatMessage = 939534097;
|
||||
public const uint Other2Chat_ChatMessage = 939534098;
|
||||
public const uint G2M_LoginRequest = 1073751827;
|
||||
public const uint M2G_LoginResponse = 1207969555;
|
||||
}
|
||||
}
|
||||
327
聊天系统课程代码/Server/Entity/Generate/NetworkProtocol/OuterMessage.cs
Normal file
327
聊天系统课程代码/Server/Entity/Generate/NetworkProtocol/OuterMessage.cs
Normal file
@@ -0,0 +1,327 @@
|
||||
using ProtoBuf;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using Fantasy;
|
||||
using Fantasy.Network.Interface;
|
||||
using Fantasy.Serialize;
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable RedundantUsingDirective
|
||||
// ReSharper disable RedundantOverriddenMember
|
||||
// ReSharper disable PartialTypeWithSinglePart
|
||||
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
// ReSharper disable CheckNamespace
|
||||
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Fantasy
|
||||
{
|
||||
/// <summary>
|
||||
/// 登录游戏
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2G_LoginRequest : AMessage, IRequest, IProto
|
||||
{
|
||||
public static C2G_LoginRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2G_LoginRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
UserName = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2G_LoginRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public G2C_LoginResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2G_LoginRequest; }
|
||||
[ProtoMember(1)]
|
||||
public string UserName { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class G2C_LoginResponse : AMessage, IResponse, IProto
|
||||
{
|
||||
public static G2C_LoginResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<G2C_LoginResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<G2C_LoginResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.G2C_LoginResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 退出游戏
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2G_ExitRequest : AMessage, IRequest, IProto
|
||||
{
|
||||
public static C2G_ExitRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2G_ExitRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2G_ExitRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public G2C_ExitResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2G_ExitRequest; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class G2C_ExitResponse : AMessage, IResponse, IProto
|
||||
{
|
||||
public static G2C_ExitResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<G2C_ExitResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<G2C_ExitResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.G2C_ExitResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 发送一个聊天消息给Chat服务器,中间是经过Gate中转的
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Chat_SendMessageRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Chat_SendMessageRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Chat_SendMessageRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatInfoTree = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Chat_SendMessageRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Chat2C_SendMessageResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Chat_SendMessageRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.ChatRoute;
|
||||
[ProtoMember(1)]
|
||||
public ChatInfoTree ChatInfoTree { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Chat2C_SendMessageResponse : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Chat2C_SendMessageResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Chat2C_SendMessageResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Chat2C_SendMessageResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Chat2C_SendMessageResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Chat2C_Message : AMessage, ICustomRouteMessage, IProto
|
||||
{
|
||||
public static Chat2C_Message Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Chat2C_Message>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatInfoTree = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Chat2C_Message>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Chat2C_Message; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.ChatRoute;
|
||||
[ProtoMember(1)]
|
||||
public ChatInfoTree ChatInfoTree { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 聊天消息树
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class ChatInfoTree : AMessage, IProto
|
||||
{
|
||||
public static ChatInfoTree Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<ChatInfoTree>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatChannelType = default;
|
||||
ChatChannelId = default;
|
||||
UnitId = default;
|
||||
UserName = default;
|
||||
Target.Clear();
|
||||
Node.Clear();
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<ChatInfoTree>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public int ChatChannelType { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public long ChatChannelId { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public long UnitId { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public string UserName { get; set; }
|
||||
[ProtoMember(5)]
|
||||
public List<long> Target = new List<long>();
|
||||
[ProtoMember(6)]
|
||||
public List<ChatInfoNode> Node = new List<ChatInfoNode>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 聊天信息节点
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class ChatInfoNode : AMessage, IProto
|
||||
{
|
||||
public static ChatInfoNode Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<ChatInfoNode>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ChatNodeType = default;
|
||||
ChatNodeEvent = default;
|
||||
Content = default;
|
||||
Color = default;
|
||||
Data = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<ChatInfoNode>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public int ChatNodeType { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public int ChatNodeEvent { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public string Content { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public string Color { get; set; }
|
||||
[ProtoMember(5)]
|
||||
public byte[] Data { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 聊天位置信息节点
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class ChatPositionNode : AMessage, IProto
|
||||
{
|
||||
public static ChatPositionNode Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<ChatPositionNode>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MapName = default;
|
||||
PosX = default;
|
||||
PosY = default;
|
||||
PosZ = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<ChatPositionNode>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public string MapName { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public float PosX { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public float PosY { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public float PosZ { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 聊天位置信息节点
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class ChatOpenUINode : AMessage, IProto
|
||||
{
|
||||
public static ChatOpenUINode Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<ChatOpenUINode>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
UIName = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<ChatOpenUINode>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public string UIName { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 聊天连接信息节点
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class ChatLinkNode : AMessage, IProto
|
||||
{
|
||||
public static ChatLinkNode Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<ChatLinkNode>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
Link = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<ChatLinkNode>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public string Link { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 装备信息实体
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class Item : AMessage, IProto
|
||||
{
|
||||
public static Item Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Item>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
Level = default;
|
||||
Name = default;
|
||||
HP = default;
|
||||
MP = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Item>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public string Level { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public string Name { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public string HP { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public string MP { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
public static partial class OuterOpcode
|
||||
{
|
||||
public const uint C2G_LoginRequest = 268445457;
|
||||
public const uint G2C_LoginResponse = 402663185;
|
||||
public const uint C2G_ExitRequest = 268445458;
|
||||
public const uint G2C_ExitResponse = 402663186;
|
||||
public const uint C2Chat_SendMessageRequest = 2281711377;
|
||||
public const uint Chat2C_SendMessageResponse = 2415929105;
|
||||
public const uint Chat2C_Message = 2147493649;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
// Route协议定义(需要定义1000以上、因为1000以内的框架预留)
|
||||
public static class RouteType
|
||||
{
|
||||
public const int GateRoute = 1001; // Gate
|
||||
public const int ChatRoute = 1002; // Chat
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class EntityTimeoutComponent : Entity
|
||||
{
|
||||
public long TimerId;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Serialize;
|
||||
using ProtoBuf.Serializers;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public class SerializerComponent : Entity
|
||||
{
|
||||
public ISerialize Serialize;
|
||||
public readonly MemoryStreamBufferPool BufferPool = new MemoryStreamBufferPool();
|
||||
}
|
||||
311
聊天系统课程代码/Server/Entity/bin/Debug/net8.0/Entity.deps.json
Normal file
311
聊天系统课程代码/Server/Entity/bin/Debug/net8.0/Entity.deps.json
Normal file
@@ -0,0 +1,311 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v8.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"Entity/1.0.0": {
|
||||
"dependencies": {
|
||||
"Fantasy-Net": "2024.1.17"
|
||||
},
|
||||
"runtime": {
|
||||
"Entity.dll": {}
|
||||
}
|
||||
},
|
||||
"CommandLineParser/2.9.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/CommandLine.dll": {
|
||||
"assemblyVersion": "2.9.1.0",
|
||||
"fileVersion": "2.9.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.Registry": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"assemblyVersion": "1.6.1.0",
|
||||
"fileVersion": "1.6.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"dependencies": {
|
||||
"CommandLineParser": "2.9.1",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"MongoDB.Driver": "3.0.0",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"System.IO.Pipelines": "8.0.0",
|
||||
"protobuf-net": "3.2.45"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Fantasy-Net.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Security.AccessControl": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.5",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"dependencies": {
|
||||
"DnsClient": "1.6.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "2.0.0",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"SharpCompress": "0.30.1",
|
||||
"Snappier": "1.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"ZstdSharp.Port": "0.7.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "13.0.0.0",
|
||||
"fileVersion": "13.0.3.27908"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"dependencies": {
|
||||
"protobuf-net.Core": "3.2.45"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.2.45.36865"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"dependencies": {
|
||||
"System.Collections.Immutable": "7.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.Core.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.2.45.36865"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"runtime": {
|
||||
"lib/net5.0/SharpCompress.dll": {
|
||||
"assemblyVersion": "0.30.1.0",
|
||||
"fileVersion": "0.30.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"runtime": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {},
|
||||
"System.Collections.Immutable/7.0.0": {},
|
||||
"System.IO.Pipelines/8.0.0": {},
|
||||
"System.Memory/4.5.5": {},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"runtime": {
|
||||
"lib/net7.0/ZstdSharp.dll": {
|
||||
"assemblyVersion": "0.7.3.0",
|
||||
"fileVersion": "0.7.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Entity/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"CommandLineParser/2.9.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
|
||||
"path": "commandlineparser/2.9.1",
|
||||
"hashPath": "commandlineparser.2.9.1.nupkg.sha512"
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
|
||||
"path": "dnsclient/1.6.1",
|
||||
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-06mxvByfEvF/ELAiAjaea4aWI5IBbBDyH9sVdPxEOEEtpAbcguaiydUNi2CVBE+ppW+CYsznTXalN0Xk0vAMKQ==",
|
||||
"path": "fantasy-net/2024.1.17",
|
||||
"hashPath": "fantasy-net.2024.1.17.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
|
||||
"path": "microsoft.extensions.logging.abstractions/2.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
||||
"path": "microsoft.netcore.platforms/5.0.0",
|
||||
"hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||
"path": "microsoft.win32.registry/5.0.0",
|
||||
"hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-qnPRJ58HXDh7C4oxTf6YB7BJhlCGJIa6TMXhzImw6zk44lrAomQXTB6AtoQ5lNJbkyrgQcT7+smsKFMnXmLXhw==",
|
||||
"path": "mongodb.bson/3.0.0",
|
||||
"hashPath": "mongodb.bson.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-udcP8rOhyuhLDn3sGVdNUgQSXfKGPaIP4w09XVKf4xdy66YSXinhkIuQSuOeZVHdTFsG2PpUbRx2wyFm7E0EMg==",
|
||||
"path": "mongodb.driver/3.0.0",
|
||||
"hashPath": "mongodb.driver.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||
"path": "newtonsoft.json/13.0.3",
|
||||
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
|
||||
"path": "protobuf-net/3.2.45",
|
||||
"hashPath": "protobuf-net.3.2.45.nupkg.sha512"
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
|
||||
"path": "protobuf-net.core/3.2.45",
|
||||
"hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
|
||||
"path": "sharpcompress/0.30.1",
|
||||
"hashPath": "sharpcompress.0.30.1.nupkg.sha512"
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
|
||||
"path": "snappier/1.0.0",
|
||||
"hashPath": "snappier.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
|
||||
"path": "system.collections.immutable/7.0.0",
|
||||
"hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.IO.Pipelines/8.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
|
||||
"path": "system.io.pipelines/8.0.0",
|
||||
"hashPath": "system.io.pipelines.8.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
|
||||
"path": "system.memory/4.5.5",
|
||||
"hashPath": "system.memory.4.5.5.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
|
||||
"path": "system.security.accesscontrol/5.0.0",
|
||||
"hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
|
||||
"path": "system.security.principal.windows/5.0.0",
|
||||
"hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
|
||||
"path": "zstdsharp.port/0.7.3",
|
||||
"hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
聊天系统课程代码/Server/Entity/bin/Debug/net8.0/Entity.dll
Normal file
BIN
聊天系统课程代码/Server/Entity/bin/Debug/net8.0/Entity.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Entity/bin/Debug/net8.0/Entity.pdb
Normal file
BIN
聊天系统课程代码/Server/Entity/bin/Debug/net8.0/Entity.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
|
||||
@@ -0,0 +1,22 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Entity")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Entity")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Entity")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
b7ceabf79c524d6ee0475da740239235018950a5f2c92d51c77f832004e64e6c
|
||||
@@ -0,0 +1,15 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net8.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Entity
|
||||
build_property.ProjectDir = /Users/fantasy/Code/ServerLessions/Chat/Server/Entity/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 8.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/Entity.assets.cache
Normal file
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/Entity.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
fcf69390a646cc62907e4e23c3937a1cd98d98ea8d71ba412b22b845c334256c
|
||||
@@ -0,0 +1,12 @@
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/bin/Debug/net8.0/Entity.deps.json
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/bin/Debug/net8.0/Entity.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/bin/Debug/net8.0/Entity.pdb
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.csproj.AssemblyReference.cache
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.AssemblyInfoInputs.cache
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.AssemblyInfo.cs
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.csproj.CoreCompileInputs.cache
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/refint/Entity.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/Entity.pdb
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Entity/obj/Debug/net8.0/ref/Entity.dll
|
||||
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/Entity.dll
Normal file
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/Entity.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/Entity.pdb
Normal file
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/Entity.pdb
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/ref/Entity.dll
Normal file
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/ref/Entity.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/refint/Entity.dll
Normal file
BIN
聊天系统课程代码/Server/Entity/obj/Debug/net8.0/refint/Entity.dll
Normal file
Binary file not shown.
73
聊天系统课程代码/Server/Entity/obj/Entity.csproj.nuget.dgspec.json
Normal file
73
聊天系统课程代码/Server/Entity/obj/Entity.csproj.nuget.dgspec.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"projectName": "Entity",
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"packagesPath": "/Users/fantasy/.nuget/packages/",
|
||||
"outputPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"UsingMicrosoftNETSdk": false,
|
||||
"configFilePaths": [
|
||||
"/Users/fantasy/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "all"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"dependencies": {
|
||||
"Fantasy-Net": {
|
||||
"target": "Package",
|
||||
"version": "[2024.1.17, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
聊天系统课程代码/Server/Entity/obj/Entity.csproj.nuget.g.props
Normal file
15
聊天系统课程代码/Server/Entity/obj/Entity.csproj.nuget.g.props
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/fantasy/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/fantasy/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/Users/fantasy/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
6
聊天系统课程代码/Server/Entity/obj/Entity.csproj.nuget.g.targets
Normal file
6
聊天系统课程代码/Server/Entity/obj/Entity.csproj.nuget.g.targets
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)fantasy-net/2024.1.17/buildTransitive/Fantasy-Net.targets" Condition="Exists('$(NuGetPackageRoot)fantasy-net/2024.1.17/buildTransitive/Fantasy-Net.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
949
聊天系统课程代码/Server/Entity/obj/project.assets.json
Normal file
949
聊天系统课程代码/Server/Entity/obj/project.assets.json
Normal file
@@ -0,0 +1,949 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net8.0": {
|
||||
"CommandLineParser/2.9.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/CommandLine.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/CommandLine.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.Registry": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"CommandLineParser": "2.9.1",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"MongoDB.Driver": "3.0.0",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"System.IO.Pipelines": "8.0.0",
|
||||
"protobuf-net": "3.2.45"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net8.0/Fantasy-Net.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Fantasy-Net.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
],
|
||||
"build": {
|
||||
"buildTransitive/Fantasy-Net.targets": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard1.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.0/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Security.AccessControl": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"ref/netstandard2.0/Microsoft.Win32.Registry.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.5",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"DnsClient": "1.6.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "2.0.0",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"SharpCompress": "0.30.1",
|
||||
"Snappier": "1.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"ZstdSharp.Port": "0.7.3"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"protobuf-net.Core": "3.2.45"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/protobuf-net.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Collections.Immutable": "7.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/protobuf-net.Core.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.Core.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net5.0/SharpCompress.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/SharpCompress.dll": {}
|
||||
}
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net7.0/System.Collections.Immutable.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Collections.Immutable.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.IO.Pipelines/8.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.1/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"ref/netstandard2.0/System.Security.AccessControl.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Security.AccessControl.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp3.0/System.Security.Principal.Windows.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Security.Principal.Windows.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "unix"
|
||||
},
|
||||
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net7.0/ZstdSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/ZstdSharp.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"CommandLineParser/2.9.1": {
|
||||
"sha512": "OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
|
||||
"type": "package",
|
||||
"path": "commandlineparser/2.9.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"CommandLine20.png",
|
||||
"License.md",
|
||||
"README.md",
|
||||
"commandlineparser.2.9.1.nupkg.sha512",
|
||||
"commandlineparser.nuspec",
|
||||
"lib/net40/CommandLine.dll",
|
||||
"lib/net40/CommandLine.xml",
|
||||
"lib/net45/CommandLine.dll",
|
||||
"lib/net45/CommandLine.xml",
|
||||
"lib/net461/CommandLine.dll",
|
||||
"lib/net461/CommandLine.xml",
|
||||
"lib/netstandard2.0/CommandLine.dll",
|
||||
"lib/netstandard2.0/CommandLine.xml"
|
||||
]
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"sha512": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
|
||||
"type": "package",
|
||||
"path": "dnsclient/1.6.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"dnsclient.1.6.1.nupkg.sha512",
|
||||
"dnsclient.nuspec",
|
||||
"icon.png",
|
||||
"lib/net45/DnsClient.dll",
|
||||
"lib/net45/DnsClient.xml",
|
||||
"lib/net471/DnsClient.dll",
|
||||
"lib/net471/DnsClient.xml",
|
||||
"lib/net5.0/DnsClient.dll",
|
||||
"lib/net5.0/DnsClient.xml",
|
||||
"lib/netstandard1.3/DnsClient.dll",
|
||||
"lib/netstandard1.3/DnsClient.xml",
|
||||
"lib/netstandard2.0/DnsClient.dll",
|
||||
"lib/netstandard2.0/DnsClient.xml",
|
||||
"lib/netstandard2.1/DnsClient.dll",
|
||||
"lib/netstandard2.1/DnsClient.xml"
|
||||
]
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"sha512": "06mxvByfEvF/ELAiAjaea4aWI5IBbBDyH9sVdPxEOEEtpAbcguaiydUNi2CVBE+ppW+CYsznTXalN0Xk0vAMKQ==",
|
||||
"type": "package",
|
||||
"path": "fantasy-net/2024.1.17",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"buildTransitive/Fantasy-Net.targets",
|
||||
"fantasy-net.2024.1.17.nupkg.sha512",
|
||||
"fantasy-net.nuspec",
|
||||
"icon.png",
|
||||
"lib/net8.0/Fantasy-Net.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"sha512": "6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.logging.abstractions/2.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
||||
"microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.logging.abstractions.nuspec"
|
||||
]
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
||||
"type": "package",
|
||||
"path": "microsoft.netcore.platforms/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/netstandard1.0/_._",
|
||||
"microsoft.netcore.platforms.5.0.0.nupkg.sha512",
|
||||
"microsoft.netcore.platforms.nuspec",
|
||||
"runtime.json",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"sha512": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||
"type": "package",
|
||||
"path": "microsoft.win32.registry/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net46/Microsoft.Win32.Registry.dll",
|
||||
"lib/net461/Microsoft.Win32.Registry.dll",
|
||||
"lib/net461/Microsoft.Win32.Registry.xml",
|
||||
"lib/netstandard1.3/Microsoft.Win32.Registry.dll",
|
||||
"lib/netstandard2.0/Microsoft.Win32.Registry.dll",
|
||||
"lib/netstandard2.0/Microsoft.Win32.Registry.xml",
|
||||
"microsoft.win32.registry.5.0.0.nupkg.sha512",
|
||||
"microsoft.win32.registry.nuspec",
|
||||
"ref/net46/Microsoft.Win32.Registry.dll",
|
||||
"ref/net461/Microsoft.Win32.Registry.dll",
|
||||
"ref/net461/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/Microsoft.Win32.Registry.dll",
|
||||
"ref/netstandard1.3/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/de/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/es/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/it/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard2.0/Microsoft.Win32.Registry.dll",
|
||||
"ref/netstandard2.0/Microsoft.Win32.Registry.xml",
|
||||
"runtimes/win/lib/net46/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/net461/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/net461/Microsoft.Win32.Registry.xml",
|
||||
"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"sha512": "qnPRJ58HXDh7C4oxTf6YB7BJhlCGJIa6TMXhzImw6zk44lrAomQXTB6AtoQ5lNJbkyrgQcT7+smsKFMnXmLXhw==",
|
||||
"type": "package",
|
||||
"path": "mongodb.bson/3.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"lib/net472/MongoDB.Bson.dll",
|
||||
"lib/net472/MongoDB.Bson.xml",
|
||||
"lib/net6.0/MongoDB.Bson.dll",
|
||||
"lib/net6.0/MongoDB.Bson.xml",
|
||||
"lib/netstandard2.1/MongoDB.Bson.dll",
|
||||
"lib/netstandard2.1/MongoDB.Bson.xml",
|
||||
"mongodb.bson.3.0.0.nupkg.sha512",
|
||||
"mongodb.bson.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"sha512": "udcP8rOhyuhLDn3sGVdNUgQSXfKGPaIP4w09XVKf4xdy66YSXinhkIuQSuOeZVHdTFsG2PpUbRx2wyFm7E0EMg==",
|
||||
"type": "package",
|
||||
"path": "mongodb.driver/3.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"lib/net472/MongoDB.Driver.dll",
|
||||
"lib/net472/MongoDB.Driver.xml",
|
||||
"lib/net6.0/MongoDB.Driver.dll",
|
||||
"lib/net6.0/MongoDB.Driver.xml",
|
||||
"lib/netstandard2.1/MongoDB.Driver.dll",
|
||||
"lib/netstandard2.1/MongoDB.Driver.xml",
|
||||
"mongodb.driver.3.0.0.nupkg.sha512",
|
||||
"mongodb.driver.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||
"type": "package",
|
||||
"path": "newtonsoft.json/13.0.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.md",
|
||||
"README.md",
|
||||
"lib/net20/Newtonsoft.Json.dll",
|
||||
"lib/net20/Newtonsoft.Json.xml",
|
||||
"lib/net35/Newtonsoft.Json.dll",
|
||||
"lib/net35/Newtonsoft.Json.xml",
|
||||
"lib/net40/Newtonsoft.Json.dll",
|
||||
"lib/net40/Newtonsoft.Json.xml",
|
||||
"lib/net45/Newtonsoft.Json.dll",
|
||||
"lib/net45/Newtonsoft.Json.xml",
|
||||
"lib/net6.0/Newtonsoft.Json.dll",
|
||||
"lib/net6.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||
"newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"newtonsoft.json.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"sha512": "5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
|
||||
"type": "package",
|
||||
"path": "protobuf-net/3.2.45",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net462/protobuf-net.dll",
|
||||
"lib/net462/protobuf-net.xml",
|
||||
"lib/net6.0/protobuf-net.dll",
|
||||
"lib/net6.0/protobuf-net.xml",
|
||||
"lib/netstandard2.0/protobuf-net.dll",
|
||||
"lib/netstandard2.0/protobuf-net.xml",
|
||||
"lib/netstandard2.1/protobuf-net.dll",
|
||||
"lib/netstandard2.1/protobuf-net.xml",
|
||||
"protobuf-net.3.2.45.nupkg.sha512",
|
||||
"protobuf-net.nuspec",
|
||||
"protobuf-net.png",
|
||||
"readme.md"
|
||||
]
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"sha512": "PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
|
||||
"type": "package",
|
||||
"path": "protobuf-net.core/3.2.45",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net462/protobuf-net.Core.dll",
|
||||
"lib/net462/protobuf-net.Core.xml",
|
||||
"lib/net6.0/protobuf-net.Core.dll",
|
||||
"lib/net6.0/protobuf-net.Core.xml",
|
||||
"lib/netstandard2.0/protobuf-net.Core.dll",
|
||||
"lib/netstandard2.0/protobuf-net.Core.xml",
|
||||
"lib/netstandard2.1/protobuf-net.Core.dll",
|
||||
"lib/netstandard2.1/protobuf-net.Core.xml",
|
||||
"protobuf-net.core.3.2.45.nupkg.sha512",
|
||||
"protobuf-net.core.nuspec",
|
||||
"protobuf-net.png",
|
||||
"readme.md"
|
||||
]
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"sha512": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
|
||||
"type": "package",
|
||||
"path": "sharpcompress/0.30.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net461/SharpCompress.dll",
|
||||
"lib/net5.0/SharpCompress.dll",
|
||||
"lib/netcoreapp3.1/SharpCompress.dll",
|
||||
"lib/netstandard2.0/SharpCompress.dll",
|
||||
"lib/netstandard2.1/SharpCompress.dll",
|
||||
"sharpcompress.0.30.1.nupkg.sha512",
|
||||
"sharpcompress.nuspec"
|
||||
]
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"sha512": "rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
|
||||
"type": "package",
|
||||
"path": "snappier/1.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"COPYING.txt",
|
||||
"lib/net5.0/Snappier.dll",
|
||||
"lib/net5.0/Snappier.xml",
|
||||
"lib/netcoreapp3.0/Snappier.dll",
|
||||
"lib/netcoreapp3.0/Snappier.xml",
|
||||
"lib/netstandard2.0/Snappier.dll",
|
||||
"lib/netstandard2.0/Snappier.xml",
|
||||
"lib/netstandard2.1/Snappier.dll",
|
||||
"lib/netstandard2.1/Snappier.xml",
|
||||
"snappier.1.0.0.nupkg.sha512",
|
||||
"snappier.nuspec"
|
||||
]
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"sha512": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"type": "package",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/System.Buffers.dll",
|
||||
"lib/net461/System.Buffers.xml",
|
||||
"lib/netcoreapp2.0/_._",
|
||||
"lib/netstandard1.1/System.Buffers.dll",
|
||||
"lib/netstandard1.1/System.Buffers.xml",
|
||||
"lib/netstandard2.0/System.Buffers.dll",
|
||||
"lib/netstandard2.0/System.Buffers.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"ref/net45/System.Buffers.dll",
|
||||
"ref/net45/System.Buffers.xml",
|
||||
"ref/netcoreapp2.0/_._",
|
||||
"ref/netstandard1.1/System.Buffers.dll",
|
||||
"ref/netstandard1.1/System.Buffers.xml",
|
||||
"ref/netstandard2.0/System.Buffers.dll",
|
||||
"ref/netstandard2.0/System.Buffers.xml",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"system.buffers.4.5.1.nupkg.sha512",
|
||||
"system.buffers.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"sha512": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
|
||||
"type": "package",
|
||||
"path": "system.collections.immutable/7.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"README.md",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/net461/System.Collections.Immutable.targets",
|
||||
"buildTransitive/net462/_._",
|
||||
"buildTransitive/net6.0/_._",
|
||||
"buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets",
|
||||
"lib/net462/System.Collections.Immutable.dll",
|
||||
"lib/net462/System.Collections.Immutable.xml",
|
||||
"lib/net6.0/System.Collections.Immutable.dll",
|
||||
"lib/net6.0/System.Collections.Immutable.xml",
|
||||
"lib/net7.0/System.Collections.Immutable.dll",
|
||||
"lib/net7.0/System.Collections.Immutable.xml",
|
||||
"lib/netstandard2.0/System.Collections.Immutable.dll",
|
||||
"lib/netstandard2.0/System.Collections.Immutable.xml",
|
||||
"system.collections.immutable.7.0.0.nupkg.sha512",
|
||||
"system.collections.immutable.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.IO.Pipelines/8.0.0": {
|
||||
"sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
|
||||
"type": "package",
|
||||
"path": "system.io.pipelines/8.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/net461/System.IO.Pipelines.targets",
|
||||
"buildTransitive/net462/_._",
|
||||
"buildTransitive/net6.0/_._",
|
||||
"buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
|
||||
"lib/net462/System.IO.Pipelines.dll",
|
||||
"lib/net462/System.IO.Pipelines.xml",
|
||||
"lib/net6.0/System.IO.Pipelines.dll",
|
||||
"lib/net6.0/System.IO.Pipelines.xml",
|
||||
"lib/net7.0/System.IO.Pipelines.dll",
|
||||
"lib/net7.0/System.IO.Pipelines.xml",
|
||||
"lib/net8.0/System.IO.Pipelines.dll",
|
||||
"lib/net8.0/System.IO.Pipelines.xml",
|
||||
"lib/netstandard2.0/System.IO.Pipelines.dll",
|
||||
"lib/netstandard2.0/System.IO.Pipelines.xml",
|
||||
"system.io.pipelines.8.0.0.nupkg.sha512",
|
||||
"system.io.pipelines.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
|
||||
"type": "package",
|
||||
"path": "system.memory/4.5.5",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/System.Memory.dll",
|
||||
"lib/net461/System.Memory.xml",
|
||||
"lib/netcoreapp2.1/_._",
|
||||
"lib/netstandard1.1/System.Memory.dll",
|
||||
"lib/netstandard1.1/System.Memory.xml",
|
||||
"lib/netstandard2.0/System.Memory.dll",
|
||||
"lib/netstandard2.0/System.Memory.xml",
|
||||
"ref/netcoreapp2.1/_._",
|
||||
"system.memory.4.5.5.nupkg.sha512",
|
||||
"system.memory.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"sha512": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"type": "package",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net45/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/net45/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/net461/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/net461/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
|
||||
"system.runtime.compilerservices.unsafe.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
|
||||
"type": "package",
|
||||
"path": "system.security.accesscontrol/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net46/System.Security.AccessControl.dll",
|
||||
"lib/net461/System.Security.AccessControl.dll",
|
||||
"lib/net461/System.Security.AccessControl.xml",
|
||||
"lib/netstandard1.3/System.Security.AccessControl.dll",
|
||||
"lib/netstandard2.0/System.Security.AccessControl.dll",
|
||||
"lib/netstandard2.0/System.Security.AccessControl.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"ref/net46/System.Security.AccessControl.dll",
|
||||
"ref/net461/System.Security.AccessControl.dll",
|
||||
"ref/net461/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/System.Security.AccessControl.dll",
|
||||
"ref/netstandard1.3/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/de/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/es/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/fr/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/it/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/ja/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/ko/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/ru/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
|
||||
"ref/netstandard2.0/System.Security.AccessControl.dll",
|
||||
"ref/netstandard2.0/System.Security.AccessControl.xml",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"runtimes/win/lib/net46/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/net461/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/net461/System.Security.AccessControl.xml",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
|
||||
"runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/uap10.0.16299/_._",
|
||||
"system.security.accesscontrol.5.0.0.nupkg.sha512",
|
||||
"system.security.accesscontrol.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
|
||||
"type": "package",
|
||||
"path": "system.security.principal.windows/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net46/System.Security.Principal.Windows.dll",
|
||||
"lib/net461/System.Security.Principal.Windows.dll",
|
||||
"lib/net461/System.Security.Principal.Windows.xml",
|
||||
"lib/netstandard1.3/System.Security.Principal.Windows.dll",
|
||||
"lib/netstandard2.0/System.Security.Principal.Windows.dll",
|
||||
"lib/netstandard2.0/System.Security.Principal.Windows.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"ref/net46/System.Security.Principal.Windows.dll",
|
||||
"ref/net461/System.Security.Principal.Windows.dll",
|
||||
"ref/net461/System.Security.Principal.Windows.xml",
|
||||
"ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
|
||||
"ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/System.Security.Principal.Windows.dll",
|
||||
"ref/netstandard1.3/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard2.0/System.Security.Principal.Windows.dll",
|
||||
"ref/netstandard2.0/System.Security.Principal.Windows.xml",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
|
||||
"runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
|
||||
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
|
||||
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/uap10.0.16299/_._",
|
||||
"system.security.principal.windows.5.0.0.nupkg.sha512",
|
||||
"system.security.principal.windows.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"sha512": "U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
|
||||
"type": "package",
|
||||
"path": "zstdsharp.port/0.7.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net461/ZstdSharp.dll",
|
||||
"lib/net5.0/ZstdSharp.dll",
|
||||
"lib/net6.0/ZstdSharp.dll",
|
||||
"lib/net7.0/ZstdSharp.dll",
|
||||
"lib/netcoreapp3.1/ZstdSharp.dll",
|
||||
"lib/netstandard2.0/ZstdSharp.dll",
|
||||
"lib/netstandard2.1/ZstdSharp.dll",
|
||||
"zstdsharp.port.0.7.3.nupkg.sha512",
|
||||
"zstdsharp.port.nuspec"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net8.0": [
|
||||
"Fantasy-Net >= 2024.1.17"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/Users/fantasy/.nuget/packages/": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"projectName": "Entity",
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"packagesPath": "/Users/fantasy/.nuget/packages/",
|
||||
"outputPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"UsingMicrosoftNETSdk": false,
|
||||
"configFilePaths": [
|
||||
"/Users/fantasy/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "all"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"dependencies": {
|
||||
"Fantasy-Net": {
|
||||
"target": "Package",
|
||||
"version": "[2024.1.17, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
30
聊天系统课程代码/Server/Entity/obj/project.nuget.cache
Normal file
30
聊天系统课程代码/Server/Entity/obj/project.nuget.cache
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "bL6AX114Taw=",
|
||||
"success": true,
|
||||
"projectFilePath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"/Users/fantasy/.nuget/packages/commandlineparser/2.9.1/commandlineparser.2.9.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/dnsclient/1.6.1/dnsclient.1.6.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/fantasy-net/2024.1.17/fantasy-net.2024.1.17.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/microsoft.extensions.logging.abstractions/2.0.0/microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/microsoft.netcore.platforms/5.0.0/microsoft.netcore.platforms.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/microsoft.win32.registry/5.0.0/microsoft.win32.registry.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/mongodb.bson/3.0.0/mongodb.bson.3.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/mongodb.driver/3.0.0/mongodb.driver.3.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/protobuf-net/3.2.45/protobuf-net.3.2.45.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/protobuf-net.core/3.2.45/protobuf-net.core.3.2.45.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/sharpcompress/0.30.1/sharpcompress.0.30.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/snappier/1.0.0/snappier.1.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.buffers/4.5.1/system.buffers.4.5.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.collections.immutable/7.0.0/system.collections.immutable.7.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.io.pipelines/8.0.0/system.io.pipelines.8.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.memory/4.5.5/system.memory.4.5.5.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.runtime.compilerservices.unsafe/5.0.0/system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.security.accesscontrol/5.0.0/system.security.accesscontrol.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.security.principal.windows/5.0.0/system.security.principal.windows.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/zstdsharp.port/0.7.3/zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
1
聊天系统课程代码/Server/Entity/obj/project.packagespec.json
Normal file
1
聊天系统课程代码/Server/Entity/obj/project.packagespec.json
Normal file
@@ -0,0 +1 @@
|
||||
"restore":{"projectUniqueName":"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj","projectName":"Entity","projectPath":"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj","outputPath":"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/obj/","projectStyle":"PackageReference","UsingMicrosoftNETSdk":false,"originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"all"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Fantasy-Net":{"target":"Package","version":"[2024.1.17, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"}}
|
||||
@@ -0,0 +1 @@
|
||||
17324493181399999
|
||||
1
聊天系统课程代码/Server/Entity/obj/rider.project.restore.info
Normal file
1
聊天系统课程代码/Server/Entity/obj/rider.project.restore.info
Normal file
@@ -0,0 +1 @@
|
||||
17331012454241067
|
||||
@@ -0,0 +1,20 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class G2Chat_LoginRequestHandler : RouteRPC<Scene, G2Chat_LoginRequest, Chat2G_LoginResponse>
|
||||
{
|
||||
protected override async FTask Run(Scene scene, G2Chat_LoginRequest request, Chat2G_LoginResponse response, Action reply)
|
||||
{
|
||||
var chatUnit = scene.GetComponent<ChatUnitManageComponent>().Add(request.UnitId, request.UserName, request.GateRouteId);
|
||||
response.ChatRouteId = chatUnit.RunTimeId;
|
||||
// 这里模拟创建一个频道用于测试用
|
||||
var chatChannelCenterComponent = scene.GetComponent<ChatChannelCenterComponent>();
|
||||
var chatChannelComponent = chatChannelCenterComponent.Apply(1);
|
||||
// 加入到聊天频道
|
||||
chatChannelComponent.JoinChannel(request.UnitId);
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class G2Chat_OfflineRequestHandler : RouteRPC<ChatUnit, G2Chat_OfflineRequest, Chat2G_OfflineResponse>
|
||||
{
|
||||
protected override async FTask Run(ChatUnit chatUnit, G2Chat_OfflineRequest request, Chat2G_OfflineResponse response, Action reply)
|
||||
{
|
||||
await FTask.CompletedTask;
|
||||
chatUnit.Scene.GetComponent<ChatUnitManageComponent>().Remove(chatUnit.Id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class Other2Chat_ChatMessageHandler : Route<ChatUnit, Other2Chat_ChatMessage>
|
||||
{
|
||||
protected override async FTask Run(ChatUnit chatUnit, Other2Chat_ChatMessage message)
|
||||
{
|
||||
var result = ChatSceneHelper.Distribution(chatUnit, message.ChatInfoTree, false);
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
Log.Warning($"Other2Chat_ChatMessageHandler: Distribution failed, result: {result}");
|
||||
}
|
||||
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class C2Chat_SendMessageRequestHandler : RouteRPC<ChatUnit, C2Chat_SendMessageRequest, Chat2C_SendMessageResponse>
|
||||
{
|
||||
protected override async FTask Run(ChatUnit chatUnit, C2Chat_SendMessageRequest request, Chat2C_SendMessageResponse response, Action reply)
|
||||
{
|
||||
response.ErrorCode = ChatSceneHelper.Distribution(chatUnit, request.ChatInfoTree);
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
namespace Fantasy;
|
||||
|
||||
public static class ChatChannelCenterHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 申请一个频道
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="channelId"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatChannelComponent Apply(Scene scene, long channelId)
|
||||
{
|
||||
return scene.GetComponent<ChatChannelCenterComponent>().Apply(channelId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试获取一个频道
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="channelId"></param>
|
||||
/// <param name="channel"></param>
|
||||
/// <returns></returns>
|
||||
public static bool TryGet(Scene scene, long channelId, out ChatChannelComponent channel)
|
||||
{
|
||||
return scene.GetComponent<ChatChannelCenterComponent>().TryGet(channelId, out channel);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解散一个频道
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="channelId"></param>
|
||||
public static void Disband(Scene scene, long channelId)
|
||||
{
|
||||
scene.GetComponent<ChatChannelCenterComponent>().Disband(channelId);
|
||||
}
|
||||
}
|
||||
28
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatHelper.cs
Normal file
28
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatHelper.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Fantasy.Platform.Net;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public static class ChatHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 发送一个聊天消息给ChatScene(不能在ChatScene中调用)
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="chatUnitRouteId"></param>
|
||||
/// <param name="tree"></param>
|
||||
public static void SendChatMessage(Scene scene, long chatUnitRouteId, ChatInfoTree tree)
|
||||
{
|
||||
if (scene.SceneType == SceneType.Chat)
|
||||
{
|
||||
Log.Warning("ChatHelper.SendChatMessage: scene is not a chat scene.");
|
||||
return;
|
||||
}
|
||||
|
||||
var other2ChatChatMessage = new Other2Chat_ChatMessage()
|
||||
{
|
||||
ChatInfoTree = tree
|
||||
};
|
||||
|
||||
scene.NetworkMessagingComponent.SendInnerRoute(chatUnitRouteId, other2ChatChatMessage);
|
||||
}
|
||||
}
|
||||
126
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatNodeFactory.cs
Normal file
126
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatNodeFactory.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
/// <summary>
|
||||
/// 聊天信息节点
|
||||
/// </summary>
|
||||
public static class ChatNodeFactory
|
||||
{
|
||||
/// <summary>
|
||||
/// 添加文本节点
|
||||
/// </summary>
|
||||
/// <param name="chatInfoTree"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree AddendTextNode(this ChatInfoTree chatInfoTree, string content)
|
||||
{
|
||||
var chatInfoNode = new ChatInfoNode()
|
||||
{
|
||||
ChatNodeType = (int)ChatNodeType.Text,
|
||||
Content = content
|
||||
};
|
||||
chatInfoTree.Node.Add(chatInfoNode);
|
||||
return chatInfoTree;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加链接节点
|
||||
/// </summary>
|
||||
/// <param name="chatInfoTree"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <param name="link"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree AddendLinkNode(this ChatInfoTree chatInfoTree, string content,string link)
|
||||
{
|
||||
var chatLinkNode = new ChatLinkNode()
|
||||
{
|
||||
Link = link
|
||||
};
|
||||
var serializerComponent = chatInfoTree.Scene.GetComponent<SerializerComponent>();
|
||||
var chatInfoNode = new ChatInfoNode()
|
||||
{
|
||||
ChatNodeType = (int)ChatNodeType.Link,
|
||||
ChatNodeEvent = (int)ChatNodeEvent.OpenLink,
|
||||
Content = content,
|
||||
Data = serializerComponent.Serialize(chatLinkNode)
|
||||
};
|
||||
chatInfoTree.Node.Add(chatInfoNode);
|
||||
return chatInfoTree;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加图片节点
|
||||
/// </summary>
|
||||
/// <param name="chatInfoTree"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree AddendImageNode(this ChatInfoTree chatInfoTree, string content)
|
||||
{
|
||||
var chatInfoNode = new ChatInfoNode()
|
||||
{
|
||||
ChatNodeType = (int)ChatNodeType.Image,
|
||||
Content = content
|
||||
};
|
||||
chatInfoTree.Node.Add(chatInfoNode);
|
||||
return chatInfoTree;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加打开UI节点
|
||||
/// </summary>
|
||||
/// <param name="chatInfoTree"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <param name="uiName"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree AddendOpenUINode(this ChatInfoTree chatInfoTree, string content,string uiName)
|
||||
{
|
||||
var chatOpenUINode = new ChatOpenUINode()
|
||||
{
|
||||
UIName = uiName
|
||||
};
|
||||
var serializerComponent = chatInfoTree.Scene.GetComponent<SerializerComponent>();
|
||||
var chatInfoNode = new ChatInfoNode()
|
||||
{
|
||||
ChatNodeType = (int)ChatNodeType.OpenUI,
|
||||
ChatNodeEvent = (int)ChatNodeEvent.OpenUI,
|
||||
Content = content,
|
||||
Data = serializerComponent.Serialize(chatOpenUINode)
|
||||
};
|
||||
chatInfoTree.Node.Add(chatInfoNode);
|
||||
return chatInfoTree;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加位置节点
|
||||
/// </summary>
|
||||
/// <param name="chatInfoTree"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <param name="mapName"></param>
|
||||
/// <param name="mapX"></param>
|
||||
/// <param name="mapY"></param>
|
||||
/// <param name="mapZ"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree AddendPositionNode(this ChatInfoTree chatInfoTree, string content, string mapName,
|
||||
float mapX, float mapY, float mapZ)
|
||||
{
|
||||
var chatPositionNode = new ChatPositionNode()
|
||||
{
|
||||
MapName = mapName,
|
||||
PosX = mapX,
|
||||
PosY = mapY,
|
||||
PosZ = mapZ,
|
||||
};
|
||||
|
||||
var serializerComponent = chatInfoTree.Scene.GetComponent<SerializerComponent>();
|
||||
var chatInfoNode = new ChatInfoNode()
|
||||
{
|
||||
ChatNodeType = (int)ChatNodeType.Position,
|
||||
ChatNodeEvent = (int)ChatNodeEvent.Position,
|
||||
Content = content,
|
||||
Data = serializerComponent.Serialize(chatPositionNode)
|
||||
};
|
||||
|
||||
chatInfoTree.Node.Add(chatInfoNode);
|
||||
return chatInfoTree;
|
||||
}
|
||||
}
|
||||
}
|
||||
248
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatSceneHelper.cs
Normal file
248
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatSceneHelper.cs
Normal file
@@ -0,0 +1,248 @@
|
||||
using System.Threading.Channels;
|
||||
using Fantasy.Helper;
|
||||
using Fantasy.Platform.Net;
|
||||
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public static class ChatSceneHelper
|
||||
{
|
||||
private const int ChatCD = 1000;
|
||||
private const int MaxTextLength = 10;
|
||||
private const int MaxShowItemCount = 2;
|
||||
|
||||
/// <summary>
|
||||
/// 聊天消息分发入口
|
||||
/// </summary>
|
||||
/// <param name="chatUnit"></param>
|
||||
/// <param name="tree"></param>
|
||||
/// <param name="isCheckSendTime"></param>
|
||||
/// <returns></returns>
|
||||
public static uint Distribution(ChatUnit chatUnit, ChatInfoTree tree, bool isCheckSendTime = true)
|
||||
{
|
||||
var result = Condition(chatUnit, tree, isCheckSendTime);
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
switch ((ChatChannelType)tree.ChatChannelType)
|
||||
{
|
||||
case ChatChannelType.Broadcast:
|
||||
{
|
||||
Broadcast(chatUnit.Scene, tree);
|
||||
return 0;
|
||||
}
|
||||
case ChatChannelType.Team:
|
||||
{
|
||||
return Channel(chatUnit, tree);
|
||||
}
|
||||
case ChatChannelType.Private:
|
||||
{
|
||||
return Private(chatUnit, tree);
|
||||
}
|
||||
default:
|
||||
{
|
||||
// 这个1代表当前频道不存在。
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 聊天消息条件判断
|
||||
/// </summary>
|
||||
/// <param name="chatUnit"></param>
|
||||
/// <param name="tree"></param>
|
||||
/// <param name="isCheckSendTime"></param>
|
||||
/// <returns></returns>
|
||||
private static uint Condition(ChatUnit chatUnit, ChatInfoTree tree, bool isCheckSendTime = true)
|
||||
{
|
||||
// 每个频道可能聊天的间隔都不一样。
|
||||
// 这里的条件判断,是根据频道的类型,来判断是否到达了聊天的间隔。
|
||||
var now = TimeHelper.Now;
|
||||
|
||||
if (isCheckSendTime)
|
||||
{
|
||||
// 这里的间隔时间,是根据频道的类型,来获取的。
|
||||
chatUnit.SendTime.TryGetValue(tree.ChatChannelType, out var sendTime);
|
||||
// 判定聊天间隔是否到达
|
||||
// 其实的话,这个ChatCD应该是根据频道的类型,来获取的。
|
||||
// 一般的话都是做一个配置表,通过配置表来获取不同频道的时间间隔。
|
||||
if (now - sendTime < ChatCD)
|
||||
{
|
||||
// 这个1代表当前频道聊天的间隔过短
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 判定聊天内容是否超长
|
||||
|
||||
var itemCount = 0;
|
||||
var chatTextSize = 0;
|
||||
|
||||
foreach (var chatInfoNode in tree.Node)
|
||||
{
|
||||
switch ((ChatNodeType)chatInfoNode.ChatNodeType)
|
||||
{
|
||||
case ChatNodeType.Text:
|
||||
{
|
||||
chatTextSize += chatInfoNode.Content.Length;
|
||||
break;
|
||||
}
|
||||
case ChatNodeType.Image:
|
||||
{
|
||||
// 规定图片占聊天消息的5个字符长度
|
||||
chatTextSize += 5;
|
||||
break;
|
||||
}
|
||||
case ChatNodeType.OpenUI:
|
||||
{
|
||||
// 规定OpenUI占聊天消息的10个字符长度
|
||||
chatTextSize += 10;
|
||||
break;
|
||||
}
|
||||
case ChatNodeType.Item:
|
||||
{
|
||||
itemCount++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (chatTextSize > MaxTextLength)
|
||||
{
|
||||
// 这个2代表当前频道聊天内容超长
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (itemCount > MaxShowItemCount)
|
||||
{
|
||||
// 这个3代表当前频道聊天里道具数量过多
|
||||
return 3;
|
||||
}
|
||||
|
||||
if (isCheckSendTime)
|
||||
{
|
||||
// 更新当前频道的发送时间
|
||||
chatUnit.SendTime[tree.ChatChannelType] = now;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#region 不同聊天频道的实现
|
||||
|
||||
/// <summary>
|
||||
/// 广播消息
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="tree"></param>
|
||||
private static void Broadcast(Scene scene, ChatInfoTree tree)
|
||||
{
|
||||
var networkMessagingComponent = scene.NetworkMessagingComponent;
|
||||
var chatMessage = new Chat2G_ChatMessage()
|
||||
{
|
||||
ChatInfoTree = tree
|
||||
};
|
||||
|
||||
if (tree.Target.Count > 0)
|
||||
{
|
||||
var chatUnitManageComponent = scene.GetComponent<ChatUnitManageComponent>();
|
||||
// 给一部分人广播消息
|
||||
foreach (var chatUnitId in tree.Target)
|
||||
{
|
||||
if (!chatUnitManageComponent.TryGet(chatUnitId, out var chatUnit))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
networkMessagingComponent.SendInnerRoute(chatUnit.GateRouteId, chatMessage);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送给所有Gate服务器,让Gate服务器转发给其他客户端
|
||||
var gateConfigs = SceneConfigData.Instance.GetSceneBySceneType(SceneType.Gate);
|
||||
foreach (var gateSceneConfig in gateConfigs)
|
||||
{
|
||||
// 这里是要发送一个消息给Gate服务器,Gate服务器再转发给其他客户端
|
||||
networkMessagingComponent.SendInnerRoute(gateSceneConfig.RouteId, chatMessage);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送频道消息
|
||||
/// </summary>
|
||||
/// <param name="chatUnit"></param>
|
||||
/// <param name="tree"></param>
|
||||
private static uint Channel(ChatUnit chatUnit, ChatInfoTree tree)
|
||||
{
|
||||
// 那组队,公会、地图、等这个的聊天,如何使用频道呢?
|
||||
// 这里的频道,是指一个频道,比如一个公会的频道,一个队伍的频道,一个地图的频道。
|
||||
// 1、一般组队工会、地图等,都是有一个创建的一个逻辑,咱们个在这个创建的逻辑中,根据队伍、公会、地图的ID
|
||||
// 把这些ID当做频道ID,然后发送到Chat服务器,先申请一个频道,把这个频道ID返回给创建公会队伍的逻辑。
|
||||
// 这时候,队伍公会、发送聊天消息的时候,就会根据这个ID来进行发送。
|
||||
// 2、地图同样道理,创建地图的时候,也会有一个创建的逻辑,这个逻辑会返回一个地图的ID,这个ID就是地图的频道ID。
|
||||
// 3、这这些ID根据频道类型,发送给客户端,客户端发送的时候,根据频道不同,拿不同的ID来发送。
|
||||
|
||||
// 课外:
|
||||
// 客户端创建一个频道、拿到这个频道号,告诉其他人,其他人通过这个频道ID加入到这个频道。
|
||||
// 客户端创建一个频道,邀请其他人加入到这个频道,其他人可能客户端会接收一个协议,就是邀请你加入到这个频道,如果同意,
|
||||
// 你就加入到这个频道(你点同意后,会发送一个消息给聊天服务器,聊天服务器会把你加入到这个频道)。
|
||||
|
||||
if (!chatUnit.Channels.TryGetValue(tree.ChatChannelId, out var channel))
|
||||
{
|
||||
// 这个1代表当前频道不存在。
|
||||
return 1;
|
||||
}
|
||||
|
||||
channel.Send(tree);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送私聊消息
|
||||
/// </summary>
|
||||
/// <param name="chatUnit"></param>
|
||||
/// <param name="tree"></param>
|
||||
/// <returns></returns>
|
||||
private static uint Private(ChatUnit chatUnit, ChatInfoTree tree)
|
||||
{
|
||||
// 私聊,就是两个玩家之间,直接聊天。
|
||||
// 1、首先,客户端需要知道对方的ID,这个ID是通过什么方式获取的呢?
|
||||
// 2、客户端需要发送一个私聊消息给聊天服务器,聊天服务器需要把这个消息转发给对方。
|
||||
// 3、对方收到消息后,需要显示出来。
|
||||
// 4、聊天服务器需要记录这个私聊消息,并把这个消息转发给两个玩家。
|
||||
// 5、两个玩家收到消息后,需要显示出来。
|
||||
|
||||
if (tree.Target == null || tree.Target.Count <= 0)
|
||||
{
|
||||
// 这个1代表对方ID不的合法的。
|
||||
return 1;
|
||||
}
|
||||
|
||||
var targetChatUnitId = tree.Target[0];
|
||||
var scene = chatUnit.Scene;
|
||||
if (!scene.GetComponent<ChatUnitManageComponent>().TryGet(targetChatUnitId, out var targetChatUnit))
|
||||
{
|
||||
// 这个2代表对方不在线。
|
||||
return 2;
|
||||
}
|
||||
|
||||
var networkMessagingComponent = scene.NetworkMessagingComponent;
|
||||
var chatMessage = new Chat2C_Message()
|
||||
{
|
||||
ChatInfoTree = tree
|
||||
};
|
||||
|
||||
// 先给自己发送一个聊天消息。
|
||||
networkMessagingComponent.SendInnerRoute(chatUnit.GateRouteId, chatMessage);
|
||||
// 然后再给对方发送一个聊天消息。
|
||||
networkMessagingComponent.SendInnerRoute(targetChatUnit.GateRouteId, chatMessage);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
119
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatTreeFactory.cs
Normal file
119
聊天系统课程代码/Server/Hotfix/Chat/Helper/ChatTreeFactory.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
namespace Fantasy;
|
||||
|
||||
/// <summary>
|
||||
/// 创建聊天树的总入口
|
||||
/// </summary>
|
||||
public static class ChatTreeFactory
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建世界聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree World(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.World,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建私聊聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree Private(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.Private,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建系统聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree System(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.System,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建公广播聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree Broadcast(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.Broadcast,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建公告聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree Notice(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.Notice,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建队伍聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree Team(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.Team,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建附近人聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree Near(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.Near,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建当前地图聊天树
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <returns></returns>
|
||||
public static ChatInfoTree CurrentMap(Scene scene)
|
||||
{
|
||||
return new ChatInfoTree()
|
||||
{
|
||||
Scene = scene,
|
||||
ChatChannelType = (int)ChatChannelType.CurrentMap,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
|
||||
#pragma warning disable CS8602 // Dereference of a possibly null reference.
|
||||
#pragma warning disable CS8601 // Possible null reference assignment.
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class ChatChannelCenterComponentDestroySystem : DestroySystem<ChatChannelCenterComponent>
|
||||
{
|
||||
protected override void Destroy(ChatChannelCenterComponent self)
|
||||
{
|
||||
foreach (var chatChannelComponent in self.Channels.Values.ToArray())
|
||||
{
|
||||
chatChannelComponent.Dispose();
|
||||
}
|
||||
self.Channels.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public static class ChatChannelCenterComponentSystem
|
||||
{
|
||||
public static ChatChannelComponent Apply(this ChatChannelCenterComponent self, long channelId)
|
||||
{
|
||||
if (self.Channels.TryGetValue(channelId, out var channel))
|
||||
{
|
||||
return channel;
|
||||
}
|
||||
|
||||
channel = Entity.Create<ChatChannelComponent>(self.Scene, channelId, true, true);
|
||||
self.Channels.Add(channelId, channel);
|
||||
return channel;
|
||||
}
|
||||
|
||||
public static bool TryGet(this ChatChannelCenterComponent self, long channelId, out ChatChannelComponent channel)
|
||||
{
|
||||
return self.Channels.TryGetValue(channelId, out channel);
|
||||
}
|
||||
|
||||
public static void Disband(this ChatChannelCenterComponent self, long channelId)
|
||||
{
|
||||
if (self.Channels.Remove(channelId, out var channel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
channel.Dispose();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public class MemoryEntity : Entity
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static class ChatChannelComponentSystem
|
||||
{
|
||||
public static void Send(this ChatChannelComponent self, ChatInfoTree tree)
|
||||
{
|
||||
var chatUnitManageComponent = self.Scene.GetComponent<ChatUnitManageComponent>();
|
||||
var networkMessagingComponent = self.Scene.NetworkMessagingComponent;
|
||||
var chatMessage = new Chat2C_Message()
|
||||
{
|
||||
ChatInfoTree = tree
|
||||
};
|
||||
|
||||
foreach (var unitId in self.Units)
|
||||
{
|
||||
if (!chatUnitManageComponent.Units.TryGetValue(unitId, out var chatUnit))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
networkMessagingComponent.SendInnerRoute(chatUnit.GateRouteId, chatMessage);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool JoinChannel(this ChatChannelComponent self, long chatUnitId)
|
||||
{
|
||||
var chatUnitManageComponent = self.Scene.GetComponent<ChatUnitManageComponent>();
|
||||
|
||||
if (!chatUnitManageComponent.TryGet(chatUnitId, out var chatUnit))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 将当前频道中加入该用户。
|
||||
self.Units.Add(chatUnitId);
|
||||
// 给用户添加频道。
|
||||
if (!chatUnit.Channels.ContainsKey(self.Id))
|
||||
{
|
||||
chatUnit.Channels.Add(self.Id, self);
|
||||
}
|
||||
// 可以在这里给客户端发送一个加入频道成功的消息。
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsJoinedChannel(this ChatChannelComponent self, long chatUnitId)
|
||||
{
|
||||
return self.Units.Contains(chatUnitId);
|
||||
}
|
||||
|
||||
public static void ExitChannel(this ChatChannelComponent self, long chatUnitId, bool isRemoveUnitChannel = true)
|
||||
{
|
||||
if (!self.Units.Contains(chatUnitId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var chatUnitManageComponent = self.Scene.GetComponent<ChatUnitManageComponent>();
|
||||
|
||||
if (!chatUnitManageComponent.TryGet(chatUnitId, out var chatUnit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isRemoveUnitChannel)
|
||||
{
|
||||
// 给用户移除频道。
|
||||
chatUnit.Channels.Remove(self.Id);
|
||||
}
|
||||
|
||||
// 在当前频道中移除该用户。
|
||||
self.Units.Remove(chatUnitId);
|
||||
// 如果当前频道中没有用户了,则销毁该频道。
|
||||
if (self.Units.Count == 0)
|
||||
{
|
||||
self.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
#pragma warning disable CS8601 // Possible null reference assignment.
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class ChatUnitManageComponentDestroySystem : DestroySystem<ChatUnitManageComponent>
|
||||
{
|
||||
protected override void Destroy(ChatUnitManageComponent self)
|
||||
{
|
||||
foreach (var chatUnit in self.Units.Values.ToArray())
|
||||
{
|
||||
chatUnit.Dispose();
|
||||
}
|
||||
|
||||
self.Units.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public static class ChatUnitManageComponentSystem
|
||||
{
|
||||
public static ChatUnit Add(this ChatUnitManageComponent self, long unitId, string userName, long gateRouteId)
|
||||
{
|
||||
if (!self.Units.TryGetValue(unitId, out var chatUnit))
|
||||
{
|
||||
chatUnit = Entity.Create<ChatUnit>(self.Scene, unitId, true, true);
|
||||
self.Units.Add(unitId, chatUnit);
|
||||
Log.Debug($"Add ChatUnit Count: {self.Units.Count} UnitId: {unitId} UserName: {userName} GateRouteId: {gateRouteId}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Debug($"ChatUnit: {chatUnit.UserName}({chatUnit.GateRouteId})");
|
||||
}
|
||||
|
||||
chatUnit.UserName = userName;
|
||||
chatUnit.GateRouteId = gateRouteId;
|
||||
return chatUnit;
|
||||
}
|
||||
|
||||
public static ChatUnit? Get(this ChatUnitManageComponent self, long unitId)
|
||||
{
|
||||
return self.Units.GetValueOrDefault(unitId);
|
||||
}
|
||||
|
||||
public static bool TryGet(this ChatUnitManageComponent self, long unitId, out ChatUnit chatUnit)
|
||||
{
|
||||
return self.Units.TryGetValue(unitId, out chatUnit);
|
||||
}
|
||||
|
||||
public static void Remove(this ChatUnitManageComponent self, long unitId, bool isDispose = true)
|
||||
{
|
||||
// 由于退出频道的时候,也会检查该玩家是否在ChatUnitManageComponent中,所以这里不做移除操作。
|
||||
if (!self.Units.TryGetValue(unitId, out var chatUnit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isDispose)
|
||||
{
|
||||
chatUnit.Dispose();
|
||||
}
|
||||
|
||||
// 因为玩家已经执行了退出频道的操作了,所以要清除一下这个数据。
|
||||
self.Units.Remove(unitId);
|
||||
Log.Debug($"Remove ChatUnit: {chatUnit.UserName}({chatUnit.GateRouteId}) Count: {self.Units.Count}");
|
||||
}
|
||||
}
|
||||
21
聊天系统课程代码/Server/Hotfix/Chat/System/ChatUnitSystem.cs
Normal file
21
聊天系统课程代码/Server/Hotfix/Chat/System/ChatUnitSystem.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using Fantasy.Entitas.Interface;
|
||||
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class ChatUnitDestroySystem : DestroySystem<ChatUnit>
|
||||
{
|
||||
protected override void Destroy(ChatUnit self)
|
||||
{
|
||||
self.UserName = null;
|
||||
self.GateRouteId = 0;
|
||||
// 退出当前ChatUnit拥有的所有频道
|
||||
foreach (var (_,chatChannelComponent) in self.Channels)
|
||||
{
|
||||
chatChannelComponent.ExitChannel(self.Id, false);
|
||||
}
|
||||
// 理论情况下,这个self.Channels不会存在因为数据的,因为上面已经给清空掉了。
|
||||
// 但是self.Channels.Clear();还是加上吧,防止以后忘记了。
|
||||
self.Channels.Clear();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class Chat2G_ChatMessageHandler : Route<Scene,Chat2G_ChatMessage>
|
||||
{
|
||||
protected override async FTask Run(Scene scene, Chat2G_ChatMessage message)
|
||||
{
|
||||
var chatMessage = new Chat2C_Message()
|
||||
{
|
||||
ChatInfoTree = message.ChatInfoTree
|
||||
};
|
||||
foreach (var session in scene.GetComponent<GateUnitManageComponent>().ForEachUnitSession())
|
||||
{
|
||||
session.Send(chatMessage);
|
||||
}
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class C2G_ExitRequestHandler : MessageRPC<C2G_ExitRequest, G2C_ExitResponse>
|
||||
{
|
||||
protected override async FTask Run(Session session, C2G_ExitRequest request, G2C_ExitResponse response, Action reply)
|
||||
{
|
||||
session.RemoveComponent<GateUnitFlagComponent>();
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class C2G_LoginRequestHandler : MessageRPC<C2G_LoginRequest, G2C_LoginResponse>
|
||||
{
|
||||
protected override async FTask Run(Session session, C2G_LoginRequest request, G2C_LoginResponse response, Action reply)
|
||||
{
|
||||
if (string.IsNullOrEmpty(request.UserName))
|
||||
{
|
||||
// 这里返回的1代表账号信息是空的。
|
||||
response.ErrorCode = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
var scene = session.Scene;
|
||||
// 添加一个GateUnitFlagComponent组件,用来Session断开、或者传递数据时使用。
|
||||
var gateUnitFlagComponent = session.GetOrAddComponent<GateUnitFlagComponent>();
|
||||
// 上线到Gate
|
||||
var gateUnit = GateUnitHelper.Online(scene, request.UserName, session);
|
||||
// 设置GateUnitFlagComponent的GateUnitId
|
||||
gateUnitFlagComponent.GateUnitId = gateUnit.Id;
|
||||
// 登录到其他服务器
|
||||
await GateLoginHelper.Online(session, gateUnit, session.RunTimeId);
|
||||
Log.Debug($"gateUnit : {gateUnit.UserName}");
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
117
聊天系统课程代码/Server/Hotfix/Gate/Helper/GateLoginHelper.cs
Normal file
117
聊天系统课程代码/Server/Hotfix/Gate/Helper/GateLoginHelper.cs
Normal file
@@ -0,0 +1,117 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Platform.Net;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public static class GateLoginHelper
|
||||
{
|
||||
private static readonly List<Func<Scene, GateUnit, long, FTask<(uint, long, int)>>> Scenes =
|
||||
new List<Func<Scene, GateUnit, long, FTask<(uint, long, int)>>>()
|
||||
{
|
||||
// 聊天服务器上线
|
||||
{ OnlineChat },
|
||||
// 游戏服务器上线
|
||||
{ OnlineGame }
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 上线到其他服务器
|
||||
/// </summary>
|
||||
/// <param name="session"></param>
|
||||
/// <param name="gateUnit"></param>
|
||||
/// <param name="gateRouteId"></param>
|
||||
public static async FTask<uint> Online(Session session, GateUnit gateUnit, long gateRouteId)
|
||||
{
|
||||
var scene = session.Scene;
|
||||
// 要实现自动Route转发协议,必须要给Session添加一个RouteComponent,然后通过它来转发消息。
|
||||
var routeComponent = session.GetOrAddComponent<RouteComponent>();
|
||||
// 这里是登录的总入口,在这里会陆续的登录其他服务器,如:聊天服务器、游戏服务器等
|
||||
foreach (var sceneHandler in Scenes)
|
||||
{
|
||||
var (errorCode, routeId, routeType) = await sceneHandler(scene, gateUnit, gateRouteId);
|
||||
if (errorCode != 0)
|
||||
{
|
||||
return errorCode;
|
||||
}
|
||||
// 保存上线过的RouteId,用于下线时通知其他服务器下线
|
||||
gateUnit.Routes[routeType] = routeId;
|
||||
// 添加到路由地址中,只有添加了这个路由映射地址,才会自动的从Gate转发到Chat
|
||||
routeComponent.AddAddress(routeType, routeId);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通知其他服务器下线
|
||||
/// </summary>
|
||||
|
||||
/// <param name="gateUnit"></param>
|
||||
public static async FTask<uint> Offline(GateUnit gateUnit)
|
||||
{
|
||||
var networkMessagingComponent = gateUnit.Scene.NetworkMessagingComponent;
|
||||
|
||||
foreach (var (routeType, routeId) in gateUnit.Routes)
|
||||
{
|
||||
switch (routeType)
|
||||
{
|
||||
case RouteType.ChatRoute:
|
||||
{
|
||||
var response =
|
||||
(Chat2G_OfflineResponse)await networkMessagingComponent.CallInnerRoute(routeId,
|
||||
new G2Chat_OfflineRequest());
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
return response.ErrorCode;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gateUnit.Routes.Clear();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 聊天服务器上线
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="gateUnit"></param>
|
||||
/// <param name="gateRouteId"></param>
|
||||
/// <returns></returns>
|
||||
private static async FTask<(uint errorCode, long routeId, int routeType)> OnlineChat(Scene scene, GateUnit gateUnit, long gateRouteId)
|
||||
{
|
||||
// 登录聊天服务器
|
||||
var chatConfig = SceneConfigData.Instance.GetSceneBySceneType(SceneType.Chat)[0];
|
||||
// 咱们框架中,如果要Scene和Scene之间通讯,必须要用到NetworkMessagingComponent,通过它来发送,没有其他办法。
|
||||
var response = (Chat2G_LoginResponse)await scene.NetworkMessagingComponent.CallInnerRoute(chatConfig.RouteId,
|
||||
new G2Chat_LoginRequest()
|
||||
{
|
||||
UserName = gateUnit.UserName,
|
||||
UnitId = gateUnit.Id,
|
||||
GateRouteId = gateRouteId
|
||||
});
|
||||
return (response.ErrorCode, response.ChatRouteId, RouteType.ChatRoute);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 游戏服务器上线
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="gateUnit"></param>
|
||||
/// <param name="gateRouteId"></param>
|
||||
/// <returns></returns>
|
||||
private static async FTask<(uint errorCode, long routeId, int routeType)> OnlineGame(Scene scene, GateUnit gateUnit, long gateRouteId)
|
||||
{
|
||||
// 登录聊天服务器
|
||||
var mapConfig = SceneConfigData.Instance.GetSceneBySceneType(SceneType.Map)[0];
|
||||
var response = (M2G_LoginResponse)await scene.NetworkMessagingComponent.CallInnerRoute(mapConfig.RouteId,
|
||||
new G2M_LoginRequest()
|
||||
{
|
||||
ChatUnitRouteId = gateUnit.Routes[RouteType.ChatRoute]
|
||||
});
|
||||
return (response.ErrorCode, response.MapRouteId, RouteType.GateRoute);
|
||||
}
|
||||
}
|
||||
105
聊天系统课程代码/Server/Hotfix/Gate/Helper/GateUnitHelper.cs
Normal file
105
聊天系统课程代码/Server/Hotfix/Gate/Helper/GateUnitHelper.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
|
||||
#pragma warning disable CS8602 // Dereference of a possibly null reference.
|
||||
namespace Fantasy;
|
||||
|
||||
public static class GateUnitHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// GateUnit上线
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="userName"></param>
|
||||
/// <param name="session"></param>
|
||||
/// <returns></returns>
|
||||
public static GateUnit Online(Scene scene, string userName, Session session)
|
||||
{
|
||||
// 增加一个GateUnit到缓存中、如果缓存中已经存在直接返回缓存中的实体数据
|
||||
return scene.GetComponent<GateUnitManageComponent>().Add(userName, session);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GateUnit下线
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="gateUnitId"></param>
|
||||
public static void Offline(Scene scene, long gateUnitId)
|
||||
{
|
||||
if (!scene.GetComponent<GateUnitManageComponent>().TryGet(gateUnitId, out var gateUnit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
gateUnit.GetOrAddComponent<EntityTimeoutComponent>().SetTimeout(5000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 缓存中获取一个GateUnit
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="userName"></param>
|
||||
/// <returns></returns>
|
||||
public static GateUnit? Get(Scene scene, string userName)
|
||||
{
|
||||
return scene.GetComponent<GateUnitManageComponent>().Get(userName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 缓存中获取一个GateUnit
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="gateUnitId"></param>
|
||||
/// <returns></returns>
|
||||
public static GateUnit? Get(Scene scene, long gateUnitId)
|
||||
{
|
||||
return scene.GetComponent<GateUnitManageComponent>().Get(gateUnitId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试获取一个GateUnit
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="userName"></param>
|
||||
/// <param name="gateUnit"></param>
|
||||
/// <returns></returns>
|
||||
public static bool TryGet(Scene scene, string userName, out GateUnit? gateUnit)
|
||||
{
|
||||
return scene.GetComponent<GateUnitManageComponent>().TryGet(userName, out gateUnit);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试获取一个GateUnit
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="gateUnitId"></param>
|
||||
/// <param name="gateUnit"></param>
|
||||
/// <returns></returns>
|
||||
public static bool TryGet(Scene scene, long gateUnitId, out GateUnit? gateUnit)
|
||||
{
|
||||
return scene.GetComponent<GateUnitManageComponent>().TryGet(gateUnitId, out gateUnit);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在缓存中移除一个GateUnit
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="userName"></param>
|
||||
/// <param name="isDispose"></param>
|
||||
public static FTask Remove(Scene scene, string userName, bool isDispose = true)
|
||||
{
|
||||
return scene.GetComponent<GateUnitManageComponent>().Remove(userName, isDispose);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在缓存中移除一个GateUnit
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="gateUnitId"></param>
|
||||
/// <param name="isDispose"></param>
|
||||
public static FTask Remove(Scene scene, long gateUnitId, bool isDispose = true)
|
||||
{
|
||||
return scene.GetComponent<GateUnitManageComponent>().Remove(gateUnitId, isDispose);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using Fantasy.Entitas.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class GateUnitFlagComponentDestroySystem : DestroySystem<GateUnitFlagComponent>
|
||||
{
|
||||
protected override void Destroy(GateUnitFlagComponent self)
|
||||
{
|
||||
var selfGateUnitId = self.GateUnitId;
|
||||
// 执行下线操作
|
||||
GateUnitHelper.Offline(self.Scene, selfGateUnitId);
|
||||
// 清理垃圾数据
|
||||
self.GateUnitId = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
using Fantasy.Network;
|
||||
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class GateUnitManageComponentDestroySystem : DestroySystem<GateUnitManageComponent>
|
||||
{
|
||||
protected override void Destroy(GateUnitManageComponent self)
|
||||
{
|
||||
foreach (var gateUnit in self.Units.Values.ToArray())
|
||||
{
|
||||
gateUnit.Dispose();
|
||||
}
|
||||
|
||||
self.Units.Clear();
|
||||
self.UnitsByUserName.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public static class GateUnitManageComponentSystem
|
||||
{
|
||||
public static GateUnit Add(this GateUnitManageComponent self, string userName, Session session)
|
||||
{
|
||||
if (self.UnitsByUserName.TryGetValue(userName, out var gateUnit))
|
||||
{
|
||||
gateUnit.Session = session;
|
||||
// 如果缓存中已经存在了该名字,那就直接从缓存中返回就可以了
|
||||
Log.Debug($"在缓存中获取的数据 userName:{userName}");
|
||||
return gateUnit;
|
||||
}
|
||||
|
||||
// 创建一个新的实体
|
||||
gateUnit = Entity.Create<GateUnit>(self.Scene, true, true);
|
||||
gateUnit.UserName = userName;
|
||||
gateUnit.Session = session;
|
||||
// 添加到缓存中
|
||||
self.Units.Add(gateUnit.Id, gateUnit);
|
||||
self.UnitsByUserName.Add(userName, gateUnit);
|
||||
|
||||
Log.Debug($"新创建的数据 userName:{userName}");
|
||||
return gateUnit;
|
||||
}
|
||||
|
||||
public static GateUnit? Get(this GateUnitManageComponent self, string userName)
|
||||
{
|
||||
return self.UnitsByUserName.GetValueOrDefault(userName);
|
||||
}
|
||||
|
||||
public static GateUnit? Get(this GateUnitManageComponent self, long gateUnitId)
|
||||
{
|
||||
return self.Units.GetValueOrDefault(gateUnitId);
|
||||
}
|
||||
|
||||
public static bool TryGet(this GateUnitManageComponent self, string userName, out GateUnit? gateUnit)
|
||||
{
|
||||
return self.UnitsByUserName.TryGetValue(userName, out gateUnit);
|
||||
}
|
||||
|
||||
public static bool TryGet(this GateUnitManageComponent self, long gateUnitId, out GateUnit? gateUnit)
|
||||
{
|
||||
return self.Units.TryGetValue(gateUnitId, out gateUnit);
|
||||
}
|
||||
|
||||
public static async FTask Remove(this GateUnitManageComponent self, string userName, bool isDispose = true)
|
||||
{
|
||||
if (!self.UnitsByUserName.TryGetValue(userName, out var gateUnit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 通知其他服务器下线
|
||||
var result = await GateLoginHelper.Offline(gateUnit);
|
||||
if (result != 0)
|
||||
{
|
||||
Log.Error($"通知其他服务器下线失败,错误码:{result}");
|
||||
return;
|
||||
}
|
||||
// 如果其他服务器都已经下线了,那就直接移除本地数据
|
||||
self.Units.Remove(gateUnit.Id);
|
||||
self.UnitsByUserName.Remove(userName);
|
||||
|
||||
if (isDispose)
|
||||
{
|
||||
gateUnit.Dispose();
|
||||
}
|
||||
|
||||
gateUnit.Session = null;
|
||||
gateUnit.UserName = null;
|
||||
}
|
||||
|
||||
public static async FTask Remove(this GateUnitManageComponent self, long gateUnitId, bool isDispose = true)
|
||||
{
|
||||
if (!self.Units.TryGetValue(gateUnitId, out var gateUnit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// 通知其他服务器下线
|
||||
var result = await GateLoginHelper.Offline(gateUnit);
|
||||
if (result != 0)
|
||||
{
|
||||
Log.Error($"通知其他服务器下线失败,错误码:{result}");
|
||||
return;
|
||||
}
|
||||
// 如果其他服务器都已经下线了,那就直接移除本地数据
|
||||
self.Units.Remove(gateUnitId);
|
||||
self.UnitsByUserName.Remove(gateUnit.UserName);
|
||||
|
||||
if (isDispose)
|
||||
{
|
||||
gateUnit.Dispose();
|
||||
}
|
||||
|
||||
gateUnit.Session = null;
|
||||
gateUnit.UserName = null;
|
||||
}
|
||||
|
||||
public static IEnumerable<Session> ForEachUnitSession(this GateUnitManageComponent self)
|
||||
{
|
||||
foreach (var (_, gateUnit) in self.Units)
|
||||
{
|
||||
Session gateUnitSession = gateUnit.Session;
|
||||
|
||||
if (gateUnitSession == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
yield return gateUnitSession;
|
||||
}
|
||||
}
|
||||
}
|
||||
14
聊天系统课程代码/Server/Hotfix/Gate/System/GateUnitSystem.cs
Normal file
14
聊天系统课程代码/Server/Hotfix/Gate/System/GateUnitSystem.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using Fantasy.Entitas.Interface;
|
||||
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class GateUnitDestroySystem : DestroySystem<GateUnit>
|
||||
{
|
||||
protected override void Destroy(GateUnit self)
|
||||
{
|
||||
// 移除缓存中的GateUnit
|
||||
// 这里的销毁,只能是通过EntityTimeoutComponent超时来触发的销毁,不能通过直接调用Dispose来触发的销毁
|
||||
GateUnitHelper.Remove(self.Scene, self.Id, false).Coroutine();
|
||||
}
|
||||
}
|
||||
13
聊天系统课程代码/Server/Hotfix/Hotfix.csproj
Normal file
13
聊天系统课程代码/Server/Hotfix/Hotfix.csproj
Normal file
@@ -0,0 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Entity\Entity.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
17
聊天系统课程代码/Server/Hotfix/Map/G2M_LoginRequestHandler.cs
Normal file
17
聊天系统课程代码/Server/Hotfix/Map/G2M_LoginRequestHandler.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy.Map;
|
||||
|
||||
public class G2M_LoginRequestHandler : RouteRPC<Scene,G2M_LoginRequest, M2G_LoginResponse>
|
||||
{
|
||||
protected override async FTask Run(Scene scene, G2M_LoginRequest request, M2G_LoginResponse response, Action reply)
|
||||
{
|
||||
var chatInfoTree = ChatTreeFactory.Broadcast(scene).AddendTextNode("您杀死了奥格瑞玛!");
|
||||
scene.TimerComponent.Net.RepeatedTimer(2000, () =>
|
||||
{
|
||||
ChatHelper.SendChatMessage(scene, request.ChatUnitRouteId, chatInfoTree);
|
||||
});
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
32
聊天系统课程代码/Server/Hotfix/OnSceneCreate_Init.cs
Normal file
32
聊天系统课程代码/Server/Hotfix/OnSceneCreate_Init.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Event;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class OnSceneCreate_Init : AsyncEventSystem<OnCreateScene>
|
||||
{
|
||||
protected override async FTask Handler(OnCreateScene self)
|
||||
{
|
||||
var scene = self.Scene;
|
||||
|
||||
switch (scene.SceneType)
|
||||
{
|
||||
case SceneType.Gate:
|
||||
{
|
||||
// GateUnit管理组件。
|
||||
scene.AddComponent<GateUnitManageComponent>();
|
||||
break;
|
||||
}
|
||||
case SceneType.Chat:
|
||||
{
|
||||
// 序列化组件。
|
||||
scene.AddComponent<SerializerComponent>().Initialize();
|
||||
// ChatUnit管理组件。
|
||||
scene.AddComponent<ChatUnitManageComponent>();
|
||||
// 聊天频道中控中心组件。
|
||||
scene.AddComponent<ChatChannelCenterComponent>();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
|
||||
using Fantasy.Entitas.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
public sealed class EntityTimeoutComponentDestroySystem : DestroySystem<EntityTimeoutComponent>
|
||||
{
|
||||
protected override void Destroy(EntityTimeoutComponent self)
|
||||
{
|
||||
self.CancelTimeout();
|
||||
}
|
||||
}
|
||||
|
||||
public static class EntityTimeoutComponentSystem
|
||||
{
|
||||
// 这个组件会挂载到目标组件上
|
||||
// 当这个组件的超时时间到了,会自动销毁这个组件的父亲
|
||||
|
||||
public static void SetTimeout(this EntityTimeoutComponent self, int time)
|
||||
{
|
||||
var selfParent = self.Parent;
|
||||
if (selfParent == null)
|
||||
{
|
||||
Log.Error("EntityTimeoutComponent's parent is null.");
|
||||
return;
|
||||
}
|
||||
|
||||
var selfParentRunTimeId = selfParent.RunTimeId;
|
||||
self.TimerId = self.Scene.TimerComponent.Net.OnceTimer(time, () =>
|
||||
{
|
||||
if (selfParent.RunTimeId != selfParentRunTimeId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.TimerId = 0;
|
||||
selfParent.Dispose();
|
||||
});
|
||||
}
|
||||
|
||||
public static void CancelTimeout(this EntityTimeoutComponent self)
|
||||
{
|
||||
if (self.TimerId == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.Scene.TimerComponent.Net.Remove(ref self.TimerId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using Fantasy.Serialize;
|
||||
#pragma warning disable CS8604 // Possible null reference argument.
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public static class SerializerComponentSystem
|
||||
{
|
||||
public static void Initialize(this SerializerComponent self)
|
||||
{
|
||||
self.Serialize = SerializerManager.GetSerializer(FantasySerializerType.ProtoBuf);
|
||||
}
|
||||
|
||||
public static byte[] Serialize<T>(this SerializerComponent self, T @object)
|
||||
{
|
||||
using var memoryStreamBuffer = self.BufferPool.RentMemoryStream(MemoryStreamBufferSource.None);
|
||||
self.Serialize.Serialize(typeof(T), @object, memoryStreamBuffer);
|
||||
return memoryStreamBuffer.ToArray();
|
||||
}
|
||||
|
||||
public static T Deserialize<T>(this SerializerComponent self, byte[] bytes)
|
||||
{
|
||||
return self.Serialize.Deserialize<T>(bytes);
|
||||
}
|
||||
}
|
||||
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Entity.dll
Normal file
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Entity.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Entity.pdb
Normal file
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Entity.pdb
Normal file
Binary file not shown.
324
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Hotfix.deps.json
Normal file
324
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Hotfix.deps.json
Normal file
@@ -0,0 +1,324 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v8.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"Hotfix/1.0.0": {
|
||||
"dependencies": {
|
||||
"Entity": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"Hotfix.dll": {}
|
||||
}
|
||||
},
|
||||
"CommandLineParser/2.9.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/CommandLine.dll": {
|
||||
"assemblyVersion": "2.9.1.0",
|
||||
"fileVersion": "2.9.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.Registry": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"assemblyVersion": "1.6.1.0",
|
||||
"fileVersion": "1.6.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"dependencies": {
|
||||
"CommandLineParser": "2.9.1",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"MongoDB.Driver": "3.0.0",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"System.IO.Pipelines": "8.0.0",
|
||||
"protobuf-net": "3.2.45"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Fantasy-Net.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Security.AccessControl": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.5",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"dependencies": {
|
||||
"DnsClient": "1.6.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "2.0.0",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"SharpCompress": "0.30.1",
|
||||
"Snappier": "1.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"ZstdSharp.Port": "0.7.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "13.0.0.0",
|
||||
"fileVersion": "13.0.3.27908"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"dependencies": {
|
||||
"protobuf-net.Core": "3.2.45"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.2.45.36865"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"dependencies": {
|
||||
"System.Collections.Immutable": "7.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.Core.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.2.45.36865"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"runtime": {
|
||||
"lib/net5.0/SharpCompress.dll": {
|
||||
"assemblyVersion": "0.30.1.0",
|
||||
"fileVersion": "0.30.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"runtime": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {},
|
||||
"System.Collections.Immutable/7.0.0": {},
|
||||
"System.IO.Pipelines/8.0.0": {},
|
||||
"System.Memory/4.5.5": {},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"runtime": {
|
||||
"lib/net7.0/ZstdSharp.dll": {
|
||||
"assemblyVersion": "0.7.3.0",
|
||||
"fileVersion": "0.7.3.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Entity/1.0.0": {
|
||||
"dependencies": {
|
||||
"Fantasy-Net": "2024.1.17"
|
||||
},
|
||||
"runtime": {
|
||||
"Entity.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Hotfix/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"CommandLineParser/2.9.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
|
||||
"path": "commandlineparser/2.9.1",
|
||||
"hashPath": "commandlineparser.2.9.1.nupkg.sha512"
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
|
||||
"path": "dnsclient/1.6.1",
|
||||
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-06mxvByfEvF/ELAiAjaea4aWI5IBbBDyH9sVdPxEOEEtpAbcguaiydUNi2CVBE+ppW+CYsznTXalN0Xk0vAMKQ==",
|
||||
"path": "fantasy-net/2024.1.17",
|
||||
"hashPath": "fantasy-net.2024.1.17.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
|
||||
"path": "microsoft.extensions.logging.abstractions/2.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
||||
"path": "microsoft.netcore.platforms/5.0.0",
|
||||
"hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||
"path": "microsoft.win32.registry/5.0.0",
|
||||
"hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-qnPRJ58HXDh7C4oxTf6YB7BJhlCGJIa6TMXhzImw6zk44lrAomQXTB6AtoQ5lNJbkyrgQcT7+smsKFMnXmLXhw==",
|
||||
"path": "mongodb.bson/3.0.0",
|
||||
"hashPath": "mongodb.bson.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-udcP8rOhyuhLDn3sGVdNUgQSXfKGPaIP4w09XVKf4xdy66YSXinhkIuQSuOeZVHdTFsG2PpUbRx2wyFm7E0EMg==",
|
||||
"path": "mongodb.driver/3.0.0",
|
||||
"hashPath": "mongodb.driver.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||
"path": "newtonsoft.json/13.0.3",
|
||||
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
|
||||
"path": "protobuf-net/3.2.45",
|
||||
"hashPath": "protobuf-net.3.2.45.nupkg.sha512"
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
|
||||
"path": "protobuf-net.core/3.2.45",
|
||||
"hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
|
||||
"path": "sharpcompress/0.30.1",
|
||||
"hashPath": "sharpcompress.0.30.1.nupkg.sha512"
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
|
||||
"path": "snappier/1.0.0",
|
||||
"hashPath": "snappier.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
|
||||
"path": "system.collections.immutable/7.0.0",
|
||||
"hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.IO.Pipelines/8.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
|
||||
"path": "system.io.pipelines/8.0.0",
|
||||
"hashPath": "system.io.pipelines.8.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
|
||||
"path": "system.memory/4.5.5",
|
||||
"hashPath": "system.memory.4.5.5.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
|
||||
"path": "system.security.accesscontrol/5.0.0",
|
||||
"hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
|
||||
"path": "system.security.principal.windows/5.0.0",
|
||||
"hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
|
||||
"path": "zstdsharp.port/0.7.3",
|
||||
"hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
},
|
||||
"Entity/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Hotfix.dll
Normal file
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Hotfix.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Hotfix.pdb
Normal file
BIN
聊天系统课程代码/Server/Hotfix/bin/Debug/net8.0/Hotfix.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
|
||||
@@ -0,0 +1,22 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Hotfix")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Hotfix")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Hotfix")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
28c7ffb99846e407a4d90a66ddc760b2a3412294f39e5810dd7ee1d10f0462a6
|
||||
@@ -0,0 +1,15 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net8.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Hotfix
|
||||
build_property.ProjectDir = /Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 8.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/Hotfix.assets.cache
Normal file
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/Hotfix.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
db031dae618f2e362a528e6b2e15efd97c27daebca134f658fc2c17b89aba129
|
||||
@@ -0,0 +1,15 @@
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/bin/Debug/net8.0/Hotfix.deps.json
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/bin/Debug/net8.0/Hotfix.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/bin/Debug/net8.0/Hotfix.pdb
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/bin/Debug/net8.0/Entity.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/bin/Debug/net8.0/Entity.pdb
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.csproj.AssemblyReference.cache
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.AssemblyInfoInputs.cache
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.AssemblyInfo.cs
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.csproj.CoreCompileInputs.cache
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.csproj.CopyComplete
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/refint/Hotfix.dll
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/Hotfix.pdb
|
||||
/Users/sining/Code/ServerLessions/Chat/Server/Hotfix/obj/Debug/net8.0/ref/Hotfix.dll
|
||||
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/Hotfix.dll
Normal file
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/Hotfix.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/Hotfix.pdb
Normal file
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/Hotfix.pdb
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/ref/Hotfix.dll
Normal file
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/ref/Hotfix.dll
Normal file
Binary file not shown.
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/refint/Hotfix.dll
Normal file
BIN
聊天系统课程代码/Server/Hotfix/obj/Debug/net8.0/refint/Hotfix.dll
Normal file
Binary file not shown.
136
聊天系统课程代码/Server/Hotfix/obj/Hotfix.csproj.nuget.dgspec.json
Normal file
136
聊天系统课程代码/Server/Hotfix/obj/Hotfix.csproj.nuget.dgspec.json
Normal file
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"projectName": "Entity",
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj",
|
||||
"packagesPath": "/Users/fantasy/.nuget/packages/",
|
||||
"outputPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"UsingMicrosoftNETSdk": false,
|
||||
"configFilePaths": [
|
||||
"/Users/fantasy/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "all"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"dependencies": {
|
||||
"Fantasy-Net": {
|
||||
"target": "Package",
|
||||
"version": "[2024.1.17, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj",
|
||||
"projectName": "Hotfix",
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj",
|
||||
"packagesPath": "/Users/fantasy/.nuget/packages/",
|
||||
"outputPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"UsingMicrosoftNETSdk": false,
|
||||
"configFilePaths": [
|
||||
"/Users/fantasy/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj": {
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "all"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
聊天系统课程代码/Server/Hotfix/obj/Hotfix.csproj.nuget.g.props
Normal file
15
聊天系统课程代码/Server/Hotfix/obj/Hotfix.csproj.nuget.g.props
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/fantasy/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/fantasy/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/Users/fantasy/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
6
聊天系统课程代码/Server/Hotfix/obj/Hotfix.csproj.nuget.g.targets
Normal file
6
聊天系统课程代码/Server/Hotfix/obj/Hotfix.csproj.nuget.g.targets
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)fantasy-net/2024.1.17/buildTransitive/Fantasy-Net.targets" Condition="Exists('$(NuGetPackageRoot)fantasy-net/2024.1.17/buildTransitive/Fantasy-Net.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
965
聊天系统课程代码/Server/Hotfix/obj/project.assets.json
Normal file
965
聊天系统课程代码/Server/Hotfix/obj/project.assets.json
Normal file
@@ -0,0 +1,965 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net8.0": {
|
||||
"CommandLineParser/2.9.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/CommandLine.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/CommandLine.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.Registry": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"CommandLineParser": "2.9.1",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"MongoDB.Driver": "3.0.0",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"System.IO.Pipelines": "8.0.0",
|
||||
"protobuf-net": "3.2.45"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net8.0/Fantasy-Net.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Fantasy-Net.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
],
|
||||
"build": {
|
||||
"buildTransitive/Fantasy-Net.targets": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard1.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.0/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Security.AccessControl": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"ref/netstandard2.0/Microsoft.Win32.Registry.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.5",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"DnsClient": "1.6.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "2.0.0",
|
||||
"MongoDB.Bson": "3.0.0",
|
||||
"SharpCompress": "0.30.1",
|
||||
"Snappier": "1.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"ZstdSharp.Port": "0.7.3"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"protobuf-net.Core": "3.2.45"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/protobuf-net.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Collections.Immutable": "7.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/protobuf-net.Core.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/protobuf-net.Core.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net5.0/SharpCompress.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/SharpCompress.dll": {}
|
||||
}
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net7.0/System.Collections.Immutable.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Collections.Immutable.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.IO.Pipelines/8.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.1/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"ref/netstandard2.0/System.Security.AccessControl.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Security.AccessControl.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp3.0/System.Security.Principal.Windows.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Security.Principal.Windows.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "unix"
|
||||
},
|
||||
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net7.0/ZstdSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/ZstdSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"Entity/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v8.0",
|
||||
"dependencies": {
|
||||
"Fantasy-Net": "2024.1.17"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/Entity.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/Entity.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"CommandLineParser/2.9.1": {
|
||||
"sha512": "OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
|
||||
"type": "package",
|
||||
"path": "commandlineparser/2.9.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"CommandLine20.png",
|
||||
"License.md",
|
||||
"README.md",
|
||||
"commandlineparser.2.9.1.nupkg.sha512",
|
||||
"commandlineparser.nuspec",
|
||||
"lib/net40/CommandLine.dll",
|
||||
"lib/net40/CommandLine.xml",
|
||||
"lib/net45/CommandLine.dll",
|
||||
"lib/net45/CommandLine.xml",
|
||||
"lib/net461/CommandLine.dll",
|
||||
"lib/net461/CommandLine.xml",
|
||||
"lib/netstandard2.0/CommandLine.dll",
|
||||
"lib/netstandard2.0/CommandLine.xml"
|
||||
]
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"sha512": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
|
||||
"type": "package",
|
||||
"path": "dnsclient/1.6.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"dnsclient.1.6.1.nupkg.sha512",
|
||||
"dnsclient.nuspec",
|
||||
"icon.png",
|
||||
"lib/net45/DnsClient.dll",
|
||||
"lib/net45/DnsClient.xml",
|
||||
"lib/net471/DnsClient.dll",
|
||||
"lib/net471/DnsClient.xml",
|
||||
"lib/net5.0/DnsClient.dll",
|
||||
"lib/net5.0/DnsClient.xml",
|
||||
"lib/netstandard1.3/DnsClient.dll",
|
||||
"lib/netstandard1.3/DnsClient.xml",
|
||||
"lib/netstandard2.0/DnsClient.dll",
|
||||
"lib/netstandard2.0/DnsClient.xml",
|
||||
"lib/netstandard2.1/DnsClient.dll",
|
||||
"lib/netstandard2.1/DnsClient.xml"
|
||||
]
|
||||
},
|
||||
"Fantasy-Net/2024.1.17": {
|
||||
"sha512": "06mxvByfEvF/ELAiAjaea4aWI5IBbBDyH9sVdPxEOEEtpAbcguaiydUNi2CVBE+ppW+CYsznTXalN0Xk0vAMKQ==",
|
||||
"type": "package",
|
||||
"path": "fantasy-net/2024.1.17",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"buildTransitive/Fantasy-Net.targets",
|
||||
"fantasy-net.2024.1.17.nupkg.sha512",
|
||||
"fantasy-net.nuspec",
|
||||
"icon.png",
|
||||
"lib/net8.0/Fantasy-Net.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"sha512": "6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.logging.abstractions/2.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
||||
"microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.logging.abstractions.nuspec"
|
||||
]
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
||||
"type": "package",
|
||||
"path": "microsoft.netcore.platforms/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/netstandard1.0/_._",
|
||||
"microsoft.netcore.platforms.5.0.0.nupkg.sha512",
|
||||
"microsoft.netcore.platforms.nuspec",
|
||||
"runtime.json",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"sha512": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||
"type": "package",
|
||||
"path": "microsoft.win32.registry/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net46/Microsoft.Win32.Registry.dll",
|
||||
"lib/net461/Microsoft.Win32.Registry.dll",
|
||||
"lib/net461/Microsoft.Win32.Registry.xml",
|
||||
"lib/netstandard1.3/Microsoft.Win32.Registry.dll",
|
||||
"lib/netstandard2.0/Microsoft.Win32.Registry.dll",
|
||||
"lib/netstandard2.0/Microsoft.Win32.Registry.xml",
|
||||
"microsoft.win32.registry.5.0.0.nupkg.sha512",
|
||||
"microsoft.win32.registry.nuspec",
|
||||
"ref/net46/Microsoft.Win32.Registry.dll",
|
||||
"ref/net461/Microsoft.Win32.Registry.dll",
|
||||
"ref/net461/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/Microsoft.Win32.Registry.dll",
|
||||
"ref/netstandard1.3/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/de/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/es/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/it/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml",
|
||||
"ref/netstandard2.0/Microsoft.Win32.Registry.dll",
|
||||
"ref/netstandard2.0/Microsoft.Win32.Registry.xml",
|
||||
"runtimes/win/lib/net46/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/net461/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/net461/Microsoft.Win32.Registry.xml",
|
||||
"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll",
|
||||
"runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"MongoDB.Bson/3.0.0": {
|
||||
"sha512": "qnPRJ58HXDh7C4oxTf6YB7BJhlCGJIa6TMXhzImw6zk44lrAomQXTB6AtoQ5lNJbkyrgQcT7+smsKFMnXmLXhw==",
|
||||
"type": "package",
|
||||
"path": "mongodb.bson/3.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"lib/net472/MongoDB.Bson.dll",
|
||||
"lib/net472/MongoDB.Bson.xml",
|
||||
"lib/net6.0/MongoDB.Bson.dll",
|
||||
"lib/net6.0/MongoDB.Bson.xml",
|
||||
"lib/netstandard2.1/MongoDB.Bson.dll",
|
||||
"lib/netstandard2.1/MongoDB.Bson.xml",
|
||||
"mongodb.bson.3.0.0.nupkg.sha512",
|
||||
"mongodb.bson.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"MongoDB.Driver/3.0.0": {
|
||||
"sha512": "udcP8rOhyuhLDn3sGVdNUgQSXfKGPaIP4w09XVKf4xdy66YSXinhkIuQSuOeZVHdTFsG2PpUbRx2wyFm7E0EMg==",
|
||||
"type": "package",
|
||||
"path": "mongodb.driver/3.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"lib/net472/MongoDB.Driver.dll",
|
||||
"lib/net472/MongoDB.Driver.xml",
|
||||
"lib/net6.0/MongoDB.Driver.dll",
|
||||
"lib/net6.0/MongoDB.Driver.xml",
|
||||
"lib/netstandard2.1/MongoDB.Driver.dll",
|
||||
"lib/netstandard2.1/MongoDB.Driver.xml",
|
||||
"mongodb.driver.3.0.0.nupkg.sha512",
|
||||
"mongodb.driver.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||
"type": "package",
|
||||
"path": "newtonsoft.json/13.0.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.md",
|
||||
"README.md",
|
||||
"lib/net20/Newtonsoft.Json.dll",
|
||||
"lib/net20/Newtonsoft.Json.xml",
|
||||
"lib/net35/Newtonsoft.Json.dll",
|
||||
"lib/net35/Newtonsoft.Json.xml",
|
||||
"lib/net40/Newtonsoft.Json.dll",
|
||||
"lib/net40/Newtonsoft.Json.xml",
|
||||
"lib/net45/Newtonsoft.Json.dll",
|
||||
"lib/net45/Newtonsoft.Json.xml",
|
||||
"lib/net6.0/Newtonsoft.Json.dll",
|
||||
"lib/net6.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||
"newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"newtonsoft.json.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"protobuf-net/3.2.45": {
|
||||
"sha512": "5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
|
||||
"type": "package",
|
||||
"path": "protobuf-net/3.2.45",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net462/protobuf-net.dll",
|
||||
"lib/net462/protobuf-net.xml",
|
||||
"lib/net6.0/protobuf-net.dll",
|
||||
"lib/net6.0/protobuf-net.xml",
|
||||
"lib/netstandard2.0/protobuf-net.dll",
|
||||
"lib/netstandard2.0/protobuf-net.xml",
|
||||
"lib/netstandard2.1/protobuf-net.dll",
|
||||
"lib/netstandard2.1/protobuf-net.xml",
|
||||
"protobuf-net.3.2.45.nupkg.sha512",
|
||||
"protobuf-net.nuspec",
|
||||
"protobuf-net.png",
|
||||
"readme.md"
|
||||
]
|
||||
},
|
||||
"protobuf-net.Core/3.2.45": {
|
||||
"sha512": "PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
|
||||
"type": "package",
|
||||
"path": "protobuf-net.core/3.2.45",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net462/protobuf-net.Core.dll",
|
||||
"lib/net462/protobuf-net.Core.xml",
|
||||
"lib/net6.0/protobuf-net.Core.dll",
|
||||
"lib/net6.0/protobuf-net.Core.xml",
|
||||
"lib/netstandard2.0/protobuf-net.Core.dll",
|
||||
"lib/netstandard2.0/protobuf-net.Core.xml",
|
||||
"lib/netstandard2.1/protobuf-net.Core.dll",
|
||||
"lib/netstandard2.1/protobuf-net.Core.xml",
|
||||
"protobuf-net.core.3.2.45.nupkg.sha512",
|
||||
"protobuf-net.core.nuspec",
|
||||
"protobuf-net.png",
|
||||
"readme.md"
|
||||
]
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"sha512": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
|
||||
"type": "package",
|
||||
"path": "sharpcompress/0.30.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net461/SharpCompress.dll",
|
||||
"lib/net5.0/SharpCompress.dll",
|
||||
"lib/netcoreapp3.1/SharpCompress.dll",
|
||||
"lib/netstandard2.0/SharpCompress.dll",
|
||||
"lib/netstandard2.1/SharpCompress.dll",
|
||||
"sharpcompress.0.30.1.nupkg.sha512",
|
||||
"sharpcompress.nuspec"
|
||||
]
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"sha512": "rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
|
||||
"type": "package",
|
||||
"path": "snappier/1.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"COPYING.txt",
|
||||
"lib/net5.0/Snappier.dll",
|
||||
"lib/net5.0/Snappier.xml",
|
||||
"lib/netcoreapp3.0/Snappier.dll",
|
||||
"lib/netcoreapp3.0/Snappier.xml",
|
||||
"lib/netstandard2.0/Snappier.dll",
|
||||
"lib/netstandard2.0/Snappier.xml",
|
||||
"lib/netstandard2.1/Snappier.dll",
|
||||
"lib/netstandard2.1/Snappier.xml",
|
||||
"snappier.1.0.0.nupkg.sha512",
|
||||
"snappier.nuspec"
|
||||
]
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"sha512": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"type": "package",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/System.Buffers.dll",
|
||||
"lib/net461/System.Buffers.xml",
|
||||
"lib/netcoreapp2.0/_._",
|
||||
"lib/netstandard1.1/System.Buffers.dll",
|
||||
"lib/netstandard1.1/System.Buffers.xml",
|
||||
"lib/netstandard2.0/System.Buffers.dll",
|
||||
"lib/netstandard2.0/System.Buffers.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"ref/net45/System.Buffers.dll",
|
||||
"ref/net45/System.Buffers.xml",
|
||||
"ref/netcoreapp2.0/_._",
|
||||
"ref/netstandard1.1/System.Buffers.dll",
|
||||
"ref/netstandard1.1/System.Buffers.xml",
|
||||
"ref/netstandard2.0/System.Buffers.dll",
|
||||
"ref/netstandard2.0/System.Buffers.xml",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"system.buffers.4.5.1.nupkg.sha512",
|
||||
"system.buffers.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"sha512": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
|
||||
"type": "package",
|
||||
"path": "system.collections.immutable/7.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"README.md",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/net461/System.Collections.Immutable.targets",
|
||||
"buildTransitive/net462/_._",
|
||||
"buildTransitive/net6.0/_._",
|
||||
"buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets",
|
||||
"lib/net462/System.Collections.Immutable.dll",
|
||||
"lib/net462/System.Collections.Immutable.xml",
|
||||
"lib/net6.0/System.Collections.Immutable.dll",
|
||||
"lib/net6.0/System.Collections.Immutable.xml",
|
||||
"lib/net7.0/System.Collections.Immutable.dll",
|
||||
"lib/net7.0/System.Collections.Immutable.xml",
|
||||
"lib/netstandard2.0/System.Collections.Immutable.dll",
|
||||
"lib/netstandard2.0/System.Collections.Immutable.xml",
|
||||
"system.collections.immutable.7.0.0.nupkg.sha512",
|
||||
"system.collections.immutable.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.IO.Pipelines/8.0.0": {
|
||||
"sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
|
||||
"type": "package",
|
||||
"path": "system.io.pipelines/8.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/net461/System.IO.Pipelines.targets",
|
||||
"buildTransitive/net462/_._",
|
||||
"buildTransitive/net6.0/_._",
|
||||
"buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
|
||||
"lib/net462/System.IO.Pipelines.dll",
|
||||
"lib/net462/System.IO.Pipelines.xml",
|
||||
"lib/net6.0/System.IO.Pipelines.dll",
|
||||
"lib/net6.0/System.IO.Pipelines.xml",
|
||||
"lib/net7.0/System.IO.Pipelines.dll",
|
||||
"lib/net7.0/System.IO.Pipelines.xml",
|
||||
"lib/net8.0/System.IO.Pipelines.dll",
|
||||
"lib/net8.0/System.IO.Pipelines.xml",
|
||||
"lib/netstandard2.0/System.IO.Pipelines.dll",
|
||||
"lib/netstandard2.0/System.IO.Pipelines.xml",
|
||||
"system.io.pipelines.8.0.0.nupkg.sha512",
|
||||
"system.io.pipelines.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
|
||||
"type": "package",
|
||||
"path": "system.memory/4.5.5",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/System.Memory.dll",
|
||||
"lib/net461/System.Memory.xml",
|
||||
"lib/netcoreapp2.1/_._",
|
||||
"lib/netstandard1.1/System.Memory.dll",
|
||||
"lib/netstandard1.1/System.Memory.xml",
|
||||
"lib/netstandard2.0/System.Memory.dll",
|
||||
"lib/netstandard2.0/System.Memory.xml",
|
||||
"ref/netcoreapp2.1/_._",
|
||||
"system.memory.4.5.5.nupkg.sha512",
|
||||
"system.memory.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"sha512": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"type": "package",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net45/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/net45/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/net461/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/net461/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
|
||||
"system.runtime.compilerservices.unsafe.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
|
||||
"type": "package",
|
||||
"path": "system.security.accesscontrol/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net46/System.Security.AccessControl.dll",
|
||||
"lib/net461/System.Security.AccessControl.dll",
|
||||
"lib/net461/System.Security.AccessControl.xml",
|
||||
"lib/netstandard1.3/System.Security.AccessControl.dll",
|
||||
"lib/netstandard2.0/System.Security.AccessControl.dll",
|
||||
"lib/netstandard2.0/System.Security.AccessControl.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"ref/net46/System.Security.AccessControl.dll",
|
||||
"ref/net461/System.Security.AccessControl.dll",
|
||||
"ref/net461/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/System.Security.AccessControl.dll",
|
||||
"ref/netstandard1.3/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/de/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/es/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/fr/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/it/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/ja/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/ko/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/ru/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
|
||||
"ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
|
||||
"ref/netstandard2.0/System.Security.AccessControl.dll",
|
||||
"ref/netstandard2.0/System.Security.AccessControl.xml",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"runtimes/win/lib/net46/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/net461/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/net461/System.Security.AccessControl.xml",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
|
||||
"runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
|
||||
"runtimes/win/lib/uap10.0.16299/_._",
|
||||
"system.security.accesscontrol.5.0.0.nupkg.sha512",
|
||||
"system.security.accesscontrol.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
|
||||
"type": "package",
|
||||
"path": "system.security.principal.windows/5.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net46/System.Security.Principal.Windows.dll",
|
||||
"lib/net461/System.Security.Principal.Windows.dll",
|
||||
"lib/net461/System.Security.Principal.Windows.xml",
|
||||
"lib/netstandard1.3/System.Security.Principal.Windows.dll",
|
||||
"lib/netstandard2.0/System.Security.Principal.Windows.dll",
|
||||
"lib/netstandard2.0/System.Security.Principal.Windows.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"ref/net46/System.Security.Principal.Windows.dll",
|
||||
"ref/net461/System.Security.Principal.Windows.dll",
|
||||
"ref/net461/System.Security.Principal.Windows.xml",
|
||||
"ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
|
||||
"ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/System.Security.Principal.Windows.dll",
|
||||
"ref/netstandard1.3/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
|
||||
"ref/netstandard2.0/System.Security.Principal.Windows.dll",
|
||||
"ref/netstandard2.0/System.Security.Principal.Windows.xml",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
|
||||
"runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
|
||||
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
|
||||
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
|
||||
"runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
|
||||
"runtimes/win/lib/uap10.0.16299/_._",
|
||||
"system.security.principal.windows.5.0.0.nupkg.sha512",
|
||||
"system.security.principal.windows.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"sha512": "U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
|
||||
"type": "package",
|
||||
"path": "zstdsharp.port/0.7.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net461/ZstdSharp.dll",
|
||||
"lib/net5.0/ZstdSharp.dll",
|
||||
"lib/net6.0/ZstdSharp.dll",
|
||||
"lib/net7.0/ZstdSharp.dll",
|
||||
"lib/netcoreapp3.1/ZstdSharp.dll",
|
||||
"lib/netstandard2.0/ZstdSharp.dll",
|
||||
"lib/netstandard2.1/ZstdSharp.dll",
|
||||
"zstdsharp.port.0.7.3.nupkg.sha512",
|
||||
"zstdsharp.port.nuspec"
|
||||
]
|
||||
},
|
||||
"Entity/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../Entity/Entity.csproj",
|
||||
"msbuildProject": "../Entity/Entity.csproj"
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net8.0": [
|
||||
"Entity >= 1.0.0"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/Users/fantasy/.nuget/packages/": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj",
|
||||
"projectName": "Hotfix",
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj",
|
||||
"packagesPath": "/Users/fantasy/.nuget/packages/",
|
||||
"outputPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"UsingMicrosoftNETSdk": false,
|
||||
"configFilePaths": [
|
||||
"/Users/fantasy/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {
|
||||
"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj": {
|
||||
"projectPath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "all"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
30
聊天系统课程代码/Server/Hotfix/obj/project.nuget.cache
Normal file
30
聊天系统课程代码/Server/Hotfix/obj/project.nuget.cache
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "1odcgIZCGY0=",
|
||||
"success": true,
|
||||
"projectFilePath": "/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"/Users/fantasy/.nuget/packages/commandlineparser/2.9.1/commandlineparser.2.9.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/dnsclient/1.6.1/dnsclient.1.6.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/fantasy-net/2024.1.17/fantasy-net.2024.1.17.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/microsoft.extensions.logging.abstractions/2.0.0/microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/microsoft.netcore.platforms/5.0.0/microsoft.netcore.platforms.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/microsoft.win32.registry/5.0.0/microsoft.win32.registry.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/mongodb.bson/3.0.0/mongodb.bson.3.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/mongodb.driver/3.0.0/mongodb.driver.3.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/protobuf-net/3.2.45/protobuf-net.3.2.45.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/protobuf-net.core/3.2.45/protobuf-net.core.3.2.45.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/sharpcompress/0.30.1/sharpcompress.0.30.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/snappier/1.0.0/snappier.1.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.buffers/4.5.1/system.buffers.4.5.1.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.collections.immutable/7.0.0/system.collections.immutable.7.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.io.pipelines/8.0.0/system.io.pipelines.8.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.memory/4.5.5/system.memory.4.5.5.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.runtime.compilerservices.unsafe/5.0.0/system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.security.accesscontrol/5.0.0/system.security.accesscontrol.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/system.security.principal.windows/5.0.0/system.security.principal.windows.5.0.0.nupkg.sha512",
|
||||
"/Users/fantasy/.nuget/packages/zstdsharp.port/0.7.3/zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
1
聊天系统课程代码/Server/Hotfix/obj/project.packagespec.json
Normal file
1
聊天系统课程代码/Server/Hotfix/obj/project.packagespec.json
Normal file
@@ -0,0 +1 @@
|
||||
"restore":{"projectUniqueName":"/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj","projectName":"Hotfix","projectPath":"/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/Hotfix.csproj","outputPath":"/Users/fantasy/Code/ServerLessions/Chat/Server/Hotfix/obj/","projectStyle":"PackageReference","UsingMicrosoftNETSdk":false,"originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj":{"projectPath":"/Users/fantasy/Code/ServerLessions/Chat/Server/Entity/Entity.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"all"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"}}
|
||||
@@ -0,0 +1 @@
|
||||
17324493181399999
|
||||
1
聊天系统课程代码/Server/Hotfix/obj/rider.project.restore.info
Normal file
1
聊天系统课程代码/Server/Hotfix/obj/rider.project.restore.info
Normal file
@@ -0,0 +1 @@
|
||||
17331012454241289
|
||||
BIN
聊天系统课程代码/Server/Main/.DS_Store
vendored
Normal file
BIN
聊天系统课程代码/Server/Main/.DS_Store
vendored
Normal file
Binary file not shown.
27
聊天系统课程代码/Server/Main/Main.csproj
Normal file
27
聊天系统课程代码/Server/Main/Main.csproj
Normal file
@@ -0,0 +1,27 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>../../Bin/Debug/</OutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>../../Bin/Release/</OutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Entity\Entity.csproj" />
|
||||
<ProjectReference Include="..\Hotfix\Hotfix.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Fantasy-Net.NLog" Version="2024.1.3" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
90
聊天系统课程代码/Server/Main/NLog.config
Normal file
90
聊天系统课程代码/Server/Main/NLog.config
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
|
||||
<targets async="true">
|
||||
<target name="ServerDebug" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Debug.log"
|
||||
layout="${longdate} ${callsite:className=false:methodName=false:fileName=true:includeSourcePath=false:skipFrames=2} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerInfo" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Info.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerWarn" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Warn.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerError" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Error.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerTrace" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Trace.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ConsoleColor" xsi:type="ColoredConsole"
|
||||
useDefaultRowHighlightingRules="false"
|
||||
layout="${longdate} ${message}">
|
||||
<highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkGreen" />
|
||||
<highlight-row condition="level == LogLevel.Info" foregroundColor="Gray" />
|
||||
<highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" />
|
||||
<highlight-row condition="level == LogLevel.Error" foregroundColor="DarkRed" />
|
||||
<highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" />
|
||||
</target>
|
||||
</targets>
|
||||
<rules>
|
||||
<!-- 控制台 调试或编辑器启动的时候会调用-->
|
||||
<logger ruleName="ConsoleTrace" name="Server" level="Trace" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleDebug" name="Server" level="Debug" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleInfo" name="Server" level="Info" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleWarn" name="Server" level="Warn" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleError" name="Server" level="Error" writeTo="ConsoleColor" />
|
||||
<!-- 服务端日志输出文件 发布到服务器后会调用-->
|
||||
<logger ruleName="ServerDebug" name="Server" level="Debug" writeTo="ServerDebug" />
|
||||
<logger ruleName="ServerTrace" name="Server" level="Trace" writeTo="ServerTrace" />
|
||||
<logger ruleName="ServerInfo" name="Server" level="Info" writeTo="ServerInfo" />
|
||||
<logger ruleName="ServerWarn" name="Server" level="Warn" writeTo="ServerWarn" />
|
||||
<logger ruleName="ServerError" name="Server" level="Error" writeTo="ServerError" />
|
||||
</rules>
|
||||
</nlog>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user