diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index d9b4e5d..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-# Specify filepatterns you want git to ignore.
-obj/
-Bin/
-bin/
-Temp/
-Library/
-Logs/
-temp/
-DocFx/
-global.json
-
-# 项目素材
-ResLibrary/
-# Unity项目文件
-examples/**/Unity/*.sln
-examples/**/Unity/*.csproj
-examples/**/Unity/.vsconfig
-
-# Client-Unity
-HybridCLRData/
-AssetBundles/
-UserSettings/
-# 忽略Packages.Unity包下的.meta
-Packages.Unity/**/*.meta
-
-
-# Other
-.idea
-.vs
-.vscode
-*.DS_Store
-# 不排除示例项目的.vscode
-!examples/**/.vscode
-!Tools/**/.vscode
-examples/**/Unity/.vscode
diff --git a/.idea/.idea.Server/.idea/.gitignore b/.idea/.idea.Server/.idea/.gitignore
new file mode 100644
index 0000000..52325c1
--- /dev/null
+++ b/.idea/.idea.Server/.idea/.gitignore
@@ -0,0 +1,13 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# Rider 忽略的文件
+/.idea.Server.iml
+/modules.xml
+/projectSettingsUpdater.xml
+/contentModel.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.Server/.idea/indexLayout.xml b/.idea/.idea.Server/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.Server/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Config/private_key.pem b/Config/private_key.pem
deleted file mode 100644
index 8e1c59b..0000000
--- a/Config/private_key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDPgvJvOMVwyzhw
-CjMXpmuopnsiPVt5OCAlYa4u32MxLbQ/hzGWt5BEnJtrzlHRzgI20Z5pNtco6w5R
-JU26y+RixmcNp28kWIVmHKA457HiexdamnThdDVGjsTZ98BZHQNWAdmlR0AWjyaF
-Se0w/7qBDLgebn+OENxKfga10i7jVgVfwtomTDBwFl2dDwL+rYVxrt7iWFtAvJ6b
-aV9UAjmNXvy/MH9pIBUOAJ6mvDkq/wNSTTrBX1Kun/M7axoheaZ5fDbdLrHnOEew
-LAjsncRl1+XXwEbhHa7UQk4qa7DJhUQkx61CT2WS1+q45g2Z0N5Caop+CpVZPWBd
-yNkLbedNAgMBAAECggEAM7LwYxjeCfK7giBsZ8NA1cD6cwad3FbJHX8XVhq2HAnC
-u0QbrOzZTtrElwiNVmvQnec+JADzfICJbdqRIc2L/jbndF2nYUMDozPVEDBbX21i
-3WIXZhcdcdF+hj6FJ76EdwBZgOW+OBCcnH8VTsybouywD3bgpRyawZ1h3xk5MM5p
-udZBTv6pHJu4KDCWBziWyLFAFOd2u9NgaRxeHbpq09AvwHyjXK5bKTwOCWFNW9mj
-FHGo0Pk7hYeYVGa3HktIQ3oAiMiyKLdeB/4SZc35RH6wWGOhLi1jqDgAKuTzVMt+
-jDWh6ozggEVx8NCrEWtZpSsxlBhWDfxzZd1lFOwMAQKBgQD4KaybHNCPLmJhg8fS
-J5MhJZBEfyE5fenrMjftLI7c4wo805idggk8c6mBERstYjLPg+hDnjoQHZmy8i0I
-MLfebH2ts+tqyx12gmKC7zRjNfEBW3QjH8mH5Lq0bF9cPrZj7AVDpzxCAuB9xGfn
-WwvuNdcx1cWGgAl5zE5CcfvbTQKBgQDWEJ5kHRH39tXbz0Mqbj3CXKsCskZvqSGt
-4WH35Jx7lZV1iIU/IL+mmQcZLALczOTRuN0Vq3LcyoZSaS/3d3OQEsKKYzJGZNOg
-nqtS4v2sO/ywSBpduw5cQfZrmOk3x4v1CTzsx6IhCCZFR5S9kWrnqSCVzdtvasnV
-z3zq3Dw8AQKBgQCaXGnGDhVYipSdbXgUq5MkEhZ71MwY0852AsWw3H98vCi5DzEm
-ACW4mYU9CCPsheFvHPCTZs9dCNx655LFPnCQhNFkA78SrYcFGTMnmJzwfTQNERLb
-akFUKx1LbwGeAlA3NS9NFrAvq1RyRoIO8Z4pLQpPMFZuRCQgw8mGIRp1HQKBgQCc
-EW+5Y+xm0cKnyJuagtdqLi/L/ngWDsRsRmcr2bQw8iUOlOM43EJ+TxF6y7imjIfD
-U7l0hBRxXwLBcMk07hUGFHdbd+j+o6Ibd7NG8hGqke2wBFGcxrU4lCr51XkrXsPu
-eba+lunglVV5qy+Jakz76zXDolt7ButyhBz6CmmsAQKBgHVDjpIGsyojxq19OtLm
-xm3GuK2/+9VruRJ9B4yX2uwj2+x53rCxV6zWkBDMJtjyUjb7epz4xkau73KYoncR
-B9om+4Nmo+R/p3ACgGjMDoaadyUD1hVM4R+d4VqNv3Ck7YPd/Ehiz3uZRD4njo8D
-w7xwwzHNjgpL5+xeiMsaUOL9
------END PRIVATE KEY-----
diff --git a/Config/public_key.pem b/Config/public_key.pem
deleted file mode 100644
index 8c2fea3..0000000
--- a/Config/public_key.pem
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz4LybzjFcMs4cAozF6Zr
-qKZ7Ij1beTggJWGuLt9jMS20P4cxlreQRJyba85R0c4CNtGeaTbXKOsOUSVNusvk
-YsZnDadvJFiFZhygOOex4nsXWpp04XQ1Ro7E2ffAWR0DVgHZpUdAFo8mhUntMP+6
-gQy4Hm5/jhDcSn4GtdIu41YFX8LaJkwwcBZdnQ8C/q2Fca7e4lhbQLyem2lfVAI5
-jV78vzB/aSAVDgCeprw5Kv8DUk06wV9Srp/zO2saIXmmeXw23S6x5zhHsCwI7J3E
-Zdfl18BG4R2u1EJOKmuwyYVEJMetQk9lktfquOYNmdDeQmqKfgqVWT1gXcjZC23n
-TQIDAQAB
------END PUBLIC KEY-----
diff --git a/Config/密钥20250805230750/应用公钥RSA2048.txt b/Config/密钥20250805230750/应用公钥RSA2048.txt
deleted file mode 100644
index 687589b..0000000
--- a/Config/密钥20250805230750/应用公钥RSA2048.txt
+++ /dev/null
@@ -1 +0,0 @@
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj6EL7hSzceNVL5NFa8HLhtqvxEUHSVh8ChDRhHmltDyZ7pdsesiOBPS2lU++LztOrwNv4Q4KyUnoJ2OPHZAObaZyxXMW89SDJo8hkfx7mgPxhCtLxazcnBBoq+FVEbV24hRlYYpXpEkc2gAu7EmnphnCLpsMLn1WP2d+URxCNbHxy8IKD6Cl9NErKTgbmm5AB0bL+fd2vtxH/u3rVPBHM7Cu3rO37NjsUdY62nE88+IBp6jLT099F7ixz2mVqFeCvubnWv8vowl0Sj9zOhx+xz+h9UjysnJA0fPK6xl0s2ArGfGmNJNHQncAPxDj8t7t4/8oJr4oBiYrw4TChMikmwIDAQAB
\ No newline at end of file
diff --git a/Config/密钥20250805230750/应用私钥RSA2048-敏感数据,请妥善保管.txt b/Config/密钥20250805230750/应用私钥RSA2048-敏感数据,请妥善保管.txt
deleted file mode 100644
index 98577a5..0000000
--- a/Config/密钥20250805230750/应用私钥RSA2048-敏感数据,请妥善保管.txt
+++ /dev/null
@@ -1 +0,0 @@
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCPoQvuFLNx41Uvk0VrwcuG2q/ERQdJWHwKENGEeaW0PJnul2x6yI4E9LaVT74vO06vA2/hDgrJSegnY48dkA5tpnLFcxbz1IMmjyGR/HuaA/GEK0vFrNycEGir4VURtXbiFGVhilekSRzaAC7sSaemGcIumwwufVY/Z35RHEI1sfHLwgoPoKX00SspOBuabkAHRsv593a+3Ef+7etU8EczsK7es7fs2OxR1jracTzz4gGnqMtPT30XuLHPaZWoV4K+5uda/y+jCXRKP3M6HH7HP6H1SPKyckDR88rrGXSzYCsZ8aY0k0dCdwA/EOPy3u3j/ygmvigGJivDhMKEyKSbAgMBAAECggEAdMsUlGko8jdWEfXDwbg49FPoEcXAAxh85QKAHSV+ZW3SDn37rGxhcA4+WnQZxvaHKTG2TF/KzZvXuA/xVKzLzsZHFeBcjbIFY9mIBto0+Cy0vDEo0Hmcexuswffd4SSao4TKW+LPGbyKRYtYnLPYK+1ORe+2nCc3dx+FTBeaj2X9d1d4f1PsdvNrPEkNz+p+dhY/g9Gm7FyS3WLSnUt0j25m3p+fvxvUInwhLBE9fyUlP2t/wHXOkd/KR1ncw5HebYK/dgN1RSa/izXmfFpKGGfxb4o5ZeYJgzvn5nkJHfBerki+5nuYhlcXm4qJn95V8LZ8yixSq7hTNy3tJx4CYQKBgQD32JI579iw2F/fLKwjnv1o61uLQJYvGB8JsWACVdny5kJt+AJaggCHNhMUOLgj1/Gywt6V9CEUhCminxIKC5gW12HfQtV6L9/lyA3ymND5lyWZKFqvLlksHqyvqlyK31uLm6UE4nP6NQ+NWfo5ue6gS1vp/wvhiM3LOFsPxDNgzQKBgQCUWrs3wX3YvHIODu8bgYBpgSin6tpNIxm1iojHnp5XtXcP5fNgOpRb0QjJjckdpFoLvCWURybhhDbJDwDiucm69RlT1fkKeQrAeiKpEQuKySN1xUjqQyKYVd4LKJl7rJT7RSgxar5nsbF5dCb98wj8TXeKeTNbYEI6O0MKhVj7BwKBgBpjot4sXYQm5b5bgVChoxXCyZKAI/2LsfJUQoa9IWGthrEy0P1WDjxXU5y5lVGrsn54JT8OKV+H2u8HxOHw7hawhClDcnt6EXrj3ChSgR2yLDysgUtZwgDimzxxBT18HsE0p1Nn0TV45NkGFZCD7ZZ/r5+wmlE/Qbo7m+aH23iZAoGAMHTKPdXnYwl6P3lFRDiyVsOnIeGl2Bgk55UORBVdJszQzNKRAddgafUG5751+EacWsTjiWEMJBDpTBaodWW1rGkuEqILLA6JIoFCHPLCUFyORoNf45R2EkfJtN9X8ntWVhQqoql486mojEESE1R0lORArWwVCD2SpC6DIUaY37UCgYAHbSfZUUeDMHlVMF6ZF4SbDsYw1ATPkhPOWnoBhm2zk0marGnXKlUdsRBL2JwYek648dSQ9Y9G4+sFt6qROBWel1U72Y76zczs34OkeYIEUPYLlL2P859tWtDLv3gnA4m65EdxfrxkUyFJiS+4+c4MDLPt3mNhNHA19/wtRsJsjA==
\ No newline at end of file
diff --git a/Entity/AssemblyHelper.cs b/Entity/AssemblyHelper.cs
index ae347d3..8eae71b 100644
--- a/Entity/AssemblyHelper.cs
+++ b/Entity/AssemblyHelper.cs
@@ -1,30 +1,30 @@
-using System.Reflection;
using System.Runtime.Loader;
+using Fantasy.Helper;
-namespace NB
+namespace Fantasy
{
public static class AssemblyHelper
{
private const string HotfixDll = "Hotfix";
private static AssemblyLoadContext? _assemblyLoadContext = null;
+
- public static System.Reflection.Assembly[] Assemblies
+ public static void Initialize()
{
- get
- {
- var assemblies = new System.Reflection.Assembly[2];
- assemblies[0] = LoadEntityAssembly();
- assemblies[1] = LoadHotfixAssembly();
- return assemblies;
- }
+ LoadEntityAssembly();
+ LoadHotfixAssembly();
}
-
- private static System.Reflection.Assembly LoadEntityAssembly()
+
+ private static void LoadEntityAssembly()
{
- return typeof(AssemblyHelper).Assembly;
+ // .NET 运行时采用延迟加载机制,如果代码中不使用程序集的类型,程序集不会被加载
+ // 执行一下,触发运行时强制加载从而自动注册到框架中
+ // 因为AssemblyHelper代码在Entity项目里,所以需要获取这个项目的Assembly
+ // 然后调用EnsureLoaded方法强制加载一下
+ typeof(AssemblyHelper).Assembly.EnsureLoaded();
}
-
- private static System.Reflection.Assembly LoadHotfixAssembly()
+
+ public static System.Reflection.Assembly LoadHotfixAssembly()
{
if (_assemblyLoadContext != null)
{
@@ -33,9 +33,16 @@ namespace NB
}
_assemblyLoadContext = 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 _assemblyLoadContext.LoadFromStream(new MemoryStream(dllBytes), new MemoryStream(pdbBytes));
+ var dllBytes = File.ReadAllBytes(Path.Combine(AppContext.BaseDirectory, $"{HotfixDll}.dll"));
+ var pdbBytes = File.ReadAllBytes(Path.Combine(AppContext.BaseDirectory, $"{HotfixDll}.pdb"));
+ var assembly = _assemblyLoadContext.LoadFromStream(new MemoryStream(dllBytes), new MemoryStream(pdbBytes));
+ // 强制触发 ModuleInitializer 执行
+ // AssemblyLoadContext.LoadFromStream 只加载程序集到内存,不会自动触发 ModuleInitializer
+ // 必须访问程序集中的类型才能触发初始化,这里通过反射调用生成的 AssemblyMarker
+ // 注意:此方法仅用于热重载场景(JIT),Native AOT 不支持动态加载
+ // 拿到Assembly就用EnsureLoaded()方法强制触发
+ assembly.EnsureLoaded();
+ return assembly;
}
}
-}
\ No newline at end of file
+}
diff --git a/Entity/LockType.cs b/Entity/Authentication/LockType.cs
similarity index 100%
rename from Entity/LockType.cs
rename to Entity/Authentication/LockType.cs
diff --git a/Entity/Entity.csproj b/Entity/Entity.csproj
index 5a06389..3641447 100644
--- a/Entity/Entity.csproj
+++ b/Entity/Entity.csproj
@@ -1,39 +1,21 @@
-
+
-
- enable
- enable
- Linux
- default
- net9.0
-
+
+ net9.0
+ Entity
+ latest
+ enable
+ enable
+
-
- TRACE;FANTASY_NET
-
+
+
+
+
+
-
- TRACE;FANTASY_NET
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/Entity/Fantasy.config b/Entity/Fantasy.config
new file mode 100644
index 0000000..b50d8ab
--- /dev/null
+++ b/Entity/Fantasy.config
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Entity/Fantasy.xsd b/Entity/Fantasy.xsd
new file mode 100644
index 0000000..6a64f66
--- /dev/null
+++ b/Entity/Fantasy.xsd
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+ Fantasy框架配置文件根元素
+
+
+
+
+
+ 配置表路径设置
+
+
+
+
+ 网络运行时配置
+
+
+
+
+ 会话运行时配置
+
+
+
+
+ 服务器配置
+
+
+
+
+
+
+
+
+
+
+ 配置表文件路径
+
+
+
+
+
+
+
+
+
+ 机器配置列表
+
+
+
+
+ 进程配置列表
+
+
+
+
+ 世界配置列表
+
+
+
+
+ 场景配置列表
+
+
+
+
+ 单位配置列表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 机器ID
+
+
+
+
+ 外网IP地址
+
+
+
+
+ 外网绑定IP地址
+
+
+
+
+ 内网绑定IP地址
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 进程ID
+
+
+
+
+ 所属机器ID
+
+
+
+
+ 启动分组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 数据库类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 数据库名称
+
+
+
+
+ 数据库连接字符串
+
+
+
+
+
+
+
+
+ 世界中配置的数据库
+
+
+
+
+
+
+
+ 世界ID
+
+
+
+
+ 世界名称
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 场景ID
+
+
+
+
+ 进程配置ID
+
+
+
+
+ 世界配置ID
+
+
+
+
+ 场景运行模式
+
+
+
+
+
+
+
+
+
+
+
+ 场景类型字符串
+
+
+
+
+ 网络协议类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 外网端口
+
+
+
+
+ 内网端口
+
+
+
+
+
+
+
+
+ 服务器内部网络协议
+
+
+
+
+
+
+
+
+
+
+ 消息体最大长度(字节),默认1048560字节(约1.02MB)
+
+
+
+
+
+
+
+
+ Session idle check timeout (in milliseconds)
+
+
+
+
+ Session idle check interval (in milliseconds)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 单位字典数据
+
+
+
+
+
+ 单位ID
+
+
+
+
+ 单位名称
+
+
+
+
+ 单位模型
+
+
+
+
+
+
+
+
+
+
+ 字典键
+
+
+
+
+ 字典值
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Entity/Generate/ConfigTable/Entity/BaitConfig.cs b/Entity/Generate/ConfigTable/Entity/BaitConfig.cs
index a38b53c..5a8723f 100644
--- a/Entity/Generate/ConfigTable/Entity/BaitConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/BaitConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class BaitConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class BaitConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/BasicConfig.cs b/Entity/Generate/ConfigTable/Entity/BasicConfig.cs
index a9a9cbb..783a7ea 100644
--- a/Entity/Generate/ConfigTable/Entity/BasicConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/BasicConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class BasicConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class BasicConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/BobberConfig.cs b/Entity/Generate/ConfigTable/Entity/BobberConfig.cs
index d6ca6db..53fe5f7 100644
--- a/Entity/Generate/ConfigTable/Entity/BobberConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/BobberConfig.cs
@@ -6,25 +6,20 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class BobberConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class BobberConfig : ASerialize, IConfigTable
{
-
- [ProtoMember(1)]
- public uint Id { get; set; } // Id
- [ProtoMember(2)]
- public uint Displacement { get; set; } // 位移
- [ProtoMember(3)]
- public uint NightLight { get; set; } // 是否夜光
- [ProtoIgnore]
- public uint Key => Id;
-
+ [ProtoMember(1)] public uint Id { get; set; } // Id
+ [ProtoMember(2)] public uint Displacement { get; set; } // 位移
+ [ProtoMember(3)] public uint NightLight { get; set; } // 是否夜光
+ [ProtoIgnore] public uint Key => Id;
+
#region Static
-
+
private static ConfigContext Context => ConfigTableHelper.Table();
public static BobberConfig Get(uint key)
@@ -36,7 +31,7 @@ namespace NBF
{
return Context.Get(match);
}
-
+
public static BobberConfig Fist()
{
return Context.Fist();
@@ -56,7 +51,7 @@ namespace NBF
{
return Context.Last(match);
}
-
+
public static int Count()
{
return Context.Count();
@@ -76,10 +71,12 @@ namespace NBF
{
return Context.GetList(match);
}
+
public static void ParseJson(Newtonsoft.Json.Linq.JArray arr)
{
ConfigTableHelper.ParseLine(arr);
}
+
#endregion
}
}
\ No newline at end of file
diff --git a/Entity/Generate/ConfigTable/Entity/FeederConfig.cs b/Entity/Generate/ConfigTable/Entity/FeederConfig.cs
index efab711..25c867b 100644
--- a/Entity/Generate/ConfigTable/Entity/FeederConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/FeederConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class FeederConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class FeederConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/FishConfig.cs b/Entity/Generate/ConfigTable/Entity/FishConfig.cs
index ed434cf..35aa809 100644
--- a/Entity/Generate/ConfigTable/Entity/FishConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/FishConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class FishConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class FishConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/HookConfig.cs b/Entity/Generate/ConfigTable/Entity/HookConfig.cs
index 4fc28ce..b5316e9 100644
--- a/Entity/Generate/ConfigTable/Entity/HookConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/HookConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class HookConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class HookConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/InitConfig.cs b/Entity/Generate/ConfigTable/Entity/InitConfig.cs
index 7abba17..b4e2547 100644
--- a/Entity/Generate/ConfigTable/Entity/InitConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/InitConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class InitConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class InitConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/ItemConfig.cs b/Entity/Generate/ConfigTable/Entity/ItemConfig.cs
index 89302f0..bdbcd39 100644
--- a/Entity/Generate/ConfigTable/Entity/ItemConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/ItemConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class ItemConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class ItemConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/LineConfig.cs b/Entity/Generate/ConfigTable/Entity/LineConfig.cs
index 0ab44c7..3059d1e 100644
--- a/Entity/Generate/ConfigTable/Entity/LineConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/LineConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class LineConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class LineConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/LureConfig.cs b/Entity/Generate/ConfigTable/Entity/LureConfig.cs
index 0b733e2..95b61f7 100644
--- a/Entity/Generate/ConfigTable/Entity/LureConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/LureConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class LureConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class LureConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/ReelConfig.cs b/Entity/Generate/ConfigTable/Entity/ReelConfig.cs
index 2ea450c..359d6f7 100644
--- a/Entity/Generate/ConfigTable/Entity/ReelConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/ReelConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class ReelConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class ReelConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/RingConfig.cs b/Entity/Generate/ConfigTable/Entity/RingConfig.cs
index 42b537f..ea332f6 100644
--- a/Entity/Generate/ConfigTable/Entity/RingConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/RingConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class RingConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class RingConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/RodConfig.cs b/Entity/Generate/ConfigTable/Entity/RodConfig.cs
index 72659d8..8f7099e 100644
--- a/Entity/Generate/ConfigTable/Entity/RodConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/RodConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class RodConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class RodConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/RodRingConfig.cs b/Entity/Generate/ConfigTable/Entity/RodRingConfig.cs
index 5502d6a..808ae56 100644
--- a/Entity/Generate/ConfigTable/Entity/RodRingConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/RodRingConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class RodRingConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class RodRingConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/ConfigTable/Entity/WeightConfig.cs b/Entity/Generate/ConfigTable/Entity/WeightConfig.cs
index 95d355c..da45f6f 100644
--- a/Entity/Generate/ConfigTable/Entity/WeightConfig.cs
+++ b/Entity/Generate/ConfigTable/Entity/WeightConfig.cs
@@ -6,12 +6,12 @@ using System.Reflection;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Fantasy.Serialize;
-using Fantasy.ConfigTable;
+using NBF.ConfigTable;
namespace NBF
{
[ProtoContract]
- public sealed partial class WeightConfig : ASerialize, IProto, IConfigTable
+ public sealed partial class WeightConfig : ASerialize, IConfigTable
{
[ProtoMember(1)]
diff --git a/Entity/Generate/CustomExport/SceneType.cs b/Entity/Generate/CustomExport/SceneType.cs
deleted file mode 100644
index 87363cb..0000000
--- a/Entity/Generate/CustomExport/SceneType.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-namespace Fantasy
-{
- // 生成器自动生成,请不要手动编辑。
- public static class SceneType
- {
- public const int Authentication = 1;
- public const int Addressable = 2;
- public const int Gate = 3;
- public const int Game = 4;
- public const int Map = 5;
- public const int Activity = 6;
- public const int Cache = 7;
- public const int Social = 8;
-
- public static readonly Dictionary SceneTypeDic = new Dictionary()
- {
- { "Authentication", 1 },
- { "Addressable", 2 },
- { "Gate", 3 },
- { "Game", 4 },
- { "Map", 5 },
- { "Activity", 6 },
- { "Cache", 7 },
- { "Social", 8 },
- };
- }
-}
diff --git a/Entity/Generate/NetworkProtocol/CommonProtoData.cs b/Entity/Generate/NetworkProtocol/CommonProtoData.cs
index c90bbd5..86b2633 100644
--- a/Entity/Generate/NetworkProtocol/CommonProtoData.cs
+++ b/Entity/Generate/NetworkProtocol/CommonProtoData.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,12 +17,12 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
///
/// 角色基础信息
///
[ProtoContract]
- public partial class RoleBaseInfo : AMessage, IProto
+ public partial class RoleBaseInfo : AMessage
{
public static RoleBaseInfo Create(Scene scene)
{
@@ -53,7 +54,7 @@ namespace Fantasy
public VipInfo VipInfo { get; set; }
}
[ProtoContract]
- public partial class KeyValueInt64 : AMessage, IProto
+ public partial class KeyValueInt64 : AMessage
{
public static KeyValueInt64 Create(Scene scene)
{
@@ -76,7 +77,7 @@ namespace Fantasy
/// 角色信息
///
[ProtoContract]
- public partial class RoleInfo : AMessage, IProto
+ public partial class RoleInfo : AMessage
{
public static RoleInfo Create(Scene scene)
{
@@ -123,7 +124,7 @@ namespace Fantasy
/// 角色信息
///
[ProtoContract]
- public partial class RoleSimpleInfo : AMessage, IProto
+ public partial class RoleSimpleInfo : AMessage
{
public static RoleSimpleInfo Create(Scene scene)
{
@@ -161,7 +162,7 @@ namespace Fantasy
/// VIP信息
///
[ProtoContract]
- public partial class VipInfo : AMessage, IProto
+ public partial class VipInfo : AMessage
{
public static VipInfo Create(Scene scene)
{
@@ -187,7 +188,7 @@ namespace Fantasy
/// 奖励信息
///
[ProtoContract]
- public partial class AwardInfo : AMessage, IProto
+ public partial class AwardInfo : AMessage
{
public static AwardInfo Create(Scene scene)
{
@@ -210,7 +211,7 @@ namespace Fantasy
/// 玩家当前使用钓组信息
///
[ProtoContract]
- public partial class ItemBindInfo : AMessage, IProto
+ public partial class ItemBindInfo : AMessage
{
public static ItemBindInfo Create(Scene scene)
{
@@ -233,7 +234,7 @@ namespace Fantasy
/// 物品信息
///
[ProtoContract]
- public partial class ItemInfo : AMessage, IProto
+ public partial class ItemInfo : AMessage
{
public static ItemInfo Create(Scene scene)
{
@@ -268,7 +269,7 @@ namespace Fantasy
/// fish信息
///
[ProtoContract]
- public partial class FishInfo : AMessage, IProto
+ public partial class FishInfo : AMessage
{
public static FishInfo Create(Scene scene)
{
@@ -297,7 +298,7 @@ namespace Fantasy
public long ExpirationTime { get; set; }
}
[ProtoContract]
- public partial class ActivityInfo : AMessage, IProto
+ public partial class ActivityInfo : AMessage
{
public static ActivityInfo Create(Scene scene)
{
@@ -326,7 +327,7 @@ namespace Fantasy
/// 技能情况
///
[ProtoContract]
- public partial class SkillInfo : AMessage, IProto
+ public partial class SkillInfo : AMessage
{
public static SkillInfo Create(Scene scene)
{
@@ -349,3 +350,4 @@ namespace Fantasy
public int Exp { get; set; }
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/GameMessage.cs b/Entity/Generate/NetworkProtocol/GameMessage.cs
index 26c8f1c..fee0e91 100644
--- a/Entity/Generate/NetworkProtocol/GameMessage.cs
+++ b/Entity/Generate/NetworkProtocol/GameMessage.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,7 +17,7 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
///
/// /////////// ******** 物品信息 *******/////////////
///
@@ -24,7 +25,7 @@ namespace Fantasy
/// 请求背包列表
///
[ProtoContract]
- public partial class C2Game_GetItemsRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_GetItemsRequest : AMessage, ICustomRouteRequest
{
public static C2Game_GetItemsRequest Create(Scene scene)
{
@@ -46,7 +47,7 @@ namespace Fantasy
/// 请求背包列表响应
///
[ProtoContract]
- public partial class Game2C_GetItemsResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_GetItemsResponse : AMessage, ICustomRouteResponse
{
public static Game2C_GetItemsResponse Create(Scene scene)
{
@@ -73,7 +74,7 @@ namespace Fantasy
/// 请求使用物品
///
[ProtoContract]
- public partial class C2Game_UseItemRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_UseItemRequest : AMessage, ICustomRouteRequest
{
public static C2Game_UseItemRequest Create(Scene scene)
{
@@ -95,7 +96,7 @@ namespace Fantasy
/// 请求使用物品响应
///
[ProtoContract]
- public partial class Game2C_UseItemResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_UseItemResponse : AMessage, ICustomRouteResponse
{
public static Game2C_UseItemResponse Create(Scene scene)
{
@@ -116,7 +117,7 @@ namespace Fantasy
/// 物品变化
///
[ProtoContract]
- public partial class Game2C_ItemChange : AMessage, ICustomRouteMessage, IProto
+ public partial class Game2C_ItemChange : AMessage, ICustomRouteMessage
{
public static Game2C_ItemChange Create(Scene scene)
{
@@ -148,7 +149,7 @@ namespace Fantasy
/// 请求安装或取下配件
///
[ProtoContract]
- public partial class C2Game_RigChangeRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_RigChangeRequest : AMessage, ICustomRouteRequest
{
public static C2Game_RigChangeRequest Create(Scene scene)
{
@@ -179,7 +180,7 @@ namespace Fantasy
/// 请求安装配件响应
///
[ProtoContract]
- public partial class Game2C_RigChangeResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_RigChangeResponse : AMessage, ICustomRouteResponse
{
public static Game2C_RigChangeResponse Create(Scene scene)
{
@@ -206,7 +207,7 @@ namespace Fantasy
/// 请求鱼护列表
///
[ProtoContract]
- public partial class C2Game_GetFishsRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_GetFishsRequest : AMessage, ICustomRouteRequest
{
public static C2Game_GetFishsRequest Create(Scene scene)
{
@@ -228,7 +229,7 @@ namespace Fantasy
/// 请求鱼护列表响应
///
[ProtoContract]
- public partial class Game2C_GetFishsResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_GetFishsResponse : AMessage, ICustomRouteResponse
{
public static Game2C_GetFishsResponse Create(Scene scene)
{
@@ -252,7 +253,7 @@ namespace Fantasy
/// 鱼护变化
///
[ProtoContract]
- public partial class Game2C_FishChange : AMessage, ICustomRouteMessage, IProto
+ public partial class Game2C_FishChange : AMessage, ICustomRouteMessage
{
public static Game2C_FishChange Create(Scene scene)
{
@@ -281,7 +282,7 @@ namespace Fantasy
/// 请求出售
///
[ProtoContract]
- public partial class C2Game_SellFishRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_SellFishRequest : AMessage, ICustomRouteRequest
{
public static C2Game_SellFishRequest Create(Scene scene)
{
@@ -306,7 +307,7 @@ namespace Fantasy
/// 请求出售响应
///
[ProtoContract]
- public partial class Game2C_SellFishResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_SellFishResponse : AMessage, ICustomRouteResponse
{
public static Game2C_SellFishResponse Create(Scene scene)
{
@@ -333,7 +334,7 @@ namespace Fantasy
/// 请求购买
///
[ProtoContract]
- public partial class C2Game_BuyRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_BuyRequest : AMessage, ICustomRouteRequest
{
public static C2Game_BuyRequest Create(Scene scene)
{
@@ -355,7 +356,7 @@ namespace Fantasy
/// 请求购买响应
///
[ProtoContract]
- public partial class Game2C_BuyResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_BuyResponse : AMessage, ICustomRouteResponse
{
public static Game2C_BuyResponse Create(Scene scene)
{
@@ -376,3 +377,4 @@ namespace Fantasy
public uint ErrorCode { get; set; }
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/InnerMessage.cs b/Entity/Generate/NetworkProtocol/InnerMessage.cs
index 34819f3..60806ce 100644
--- a/Entity/Generate/NetworkProtocol/InnerMessage.cs
+++ b/Entity/Generate/NetworkProtocol/InnerMessage.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,12 +17,12 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
///
/// 通知游戏服角色进入该游戏服
///
[ProtoContract]
- public partial class G2Common_EnterRequest : AMessage, IRouteRequest, IProto
+ public partial class G2Common_EnterRequest : AMessage, IRouteRequest
{
public static G2Common_EnterRequest Create(Scene scene)
{
@@ -47,7 +48,7 @@ namespace Fantasy
public int RouteType { get; set; }
}
[ProtoContract]
- public partial class G2Common_EnterResponse : AMessage, IRouteResponse, IProto
+ public partial class G2Common_EnterResponse : AMessage, IRouteResponse
{
public static G2Common_EnterResponse Create(Scene scene)
{
@@ -71,7 +72,7 @@ namespace Fantasy
public uint ErrorCode { get; set; }
}
[ProtoContract]
- public partial class G2Common_ExitRequest : AMessage, IRouteRequest, IProto
+ public partial class G2Common_ExitRequest : AMessage, IRouteRequest
{
public static G2Common_ExitRequest Create(Scene scene)
{
@@ -94,7 +95,7 @@ namespace Fantasy
public long GateRouteId { get; set; }
}
[ProtoContract]
- public partial class Common2G_ExitResponse : AMessage, IRouteResponse, IProto
+ public partial class Common2G_ExitResponse : AMessage, IRouteResponse
{
public static Common2G_ExitResponse Create(Scene scene)
{
@@ -115,7 +116,7 @@ namespace Fantasy
/// 获取玩家基础信息
///
[ProtoContract]
- public partial class S2G_GetPlayerBasicInfoRequest : AMessage, IRouteRequest, IProto
+ public partial class S2G_GetPlayerBasicInfoRequest : AMessage, IRouteRequest
{
public static S2G_GetPlayerBasicInfoRequest Create(Scene scene)
{
@@ -138,7 +139,7 @@ namespace Fantasy
/// 获取玩家基础信息响应
///
[ProtoContract]
- public partial class G2S_GetPlayerBasicInfoResponse : AMessage, IRouteResponse, IProto
+ public partial class G2S_GetPlayerBasicInfoResponse : AMessage, IRouteResponse
{
public static G2S_GetPlayerBasicInfoResponse Create(Scene scene)
{
@@ -159,7 +160,7 @@ namespace Fantasy
public uint ErrorCode { get; set; }
}
[ProtoContract]
- public partial class S2G_ChatMessage : AMessage, IRouteMessage, IProto
+ public partial class S2G_ChatMessage : AMessage, IRouteMessage
{
public static S2G_ChatMessage Create(Scene scene)
{
@@ -183,7 +184,7 @@ namespace Fantasy
/// 创建聊天频道
///
[ProtoContract]
- public partial class Club2Chat_CreateChannel : AMessage, IRouteMessage, IProto
+ public partial class Club2Chat_CreateChannel : AMessage, IRouteMessage
{
public static Club2Chat_CreateChannel Create(Scene scene)
{
@@ -204,7 +205,7 @@ namespace Fantasy
/// 请求进入房间
///
[ProtoContract]
- public partial class G2Map_EnterMapRequest : AMessage, IRouteRequest, IProto
+ public partial class G2Map_EnterMapRequest : AMessage, IRouteRequest
{
public static G2Map_EnterMapRequest Create(Scene scene)
{
@@ -233,7 +234,7 @@ namespace Fantasy
/// 请求进入房间响应
///
[ProtoContract]
- public partial class Map2G_EnterMapResponse : AMessage, IRouteResponse, IProto
+ public partial class Map2G_EnterMapResponse : AMessage, IRouteResponse
{
public static Map2G_EnterMapResponse Create(Scene scene)
{
@@ -263,7 +264,7 @@ namespace Fantasy
/// 请求离开房间
///
[ProtoContract]
- public partial class G2Map_ExitRoomRequest : AMessage, IRouteRequest, IProto
+ public partial class G2Map_ExitRoomRequest : AMessage, IRouteRequest
{
public static G2Map_ExitRoomRequest Create(Scene scene)
{
@@ -289,7 +290,7 @@ namespace Fantasy
/// 请求离开房间响应
///
[ProtoContract]
- public partial class Map2G_ExiRoomResponse : AMessage, IRouteResponse, IProto
+ public partial class Map2G_ExiRoomResponse : AMessage, IRouteResponse
{
public static Map2G_ExiRoomResponse Create(Scene scene)
{
@@ -307,3 +308,4 @@ namespace Fantasy
public uint ErrorCode { get; set; }
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/MapMessage.cs b/Entity/Generate/NetworkProtocol/MapMessage.cs
index 2a02cc7..f36fb38 100644
--- a/Entity/Generate/NetworkProtocol/MapMessage.cs
+++ b/Entity/Generate/NetworkProtocol/MapMessage.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,12 +17,12 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
///
/// 请求创建房间
///
[ProtoContract]
- public partial class C2Map_CreateRoomRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Map_CreateRoomRequest : AMessage, ICustomRouteRequest
{
public static C2Map_CreateRoomRequest Create(Scene scene)
{
@@ -46,7 +47,7 @@ namespace Fantasy
/// 请求创建房间成功
///
[ProtoContract]
- public partial class Map2C_CreateRoomResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Map2C_CreateRoomResponse : AMessage, ICustomRouteResponse
{
public static Map2C_CreateRoomResponse Create(Scene scene)
{
@@ -73,7 +74,7 @@ namespace Fantasy
/// 请求网关离开房间(离开房间,但是不离开地图)
///
[ProtoContract]
- public partial class C2G_ExitRoomRequest : AMessage, IRequest, IProto
+ public partial class C2G_ExitRoomRequest : AMessage, IRequest
{
public static C2G_ExitRoomRequest Create(Scene scene)
{
@@ -96,7 +97,7 @@ namespace Fantasy
/// 请求网关进入离开响应
///
[ProtoContract]
- public partial class G2C_ExitRoomResponse : AMessage, IResponse, IProto
+ public partial class G2C_ExitRoomResponse : AMessage, IResponse
{
public static G2C_ExitRoomResponse Create(Scene scene)
{
@@ -120,7 +121,7 @@ namespace Fantasy
/// 请求网关进入地图
///
[ProtoContract]
- public partial class C2G_EnterMapRequest : AMessage, IRequest, IProto
+ public partial class C2G_EnterMapRequest : AMessage, IRequest
{
public static C2G_EnterMapRequest Create(Scene scene)
{
@@ -146,7 +147,7 @@ namespace Fantasy
/// 请求网关进入房间响应
///
[ProtoContract]
- public partial class G2C_EnterMapResponse : AMessage, IResponse, IProto
+ public partial class G2C_EnterMapResponse : AMessage, IResponse
{
public static G2C_EnterMapResponse Create(Scene scene)
{
@@ -176,7 +177,7 @@ namespace Fantasy
/// 通知客户端切换地图
///
[ProtoContract]
- public partial class Map2C_ChangeMap : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_ChangeMap : AMessage, ICustomRouteMessage
{
public static Map2C_ChangeMap Create(Scene scene)
{
@@ -199,3 +200,4 @@ namespace Fantasy
public int Node { get; set; }
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/MapProtoData.cs b/Entity/Generate/NetworkProtocol/MapProtoData.cs
index 23552c9..2578965 100644
--- a/Entity/Generate/NetworkProtocol/MapProtoData.cs
+++ b/Entity/Generate/NetworkProtocol/MapProtoData.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,9 +17,9 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
[ProtoContract]
- public partial class Vector3Info : AMessage, IProto
+ public partial class Vector3Info : AMessage
{
public static Vector3Info Create(Scene scene)
{
@@ -41,7 +42,7 @@ namespace Fantasy
public float z { get; set; }
}
[ProtoContract]
- public partial class Vector2Info : AMessage, IProto
+ public partial class Vector2Info : AMessage
{
public static Vector2Info Create(Scene scene)
{
@@ -61,7 +62,7 @@ namespace Fantasy
public float y { get; set; }
}
[ProtoContract]
- public partial class QuaternionInfo : AMessage, IProto
+ public partial class QuaternionInfo : AMessage
{
public static QuaternionInfo Create(Scene scene)
{
@@ -90,7 +91,7 @@ namespace Fantasy
/// 玩家当前使用钓组信息
///
[ProtoContract]
- public partial class GearInfo : AMessage, IProto
+ public partial class GearInfo : AMessage
{
public static GearInfo Create(Scene scene)
{
@@ -119,7 +120,7 @@ namespace Fantasy
public List Propertys = new List();
}
[ProtoContract]
- public partial class UnitStateInfo : AMessage, IProto
+ public partial class UnitStateInfo : AMessage
{
public static UnitStateInfo Create(Scene scene)
{
@@ -139,7 +140,7 @@ namespace Fantasy
public List Propertys = new List();
}
[ProtoContract]
- public partial class MapUnitInfo : AMessage, IProto
+ public partial class MapUnitInfo : AMessage
{
public static MapUnitInfo Create(Scene scene)
{
@@ -174,3 +175,4 @@ namespace Fantasy
public List Propertys = new List();
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/OuterMessage.cs b/Entity/Generate/NetworkProtocol/OuterMessage.cs
index 4af2453..a90f841 100644
--- a/Entity/Generate/NetworkProtocol/OuterMessage.cs
+++ b/Entity/Generate/NetworkProtocol/OuterMessage.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,9 +17,9 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
[ProtoContract]
- public partial class C2A_LoginRequest : AMessage, IRequest, IProto
+ public partial class C2A_LoginRequest : AMessage, IRequest
{
public static C2A_LoginRequest Create(Scene scene)
{
@@ -47,7 +48,7 @@ namespace Fantasy
public int Region { get; set; }
}
[ProtoContract]
- public partial class A2C_LoginResponse : AMessage, IResponse, IProto
+ public partial class A2C_LoginResponse : AMessage, IResponse
{
public static A2C_LoginResponse Create(Scene scene)
{
@@ -71,7 +72,7 @@ namespace Fantasy
/// 客户端登录到Gate服务器
///
[ProtoContract]
- public partial class C2G_LoginRequest : AMessage, IRequest, IProto
+ public partial class C2G_LoginRequest : AMessage, IRequest
{
public static C2G_LoginRequest Create(Scene scene)
{
@@ -91,7 +92,7 @@ namespace Fantasy
public string ToKen { get; set; }
}
[ProtoContract]
- public partial class G2C_LoginResponse : AMessage, IResponse, IProto
+ public partial class G2C_LoginResponse : AMessage, IResponse
{
public static G2C_LoginResponse Create(Scene scene)
{
@@ -115,7 +116,7 @@ namespace Fantasy
/// 通知客户端重复登录
///
[ProtoContract]
- public partial class G2C_RepeatLogin : AMessage, IMessage, IProto
+ public partial class G2C_RepeatLogin : AMessage, IMessage
{
public static G2C_RepeatLogin Create(Scene scene)
{
@@ -130,7 +131,7 @@ namespace Fantasy
public uint OpCode() { return OuterOpcode.G2C_RepeatLogin; }
}
[ProtoContract]
- public partial class C2Game_GetRoleInfoRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2Game_GetRoleInfoRequest : AMessage, ICustomRouteRequest
{
public static C2Game_GetRoleInfoRequest Create(Scene scene)
{
@@ -149,7 +150,7 @@ namespace Fantasy
public int RouteType => Fantasy.RouteType.GameRoute;
}
[ProtoContract]
- public partial class Game2C_GetRoleInfoResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class Game2C_GetRoleInfoResponse : AMessage, ICustomRouteResponse
{
public static Game2C_GetRoleInfoResponse Create(Scene scene)
{
@@ -173,3 +174,4 @@ namespace Fantasy
public uint ErrorCode { get; set; }
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/RoomMessage.cs b/Entity/Generate/NetworkProtocol/RoomMessage.cs
index 8bb37e2..41c37e0 100644
--- a/Entity/Generate/NetworkProtocol/RoomMessage.cs
+++ b/Entity/Generate/NetworkProtocol/RoomMessage.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,12 +17,12 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
///
/// 用户进入地图
///
[ProtoContract]
- public partial class Map2C_RoleEnterRoomNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_RoleEnterRoomNotify : AMessage, ICustomRouteMessage
{
public static Map2C_RoleEnterRoomNotify Create(Scene scene)
{
@@ -44,7 +45,7 @@ namespace Fantasy
/// 用户离开地图
///
[ProtoContract]
- public partial class Map2C_RoleExitRoomNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_RoleExitRoomNotify : AMessage, ICustomRouteMessage
{
public static Map2C_RoleExitRoomNotify Create(Scene scene)
{
@@ -64,7 +65,7 @@ namespace Fantasy
public long Id { get; set; }
}
[ProtoContract]
- public partial class C2Map_RolePropertyChange : AMessage, ICustomRouteMessage, IProto
+ public partial class C2Map_RolePropertyChange : AMessage, ICustomRouteMessage
{
public static C2Map_RolePropertyChange Create(Scene scene)
{
@@ -87,7 +88,7 @@ namespace Fantasy
/// 玩家状态变化同步
///
[ProtoContract]
- public partial class Map2C_RoleStateNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_RoleStateNotify : AMessage, ICustomRouteMessage
{
public static Map2C_RoleStateNotify Create(Scene scene)
{
@@ -113,7 +114,7 @@ namespace Fantasy
/// 玩家钓组变化
///
[ProtoContract]
- public partial class Map2C_RoleGearChangeNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_RoleGearChangeNotify : AMessage, ICustomRouteMessage
{
public static Map2C_RoleGearChangeNotify Create(Scene scene)
{
@@ -136,7 +137,7 @@ namespace Fantasy
public List Gears = new List();
}
[ProtoContract]
- public partial class Map2C_RolePropertyChangeNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_RolePropertyChangeNotify : AMessage, ICustomRouteMessage
{
public static Map2C_RolePropertyChangeNotify Create(Scene scene)
{
@@ -159,7 +160,7 @@ namespace Fantasy
public List Propertys = new List();
}
[ProtoContract]
- public partial class C2Map_Move : AMessage, ICustomRouteMessage, IProto
+ public partial class C2Map_Move : AMessage, ICustomRouteMessage
{
public static C2Map_Move Create(Scene scene)
{
@@ -194,7 +195,7 @@ namespace Fantasy
public long Timestamp { get; set; }
}
[ProtoContract]
- public partial class C2Map_Look : AMessage, ICustomRouteMessage, IProto
+ public partial class C2Map_Look : AMessage, ICustomRouteMessage
{
public static C2Map_Look Create(Scene scene)
{
@@ -220,7 +221,7 @@ namespace Fantasy
/// 玩家移动推送
///
[ProtoContract]
- public partial class Map2C_MoveNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_MoveNotify : AMessage, ICustomRouteMessage
{
public static Map2C_MoveNotify Create(Scene scene)
{
@@ -261,7 +262,7 @@ namespace Fantasy
/// 玩家旋转推送
///
[ProtoContract]
- public partial class Map2C_LookeNotify : AMessage, ICustomRouteMessage, IProto
+ public partial class Map2C_LookeNotify : AMessage, ICustomRouteMessage
{
public static Map2C_LookeNotify Create(Scene scene)
{
@@ -287,3 +288,4 @@ namespace Fantasy
public long Timestamp { get; set; }
}
}
+
diff --git a/Entity/Generate/NetworkProtocol/SocialMessage.cs b/Entity/Generate/NetworkProtocol/SocialMessage.cs
index 5a802a5..cf1ab9b 100644
--- a/Entity/Generate/NetworkProtocol/SocialMessage.cs
+++ b/Entity/Generate/NetworkProtocol/SocialMessage.cs
@@ -1,5 +1,6 @@
using ProtoBuf;
+using System;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
@@ -16,7 +17,7 @@ using Fantasy.Serialize;
#pragma warning disable CS8618
namespace Fantasy
-{
+{
///
/// /////////// ******** 私聊/邮件 *******/////////////
///
@@ -24,7 +25,7 @@ namespace Fantasy
/// 会话信息
///
[ProtoContract]
- public partial class ConversationInfo : AMessage, IProto
+ public partial class ConversationInfo : AMessage
{
public static ConversationInfo Create(Scene scene)
{
@@ -44,7 +45,7 @@ namespace Fantasy
public List List = new List();
}
[ProtoContract]
- public partial class MailInfo : AMessage, IProto
+ public partial class MailInfo : AMessage
{
public static MailInfo Create(Scene scene)
{
@@ -82,7 +83,7 @@ namespace Fantasy
/// 请求会话列表
///
[ProtoContract]
- public partial class C2S_GetConversationsRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_GetConversationsRequest : AMessage, ICustomRouteRequest
{
public static C2S_GetConversationsRequest Create(Scene scene)
{
@@ -104,7 +105,7 @@ namespace Fantasy
/// 请求会话列表响应
///
[ProtoContract]
- public partial class S2C_GetConversationsResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_GetConversationsResponse : AMessage, ICustomRouteResponse
{
public static S2C_GetConversationsResponse Create(Scene scene)
{
@@ -128,7 +129,7 @@ namespace Fantasy
/// 发送邮件消息
///
[ProtoContract]
- public partial class C2S_SendMailRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_SendMailRequest : AMessage, ICustomRouteRequest
{
public static C2S_SendMailRequest Create(Scene scene)
{
@@ -159,7 +160,7 @@ namespace Fantasy
/// 发送邮件消息响应
///
[ProtoContract]
- public partial class S2C_SendMailResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_SendMailResponse : AMessage, ICustomRouteResponse
{
public static S2C_SendMailResponse Create(Scene scene)
{
@@ -180,7 +181,7 @@ namespace Fantasy
/// 发送删除会话消息
///
[ProtoContract]
- public partial class C2S_DeleteMailRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_DeleteMailRequest : AMessage, ICustomRouteRequest
{
public static C2S_DeleteMailRequest Create(Scene scene)
{
@@ -205,7 +206,7 @@ namespace Fantasy
/// 发送删除会话消息响应
///
[ProtoContract]
- public partial class S2C_DeleteMailResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_DeleteMailResponse : AMessage, ICustomRouteResponse
{
public static S2C_DeleteMailResponse Create(Scene scene)
{
@@ -229,7 +230,7 @@ namespace Fantasy
/// 新邮件推送
///
[ProtoContract]
- public partial class S2C_HaveMail : AMessage, ICustomRouteMessage, IProto
+ public partial class S2C_HaveMail : AMessage, ICustomRouteMessage
{
public static S2C_HaveMail Create(Scene scene)
{
@@ -252,7 +253,7 @@ namespace Fantasy
public string Key { get; set; }
}
[ProtoContract]
- public partial class S2C_MailState : AMessage, ICustomRouteMessage, IProto
+ public partial class S2C_MailState : AMessage, ICustomRouteMessage
{
public static S2C_MailState Create(Scene scene)
{
@@ -278,7 +279,7 @@ namespace Fantasy
/// /////////// ******** 频道聊天 *******/////////////
///
[ProtoContract]
- public partial class ChatUserInfo : AMessage, IProto
+ public partial class ChatUserInfo : AMessage
{
public static ChatUserInfo Create(Scene scene)
{
@@ -298,7 +299,7 @@ namespace Fantasy
public long Name { get; set; }
}
[ProtoContract]
- public partial class ChatMessageInfo : AMessage, IProto
+ public partial class ChatMessageInfo : AMessage
{
public static ChatMessageInfo Create(Scene scene)
{
@@ -330,7 +331,7 @@ namespace Fantasy
/// 创建频道
///
[ProtoContract]
- public partial class C2S_CreateChannelRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_CreateChannelRequest : AMessage, ICustomRouteRequest
{
public static C2S_CreateChannelRequest Create(Scene scene)
{
@@ -355,7 +356,7 @@ namespace Fantasy
/// 创建频道响应
///
[ProtoContract]
- public partial class S2C_CreateChannelResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_CreateChannelResponse : AMessage, ICustomRouteResponse
{
public static S2C_CreateChannelResponse Create(Scene scene)
{
@@ -379,7 +380,7 @@ namespace Fantasy
/// 请求进入频道
///
[ProtoContract]
- public partial class C2S_JoinChannelRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_JoinChannelRequest : AMessage, ICustomRouteRequest
{
public static C2S_JoinChannelRequest Create(Scene scene)
{
@@ -404,7 +405,7 @@ namespace Fantasy
/// 进入频道响应
///
[ProtoContract]
- public partial class S2C_JoinChannelResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_JoinChannelResponse : AMessage, ICustomRouteResponse
{
public static S2C_JoinChannelResponse Create(Scene scene)
{
@@ -425,7 +426,7 @@ namespace Fantasy
/// 发送消息
///
[ProtoContract]
- public partial class C2S_SendMessageRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_SendMessageRequest : AMessage, ICustomRouteRequest
{
public static C2S_SendMessageRequest Create(Scene scene)
{
@@ -453,7 +454,7 @@ namespace Fantasy
/// 发送消息响应
///
[ProtoContract]
- public partial class S2C_SendMessageResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_SendMessageResponse : AMessage, ICustomRouteResponse
{
public static S2C_SendMessageResponse Create(Scene scene)
{
@@ -474,7 +475,7 @@ namespace Fantasy
/// 推送消息
///
[ProtoContract]
- public partial class S2C_Message : AMessage, ICustomRouteMessage, IProto
+ public partial class S2C_Message : AMessage, ICustomRouteMessage
{
public static S2C_Message Create(Scene scene)
{
@@ -497,7 +498,7 @@ namespace Fantasy
/// /////////// ******** 工会 *******/////////////
///
[ProtoContract]
- public partial class ClubInfo : AMessage, IProto
+ public partial class ClubInfo : AMessage
{
public static ClubInfo Create(Scene scene)
{
@@ -529,7 +530,7 @@ namespace Fantasy
/// 请求创建工会
///
[ProtoContract]
- public partial class C2S_CreateClubRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_CreateClubRequest : AMessage, ICustomRouteRequest
{
public static C2S_CreateClubRequest Create(Scene scene)
{
@@ -554,7 +555,7 @@ namespace Fantasy
/// 创建工会响应
///
[ProtoContract]
- public partial class S2C_CreateClubResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_CreateClubResponse : AMessage, ICustomRouteResponse
{
public static S2C_CreateClubResponse Create(Scene scene)
{
@@ -578,7 +579,7 @@ namespace Fantasy
/// 请求工会信息
///
[ProtoContract]
- public partial class C2S_GetClubInfoRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_GetClubInfoRequest : AMessage, ICustomRouteRequest
{
public static C2S_GetClubInfoRequest Create(Scene scene)
{
@@ -603,7 +604,7 @@ namespace Fantasy
/// 响应工会信息
///
[ProtoContract]
- public partial class S2C_GetClubInfoResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_GetClubInfoResponse : AMessage, ICustomRouteResponse
{
public static S2C_GetClubInfoResponse Create(Scene scene)
{
@@ -627,7 +628,7 @@ namespace Fantasy
/// 请求工会成员列表
///
[ProtoContract]
- public partial class C2S_GetMemberListRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_GetMemberListRequest : AMessage, ICustomRouteRequest
{
public static C2S_GetMemberListRequest Create(Scene scene)
{
@@ -652,7 +653,7 @@ namespace Fantasy
/// 响应工会成员列表
///
[ProtoContract]
- public partial class S2C_GetMemberListResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_GetMemberListResponse : AMessage, ICustomRouteResponse
{
public static S2C_GetMemberListResponse Create(Scene scene)
{
@@ -676,7 +677,7 @@ namespace Fantasy
/// 获取工会列表请求
///
[ProtoContract]
- public partial class C2S_GetClubListRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_GetClubListRequest : AMessage, ICustomRouteRequest
{
public static C2S_GetClubListRequest Create(Scene scene)
{
@@ -698,7 +699,7 @@ namespace Fantasy
/// 获取工会列表响应
///
[ProtoContract]
- public partial class S2C_GetClubListResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_GetClubListResponse : AMessage, ICustomRouteResponse
{
public static S2C_GetClubListResponse Create(Scene scene)
{
@@ -722,7 +723,7 @@ namespace Fantasy
/// 请求加入工会
///
[ProtoContract]
- public partial class C2S_JoinClubRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_JoinClubRequest : AMessage, ICustomRouteRequest
{
public static C2S_JoinClubRequest Create(Scene scene)
{
@@ -747,7 +748,7 @@ namespace Fantasy
/// 响应加入工会
///
[ProtoContract]
- public partial class S2C_JoinClubResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_JoinClubResponse : AMessage, ICustomRouteResponse
{
public static S2C_JoinClubResponse Create(Scene scene)
{
@@ -771,7 +772,7 @@ namespace Fantasy
/// 请求退出工会
///
[ProtoContract]
- public partial class C2S_LeaveClubRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_LeaveClubRequest : AMessage, ICustomRouteRequest
{
public static C2S_LeaveClubRequest Create(Scene scene)
{
@@ -796,7 +797,7 @@ namespace Fantasy
/// 响应退出工会
///
[ProtoContract]
- public partial class S2C_LeaveClubResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_LeaveClubResponse : AMessage, ICustomRouteResponse
{
public static S2C_LeaveClubResponse Create(Scene scene)
{
@@ -820,7 +821,7 @@ namespace Fantasy
/// 请求解散工会
///
[ProtoContract]
- public partial class C2S_DissolveClubRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_DissolveClubRequest : AMessage, ICustomRouteRequest
{
public static C2S_DissolveClubRequest Create(Scene scene)
{
@@ -845,7 +846,7 @@ namespace Fantasy
/// 响应解散工会
///
[ProtoContract]
- public partial class S2C_DissolveClubResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_DissolveClubResponse : AMessage, ICustomRouteResponse
{
public static S2C_DissolveClubResponse Create(Scene scene)
{
@@ -869,7 +870,7 @@ namespace Fantasy
/// 请求操作申请
///
[ProtoContract]
- public partial class C2S_DisposeJoinRequest : AMessage, ICustomRouteRequest, IProto
+ public partial class C2S_DisposeJoinRequest : AMessage, ICustomRouteRequest
{
public static C2S_DisposeJoinRequest Create(Scene scene)
{
@@ -900,7 +901,7 @@ namespace Fantasy
/// 响应操作申请
///
[ProtoContract]
- public partial class S2C_DisposeJoinResponse : AMessage, ICustomRouteResponse, IProto
+ public partial class S2C_DisposeJoinResponse : AMessage, ICustomRouteResponse
{
public static S2C_DisposeJoinResponse Create(Scene scene)
{
@@ -930,7 +931,7 @@ namespace Fantasy
/// 推送消息
///
[ProtoContract]
- public partial class S2C_ClubChange : AMessage, ICustomRouteMessage, IProto
+ public partial class S2C_ClubChange : AMessage, ICustomRouteMessage
{
public static S2C_ClubChange Create(Scene scene)
{
@@ -953,3 +954,4 @@ namespace Fantasy
public int ChangeType { get; set; }
}
}
+
diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigContext.cs b/Entity/Modules/ConfigTable/ConfigContext.cs
similarity index 97%
rename from Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigContext.cs
rename to Entity/Modules/ConfigTable/ConfigContext.cs
index c3e1836..c45b677 100644
--- a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigContext.cs
+++ b/Entity/Modules/ConfigTable/ConfigContext.cs
@@ -1,4 +1,4 @@
-namespace Fantasy.ConfigTable;
+namespace NBF.ConfigTable;
public interface IConfigContext
{
diff --git a/Entity/Modules/ConfigTable/ConfigTableHelper.cs b/Entity/Modules/ConfigTable/ConfigTableHelper.cs
new file mode 100644
index 0000000..e7243b8
--- /dev/null
+++ b/Entity/Modules/ConfigTable/ConfigTableHelper.cs
@@ -0,0 +1,122 @@
+using System.Reflection;
+using Fantasy;
+using Fantasy.Helper;
+using Newtonsoft.Json.Linq;
+
+
+// ReSharper disable SuspiciousTypeConversion.Global
+
+namespace NBF.ConfigTable
+{
+ ///
+ /// 配置表帮助类
+ ///
+ public static class ConfigTableHelper
+ {
+ private static readonly Dictionary _dictionary = new Dictionary();
+
+ public static void Initialize()
+ {
+ //解析配置文件
+ var gameConfigText = File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "configs.Json"));
+
+ Initialize(gameConfigText, typeof(Fantasy.AssemblyHelper).Assembly);
+ }
+
+ ///
+ /// 初始化ConfigTableHelper
+ ///
+ public static void Initialize(string json, params System.Reflection.Assembly[] assemblies)
+ {
+ _dictionary.Clear();
+ var jsonObj = JObject.Parse(json);
+ Dictionary tokens = new();
+ foreach (var item in jsonObj)
+ {
+ try
+ {
+ var name = item.Key;
+ var value = item.Value;
+ if (value is JArray jArray)
+ {
+ tokens[name] = jArray;
+ }
+ }
+ catch (Exception e)
+ {
+ Log.Error($"读表异常,请检查,name={item.Key} ex={e}");
+ }
+ }
+
+ foreach (var type in GetAllConfigTableTypes(assemblies))
+ {
+ var name = type.Name;
+ if (tokens.TryGetValue(name, out var jArray))
+ {
+ // 通过反射调用 ParseJson 方法
+ var parseMethod = type.GetMethod("ParseJson", BindingFlags.Public | BindingFlags.Static);
+ parseMethod?.Invoke(null, [jArray]);
+ }
+ }
+
+ // var d = _dictionary;
+ }
+
+ public static ConfigContext? Table() where T : IConfigTable
+ {
+ var type = typeof(T);
+ if (_dictionary.TryGetValue(type, out var context))
+ {
+ return context as ConfigContext;
+ }
+
+ var jsonContext = new ConfigContext();
+ _dictionary[type] = jsonContext;
+ return jsonContext;
+ }
+
+ public static List ParseLine(JArray arr) where T : IConfigTable, new()
+ {
+ List list = new List();
+ foreach (var jToken in arr)
+ {
+ T? instance = jToken.ToObject();
+
+ if (instance != null)
+ {
+ list.Add(instance);
+ }
+ }
+
+ var context = Table();
+ context?.Association(list);
+
+ return list;
+ }
+
+ ///
+ /// 获取所有实现了 IConfigTable 接口的非抽象类
+ ///
+ /// 所有非抽象的配置对象类
+ private static List GetAllConfigTableTypes(params System.Reflection.Assembly[] assemblies)
+ {
+ var types = new List();
+ var interfaceType = typeof(IConfigTable);
+
+ // 遍历当前程序集中的所有类型
+ foreach (var assembly in assemblies)
+ {
+ foreach (var type in assembly.GetTypes())
+ {
+ // 检查是否实现了 IConfigTable 接口,并且不是抽象类
+ if (interfaceType.IsAssignableFrom(type) && !type.IsAbstract && !type.IsInterface)
+ {
+ types.Add(type);
+ }
+ }
+ }
+
+ return types;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs b/Entity/Modules/ConfigTable/Interface/IConfigTable.cs
similarity index 83%
rename from Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs
rename to Entity/Modules/ConfigTable/Interface/IConfigTable.cs
index 56e3c8c..faefeb5 100644
--- a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs
+++ b/Entity/Modules/ConfigTable/Interface/IConfigTable.cs
@@ -1,4 +1,4 @@
-namespace Fantasy.ConfigTable
+namespace NBF.ConfigTable
{
///
/// 表示是一个配置文件
diff --git a/Entity/bin/Debug/net9.0/Entity.deps.json b/Entity/bin/Debug/net9.0/Entity.deps.json
new file mode 100644
index 0000000..e441805
--- /dev/null
+++ b/Entity/bin/Debug/net9.0/Entity.deps.json
@@ -0,0 +1,408 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {
+ "Entity/1.0.0": {
+ "dependencies": {
+ "Fantasy-Net": "2025.2.0",
+ "Microsoft.IdentityModel.Tokens": "8.14.0",
+ "System.IdentityModel.Tokens.Jwt": "8.14.0",
+ "ThirdParty": "1.0.0"
+ },
+ "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/2025.2.0": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.5.0",
+ "MongoDB.Driver": "3.5.0",
+ "Newtonsoft.Json": "13.0.4",
+ "protobuf-net": "3.2.56"
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {},
+ "Microsoft.Extensions.Logging.Abstractions/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.14.0": {
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "8.14.0.0",
+ "fileVersion": "8.14.0.60815"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.14.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Tokens": "8.14.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
+ "assemblyVersion": "8.14.0.0",
+ "fileVersion": "8.14.0.60815"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.14.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.14.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "assemblyVersion": "8.14.0.0",
+ "fileVersion": "8.14.0.60815"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.14.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.0",
+ "Microsoft.IdentityModel.Logging": "8.14.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "assemblyVersion": "8.14.0.0",
+ "fileVersion": "8.14.0.60815"
+ }
+ }
+ },
+ "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.5.0": {
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "assemblyVersion": "3.5.0.0",
+ "fileVersion": "3.5.0.0"
+ }
+ }
+ },
+ "MongoDB.Driver/3.5.0": {
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.0",
+ "MongoDB.Bson": "3.5.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.5.0.0",
+ "fileVersion": "3.5.0.0"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.4": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.4.30916"
+ }
+ }
+ },
+ "protobuf-net/3.2.56": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.56"
+ },
+ "runtime": {
+ "lib/net8.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.56.57311"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.56": {
+ "runtime": {
+ "lib/net8.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.56.57311"
+ }
+ }
+ },
+ "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.IdentityModel.Tokens.Jwt/8.14.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.JsonWebTokens": "8.14.0",
+ "Microsoft.IdentityModel.Tokens": "8.14.0"
+ },
+ "runtime": {
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
+ "assemblyVersion": "8.14.0.0",
+ "fileVersion": "8.14.0.60815"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "ThirdParty/1.0.0": {
+ "runtime": {
+ "ThirdParty.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.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/2025.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vCkduwxkMlH8GozyS+ZlWGLC4nGjFGaL13Ah4w5HL55XAJaAhe+RX+gbSRNBeJf1Uu0cjG2MgVyS4NX7bXdN4g==",
+ "path": "fantasy-net/2025.2.0",
+ "hashPath": "fantasy-net.2025.2.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
+ "path": "microsoft.extensions.logging.abstractions/8.0.0",
+ "hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/8.14.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==",
+ "path": "microsoft.identitymodel.abstractions/8.14.0",
+ "hashPath": "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.14.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==",
+ "path": "microsoft.identitymodel.jsonwebtokens/8.14.0",
+ "hashPath": "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Logging/8.14.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==",
+ "path": "microsoft.identitymodel.logging/8.14.0",
+ "hashPath": "microsoft.identitymodel.logging.8.14.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Tokens/8.14.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==",
+ "path": "microsoft.identitymodel.tokens/8.14.0",
+ "hashPath": "microsoft.identitymodel.tokens.8.14.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.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JGNK6BanLDEifgkvPLqVFCPus5EDCy416pxf1dxUBRSVd3D9+NB3AvMVX190eXlk5/UXuCxpsQv7jWfNKvppBQ==",
+ "path": "mongodb.bson/3.5.0",
+ "hashPath": "mongodb.bson.3.5.0.nupkg.sha512"
+ },
+ "MongoDB.Driver/3.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ST90u7psyMkNNOWFgSkexsrB3kPn7Ynl2DlMFj2rJyYuc6SIxjmzu4ufy51yzM+cPVE1SvVcdb5UFobrRw6cMg==",
+ "path": "mongodb.driver/3.5.0",
+ "hashPath": "mongodb.driver.3.5.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==",
+ "path": "newtonsoft.json/13.0.4",
+ "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512"
+ },
+ "protobuf-net/3.2.56": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4IPJeTYAMNewlN8MDaFkcmR/9hLhJeo9eARnTh104zh7mf+vXT2gu5MUfUnkSQU+CH578Q6vcdU7LQDQPG6eaw==",
+ "path": "protobuf-net/3.2.56",
+ "hashPath": "protobuf-net.3.2.56.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.56": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-d6QOukTpDzs7zZv9tPnBZMtvHDNeHJQXUhMx54g4urUQsXK3oo9U70H9HvklYq7hlQ4A7AHJl7EVEqyCXXIl8Q==",
+ "path": "protobuf-net.core/3.2.56",
+ "hashPath": "protobuf-net.core.3.2.56.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.IdentityModel.Tokens.Jwt/8.14.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==",
+ "path": "system.identitymodel.tokens.jwt/8.14.0",
+ "hashPath": "system.identitymodel.tokens.jwt.8.14.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"
+ },
+ "ThirdParty/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Entity/bin/Debug/net9.0/Entity.dll b/Entity/bin/Debug/net9.0/Entity.dll
new file mode 100644
index 0000000..e3649fb
Binary files /dev/null and b/Entity/bin/Debug/net9.0/Entity.dll differ
diff --git a/Entity/bin/Debug/net9.0/Entity.pdb b/Entity/bin/Debug/net9.0/Entity.pdb
new file mode 100644
index 0000000..aa1be2e
Binary files /dev/null and b/Entity/bin/Debug/net9.0/Entity.pdb differ
diff --git a/Entity/bin/Debug/net9.0/Fantasy.config b/Entity/bin/Debug/net9.0/Fantasy.config
new file mode 100644
index 0000000..b50d8ab
--- /dev/null
+++ b/Entity/bin/Debug/net9.0/Fantasy.config
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Entity/bin/Debug/net9.0/Fantasy.xsd b/Entity/bin/Debug/net9.0/Fantasy.xsd
new file mode 100644
index 0000000..6a64f66
--- /dev/null
+++ b/Entity/bin/Debug/net9.0/Fantasy.xsd
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+ Fantasy框架配置文件根元素
+
+
+
+
+
+ 配置表路径设置
+
+
+
+
+ 网络运行时配置
+
+
+
+
+ 会话运行时配置
+
+
+
+
+ 服务器配置
+
+
+
+
+
+
+
+
+
+
+ 配置表文件路径
+
+
+
+
+
+
+
+
+
+ 机器配置列表
+
+
+
+
+ 进程配置列表
+
+
+
+
+ 世界配置列表
+
+
+
+
+ 场景配置列表
+
+
+
+
+ 单位配置列表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 机器ID
+
+
+
+
+ 外网IP地址
+
+
+
+
+ 外网绑定IP地址
+
+
+
+
+ 内网绑定IP地址
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 进程ID
+
+
+
+
+ 所属机器ID
+
+
+
+
+ 启动分组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 数据库类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 数据库名称
+
+
+
+
+ 数据库连接字符串
+
+
+
+
+
+
+
+
+ 世界中配置的数据库
+
+
+
+
+
+
+
+ 世界ID
+
+
+
+
+ 世界名称
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 场景ID
+
+
+
+
+ 进程配置ID
+
+
+
+
+ 世界配置ID
+
+
+
+
+ 场景运行模式
+
+
+
+
+
+
+
+
+
+
+
+ 场景类型字符串
+
+
+
+
+ 网络协议类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 外网端口
+
+
+
+
+ 内网端口
+
+
+
+
+
+
+
+
+ 服务器内部网络协议
+
+
+
+
+
+
+
+
+
+
+ 消息体最大长度(字节),默认1048560字节(约1.02MB)
+
+
+
+
+
+
+
+
+ Session idle check timeout (in milliseconds)
+
+
+
+
+ Session idle check interval (in milliseconds)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 单位字典数据
+
+
+
+
+
+ 单位ID
+
+
+
+
+ 单位名称
+
+
+
+
+ 单位模型
+
+
+
+
+
+
+
+
+
+
+ 字典键
+
+
+
+
+ 字典值
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Entity/bin/Debug/net9.0/ThirdParty.dll b/Entity/bin/Debug/net9.0/ThirdParty.dll
new file mode 100644
index 0000000..c68db15
Binary files /dev/null and b/Entity/bin/Debug/net9.0/ThirdParty.dll differ
diff --git a/Entity/bin/Debug/net9.0/ThirdParty.pdb b/Entity/bin/Debug/net9.0/ThirdParty.pdb
new file mode 100644
index 0000000..6d74378
Binary files /dev/null and b/Entity/bin/Debug/net9.0/ThirdParty.pdb differ
diff --git a/Entity/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Entity/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..feda5e9
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
diff --git a/Entity/obj/Debug/net9.0/Entity.AssemblyInfo.cs b/Entity/obj/Debug/net9.0/Entity.AssemblyInfo.cs
new file mode 100644
index 0000000..4e9ca95
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/Entity.AssemblyInfo.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+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+7b10d4cb317c9f310649a9cb4afe3882d4b12624")]
+[assembly: System.Reflection.AssemblyProductAttribute("Entity")]
+[assembly: System.Reflection.AssemblyTitleAttribute("Entity")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/Entity/obj/Debug/net9.0/Entity.AssemblyInfoInputs.cache b/Entity/obj/Debug/net9.0/Entity.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..946fdb5
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/Entity.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+4925a41a1713fbdc3c4b16a99814eedf9add8ff230ff3e204d8dc265b8ca499e
diff --git a/Entity/obj/Debug/net9.0/Entity.GeneratedMSBuildEditorConfig.editorconfig b/Entity/obj/Debug/net9.0/Entity.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..3dbeb6a
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/Entity.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.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 = D:\work\Fishing2Server\Entity\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/Entity/obj/Debug/net9.0/Entity.GlobalUsings.g.cs b/Entity/obj/Debug/net9.0/Entity.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/Entity.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+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;
diff --git a/Entity/obj/Debug/net9.0/Entity.assets.cache b/Entity/obj/Debug/net9.0/Entity.assets.cache
new file mode 100644
index 0000000..79321ef
Binary files /dev/null and b/Entity/obj/Debug/net9.0/Entity.assets.cache differ
diff --git a/Entity/obj/Debug/net9.0/Entity.csproj.AssemblyReference.cache b/Entity/obj/Debug/net9.0/Entity.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..ebe7baf
Binary files /dev/null and b/Entity/obj/Debug/net9.0/Entity.csproj.AssemblyReference.cache differ
diff --git a/Entity/obj/Debug/net9.0/Entity.csproj.CoreCompileInputs.cache b/Entity/obj/Debug/net9.0/Entity.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..2d32e9b
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/Entity.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+6062551d1ab69f267bcbdefc9b276d4b2471f6b61b2a4e2cc6c5f261ac8ee2b5
diff --git a/Entity/obj/Debug/net9.0/Entity.csproj.FileListAbsolute.txt b/Entity/obj/Debug/net9.0/Entity.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..7e0352f
--- /dev/null
+++ b/Entity/obj/Debug/net9.0/Entity.csproj.FileListAbsolute.txt
@@ -0,0 +1,17 @@
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\Fantasy.config
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\Fantasy.xsd
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\Entity.deps.json
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\Entity.dll
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\Entity.pdb
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.csproj.AssemblyReference.cache
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.GeneratedMSBuildEditorConfig.editorconfig
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.AssemblyInfoInputs.cache
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.AssemblyInfo.cs
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.csproj.CoreCompileInputs.cache
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.dll
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\refint\Entity.dll
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.pdb
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\ref\Entity.dll
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\ThirdParty.dll
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\bin\Debug\net9.0\ThirdParty.pdb
+D:\work\Fishing2ServerNew\Fishing2\Server\Entity\obj\Debug\net9.0\Entity.csproj.Up2Date
diff --git a/Entity/obj/Debug/net9.0/Entity.csproj.Up2Date b/Entity/obj/Debug/net9.0/Entity.csproj.Up2Date
new file mode 100644
index 0000000..e69de29
diff --git a/Entity/obj/Debug/net9.0/Entity.dll b/Entity/obj/Debug/net9.0/Entity.dll
new file mode 100644
index 0000000..e3649fb
Binary files /dev/null and b/Entity/obj/Debug/net9.0/Entity.dll differ
diff --git a/Entity/obj/Debug/net9.0/Entity.pdb b/Entity/obj/Debug/net9.0/Entity.pdb
new file mode 100644
index 0000000..aa1be2e
Binary files /dev/null and b/Entity/obj/Debug/net9.0/Entity.pdb differ
diff --git a/Entity/obj/Debug/net9.0/ref/Entity.dll b/Entity/obj/Debug/net9.0/ref/Entity.dll
new file mode 100644
index 0000000..973d2df
Binary files /dev/null and b/Entity/obj/Debug/net9.0/ref/Entity.dll differ
diff --git a/Entity/obj/Debug/net9.0/refint/Entity.dll b/Entity/obj/Debug/net9.0/refint/Entity.dll
new file mode 100644
index 0000000..973d2df
Binary files /dev/null and b/Entity/obj/Debug/net9.0/refint/Entity.dll differ
diff --git a/Entity/obj/Entity.csproj.nuget.dgspec.json b/Entity/obj/Entity.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..941e191
--- /dev/null
+++ b/Entity/obj/Entity.csproj.nuget.dgspec.json
@@ -0,0 +1,156 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\work\\Fishing2Server\\Entity\\Entity.csproj": {}
+ },
+ "projects": {
+ "D:\\work\\Fishing2Server\\Entity\\Entity.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\work\\Fishing2Server\\Entity\\Entity.csproj",
+ "projectName": "Entity",
+ "projectPath": "D:\\work\\Fishing2Server\\Entity\\Entity.csproj",
+ "packagesPath": "C:\\Users\\FIREBAT\\.nuget\\packages\\",
+ "outputPath": "D:\\work\\Fishing2Server\\Entity\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\FIREBAT\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {
+ "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj": {
+ "projectPath": "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj"
+ }
+ }
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "dependencies": {
+ "Fantasy-Net": {
+ "target": "Package",
+ "version": "[2025.2.0, )"
+ },
+ "Microsoft.IdentityModel.Tokens": {
+ "target": "Package",
+ "version": "[8.14.0, )"
+ },
+ "System.IdentityModel.Tokens.Jwt": {
+ "target": "Package",
+ "version": "[8.14.0, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ },
+ "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj",
+ "projectName": "ThirdParty",
+ "projectPath": "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj",
+ "packagesPath": "C:\\Users\\FIREBAT\\.nuget\\packages\\",
+ "outputPath": "D:\\work\\Fishing2Server\\ThirdParty\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\FIREBAT\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "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": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Entity/obj/Entity.csproj.nuget.g.props b/Entity/obj/Entity.csproj.nuget.g.props
new file mode 100644
index 0000000..d208a02
--- /dev/null
+++ b/Entity/obj/Entity.csproj.nuget.g.props
@@ -0,0 +1,19 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\FIREBAT\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ PackageReference
+ 6.14.0
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Entity/obj/Entity.csproj.nuget.g.targets b/Entity/obj/Entity.csproj.nuget.g.targets
new file mode 100644
index 0000000..eb7028d
--- /dev/null
+++ b/Entity/obj/Entity.csproj.nuget.g.targets
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Entity/obj/project.assets.json b/Entity/obj/project.assets.json
new file mode 100644
index 0000000..7478cbe
--- /dev/null
+++ b/Entity/obj/project.assets.json
@@ -0,0 +1,1215 @@
+{
+ "version": 3,
+ "targets": {
+ "net9.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/2025.2.0": {
+ "type": "package",
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.5.0",
+ "MongoDB.Driver": "3.5.0",
+ "Newtonsoft.Json": "13.0.4",
+ "protobuf-net": "3.2.56"
+ },
+ "compile": {
+ "lib/net9.0/Fantasy-Net.dll": {}
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {}
+ },
+ "frameworkReferences": [
+ "Microsoft.AspNetCore.App"
+ ],
+ "build": {
+ "build/Fantasy-Net.props": {},
+ "buildTransitive/Fantasy-Net.targets": {}
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
+ },
+ "compile": {
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.14.0": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.14.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.IdentityModel.Tokens": "8.14.0"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.14.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.14.0"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.14.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.0",
+ "Microsoft.IdentityModel.Logging": "8.14.0"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.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.5.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.5.0": {
+ "type": "package",
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "2.0.0",
+ "MongoDB.Bson": "3.5.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.4": {
+ "type": "package",
+ "compile": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "protobuf-net/3.2.56": {
+ "type": "package",
+ "dependencies": {
+ "protobuf-net.Core": "3.2.56"
+ },
+ "compile": {
+ "lib/net8.0/protobuf-net.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/protobuf-net.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.56": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/protobuf-net.Core.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.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.IdentityModel.Tokens.Jwt/8.14.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.IdentityModel.JsonWebTokens": "8.14.0",
+ "Microsoft.IdentityModel.Tokens": "8.14.0"
+ },
+ "compile": {
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "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": {}
+ }
+ },
+ "ThirdParty/1.0.0": {
+ "type": "project",
+ "framework": ".NETCoreApp,Version=v8.0",
+ "compile": {
+ "bin/placeholder/ThirdParty.dll": {}
+ },
+ "runtime": {
+ "bin/placeholder/ThirdParty.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/2025.2.0": {
+ "sha512": "vCkduwxkMlH8GozyS+ZlWGLC4nGjFGaL13Ah4w5HL55XAJaAhe+RX+gbSRNBeJf1Uu0cjG2MgVyS4NX7bXdN4g==",
+ "type": "package",
+ "path": "fantasy-net/2025.2.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE",
+ "README.md",
+ "analyzers/dotnet/cs/Fantasy.SourceGenerator.dll",
+ "build/Fantasy-Net.props",
+ "build/Fantasy-Net.targets",
+ "build/Fantasy.config",
+ "build/Fantasy.xsd",
+ "buildTransitive/Fantasy-Net.targets",
+ "buildTransitive/Fantasy.config",
+ "buildTransitive/Fantasy.xsd",
+ "fantasy-net.2025.2.0.nupkg.sha512",
+ "fantasy-net.nuspec",
+ "icon.png",
+ "lib/net8.0/Fantasy-Net.dll",
+ "lib/net9.0/Fantasy-Net.dll"
+ ]
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
+ "sha512": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==",
+ "type": "package",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net6.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512",
+ "microsoft.extensions.dependencyinjection.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.0": {
+ "sha512": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
+ "type": "package",
+ "path": "microsoft.extensions.logging.abstractions/8.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512",
+ "microsoft.extensions.logging.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.IdentityModel.Abstractions/8.14.0": {
+ "sha512": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==",
+ "type": "package",
+ "path": "microsoft.identitymodel.abstractions/8.14.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net462/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net472/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net472/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml",
+ "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512",
+ "microsoft.identitymodel.abstractions.nuspec"
+ ]
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.14.0": {
+ "sha512": "4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==",
+ "type": "package",
+ "path": "microsoft.identitymodel.jsonwebtokens/8.14.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll",
+ "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml",
+ "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll",
+ "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml",
+ "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll",
+ "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml",
+ "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll",
+ "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml",
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll",
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml",
+ "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512",
+ "microsoft.identitymodel.jsonwebtokens.nuspec"
+ ]
+ },
+ "Microsoft.IdentityModel.Logging/8.14.0": {
+ "sha512": "eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==",
+ "type": "package",
+ "path": "microsoft.identitymodel.logging/8.14.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.Logging.dll",
+ "lib/net462/Microsoft.IdentityModel.Logging.xml",
+ "lib/net472/Microsoft.IdentityModel.Logging.dll",
+ "lib/net472/Microsoft.IdentityModel.Logging.xml",
+ "lib/net6.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/net6.0/Microsoft.IdentityModel.Logging.xml",
+ "lib/net8.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/net8.0/Microsoft.IdentityModel.Logging.xml",
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/net9.0/Microsoft.IdentityModel.Logging.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml",
+ "microsoft.identitymodel.logging.8.14.0.nupkg.sha512",
+ "microsoft.identitymodel.logging.nuspec"
+ ]
+ },
+ "Microsoft.IdentityModel.Tokens/8.14.0": {
+ "sha512": "lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==",
+ "type": "package",
+ "path": "microsoft.identitymodel.tokens/8.14.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net462/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net472/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net472/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net6.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net6.0/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net8.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net8.0/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml",
+ "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512",
+ "microsoft.identitymodel.tokens.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.5.0": {
+ "sha512": "JGNK6BanLDEifgkvPLqVFCPus5EDCy416pxf1dxUBRSVd3D9+NB3AvMVX190eXlk5/UXuCxpsQv7jWfNKvppBQ==",
+ "type": "package",
+ "path": "mongodb.bson/3.5.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.5.0.nupkg.sha512",
+ "mongodb.bson.nuspec",
+ "packageIcon.png"
+ ]
+ },
+ "MongoDB.Driver/3.5.0": {
+ "sha512": "ST90u7psyMkNNOWFgSkexsrB3kPn7Ynl2DlMFj2rJyYuc6SIxjmzu4ufy51yzM+cPVE1SvVcdb5UFobrRw6cMg==",
+ "type": "package",
+ "path": "mongodb.driver/3.5.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.5.0.nupkg.sha512",
+ "mongodb.driver.nuspec",
+ "packageIcon.png"
+ ]
+ },
+ "Newtonsoft.Json/13.0.4": {
+ "sha512": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==",
+ "type": "package",
+ "path": "newtonsoft.json/13.0.4",
+ "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.4.nupkg.sha512",
+ "newtonsoft.json.nuspec",
+ "packageIcon.png"
+ ]
+ },
+ "protobuf-net/3.2.56": {
+ "sha512": "4IPJeTYAMNewlN8MDaFkcmR/9hLhJeo9eARnTh104zh7mf+vXT2gu5MUfUnkSQU+CH578Q6vcdU7LQDQPG6eaw==",
+ "type": "package",
+ "path": "protobuf-net/3.2.56",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net462/protobuf-net.dll",
+ "lib/net462/protobuf-net.xml",
+ "lib/net8.0/protobuf-net.dll",
+ "lib/net8.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.56.nupkg.sha512",
+ "protobuf-net.nuspec",
+ "protobuf-net.png",
+ "readme.md"
+ ]
+ },
+ "protobuf-net.Core/3.2.56": {
+ "sha512": "d6QOukTpDzs7zZv9tPnBZMtvHDNeHJQXUhMx54g4urUQsXK3oo9U70H9HvklYq7hlQ4A7AHJl7EVEqyCXXIl8Q==",
+ "type": "package",
+ "path": "protobuf-net.core/3.2.56",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net462/protobuf-net.Core.dll",
+ "lib/net462/protobuf-net.Core.xml",
+ "lib/net8.0/protobuf-net.Core.dll",
+ "lib/net8.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.56.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.IdentityModel.Tokens.Jwt/8.14.0": {
+ "sha512": "EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==",
+ "type": "package",
+ "path": "system.identitymodel.tokens.jwt/8.14.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/System.IdentityModel.Tokens.Jwt.dll",
+ "lib/net462/System.IdentityModel.Tokens.Jwt.xml",
+ "lib/net472/System.IdentityModel.Tokens.Jwt.dll",
+ "lib/net472/System.IdentityModel.Tokens.Jwt.xml",
+ "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll",
+ "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml",
+ "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll",
+ "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml",
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll",
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml",
+ "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll",
+ "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml",
+ "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512",
+ "system.identitymodel.tokens.jwt.nuspec"
+ ]
+ },
+ "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"
+ ]
+ },
+ "ThirdParty/1.0.0": {
+ "type": "project",
+ "path": "../ThirdParty/ThirdParty.csproj",
+ "msbuildProject": "../ThirdParty/ThirdParty.csproj"
+ }
+ },
+ "projectFileDependencyGroups": {
+ "net9.0": [
+ "Fantasy-Net >= 2025.2.0",
+ "Microsoft.IdentityModel.Tokens >= 8.14.0",
+ "System.IdentityModel.Tokens.Jwt >= 8.14.0",
+ "ThirdParty >= 1.0.0"
+ ]
+ },
+ "packageFolders": {
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\": {},
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\work\\Fishing2Server\\Entity\\Entity.csproj",
+ "projectName": "Entity",
+ "projectPath": "D:\\work\\Fishing2Server\\Entity\\Entity.csproj",
+ "packagesPath": "C:\\Users\\FIREBAT\\.nuget\\packages\\",
+ "outputPath": "D:\\work\\Fishing2Server\\Entity\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\FIREBAT\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {
+ "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj": {
+ "projectPath": "D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj"
+ }
+ }
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "dependencies": {
+ "Fantasy-Net": {
+ "target": "Package",
+ "version": "[2025.2.0, )"
+ },
+ "Microsoft.IdentityModel.Tokens": {
+ "target": "Package",
+ "version": "[8.14.0, )"
+ },
+ "System.IdentityModel.Tokens.Jwt": {
+ "target": "Package",
+ "version": "[8.14.0, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Entity/obj/project.nuget.cache b/Entity/obj/project.nuget.cache
new file mode 100644
index 0000000..2b32b07
--- /dev/null
+++ b/Entity/obj/project.nuget.cache
@@ -0,0 +1,34 @@
+{
+ "version": 2,
+ "dgSpecHash": "5DJdEeWOOl4=",
+ "success": true,
+ "projectFilePath": "D:\\work\\Fishing2Server\\Entity\\Entity.csproj",
+ "expectedPackageFiles": [
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\commandlineparser\\2.9.1\\commandlineparser.2.9.1.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\fantasy-net\\2025.2.0\\fantasy-net.2025.2.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.0\\microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.0\\microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.14.0\\microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.14.0\\microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.identitymodel.logging\\8.14.0\\microsoft.identitymodel.logging.8.14.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.14.0\\microsoft.identitymodel.tokens.8.14.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\mongodb.bson\\3.5.0\\mongodb.bson.3.5.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\mongodb.driver\\3.5.0\\mongodb.driver.3.5.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\newtonsoft.json\\13.0.4\\newtonsoft.json.13.0.4.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\protobuf-net\\3.2.56\\protobuf-net.3.2.56.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\protobuf-net.core\\3.2.56\\protobuf-net.core.3.2.56.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\sharpcompress\\0.30.1\\sharpcompress.0.30.1.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\snappier\\1.0.0\\snappier.1.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.14.0\\system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\5.0.0\\system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512",
+ "C:\\Users\\FIREBAT\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512"
+ ],
+ "logs": []
+}
\ No newline at end of file
diff --git a/Entity/obj/project.packagespec.json b/Entity/obj/project.packagespec.json
new file mode 100644
index 0000000..4a69c86
--- /dev/null
+++ b/Entity/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"D:\\work\\Fishing2Server\\Entity\\Entity.csproj","projectName":"Entity","projectPath":"D:\\work\\Fishing2Server\\Entity\\Entity.csproj","outputPath":"D:\\work\\Fishing2Server\\Entity\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{"D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj":{"projectPath":"D:\\work\\Fishing2Server\\ThirdParty\\ThirdParty.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.300"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Fantasy-Net":{"target":"Package","version":"[2025.2.0, )"},"Microsoft.IdentityModel.Tokens":{"target":"Package","version":"[8.14.0, )"},"System.IdentityModel.Tokens.Jwt":{"target":"Package","version":"[8.14.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/Entity/obj/rider.project.model.nuget.info b/Entity/obj/rider.project.model.nuget.info
new file mode 100644
index 0000000..f10fabb
--- /dev/null
+++ b/Entity/obj/rider.project.model.nuget.info
@@ -0,0 +1 @@
+17628533859030116
\ No newline at end of file
diff --git a/Entity/obj/rider.project.restore.info b/Entity/obj/rider.project.restore.info
new file mode 100644
index 0000000..3a75255
--- /dev/null
+++ b/Entity/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17628541514897177
\ No newline at end of file
diff --git a/Examples/Client/Unity/Assets/Scripts/Hotfix/Generate/NetworkProtocol/RoamingType.cs b/Examples/Client/Unity/Assets/Scripts/Hotfix/Generate/NetworkProtocol/RoamingType.cs
deleted file mode 100644
index ce3008c..0000000
--- a/Examples/Client/Unity/Assets/Scripts/Hotfix/Generate/NetworkProtocol/RoamingType.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.Collections.Generic;
-namespace Fantasy
-{
- // Roaming协议定义(需要定义10000以上、因为10000以内的框架预留)
- public static class RoamingType
- {
- }
-}
diff --git a/Examples/Config/NetworkProtocol/RoamingType.Config b/Examples/Config/NetworkProtocol/RoamingType.Config
deleted file mode 100644
index 3b89ab1..0000000
--- a/Examples/Config/NetworkProtocol/RoamingType.Config
+++ /dev/null
@@ -1 +0,0 @@
-// Roaming协议定义(需要定义10000以上、因为10000以内的框架预留)
diff --git a/Examples/Config/NetworkProtocol/RouteType.Config b/Examples/Config/NetworkProtocol/RouteType.Config
deleted file mode 100644
index b8424a1..0000000
--- a/Examples/Config/NetworkProtocol/RouteType.Config
+++ /dev/null
@@ -1 +0,0 @@
-// Route协议定义(需要定义1000以上、因为1000以内的框架预留)
diff --git a/Examples/Server/Entity/Generate/NetworkProtocol/RoamingType.cs b/Examples/Server/Entity/Generate/NetworkProtocol/RoamingType.cs
deleted file mode 100644
index ce3008c..0000000
--- a/Examples/Server/Entity/Generate/NetworkProtocol/RoamingType.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.Collections.Generic;
-namespace Fantasy
-{
- // Roaming协议定义(需要定义10000以上、因为10000以内的框架预留)
- public static class RoamingType
- {
- }
-}
diff --git a/Fantasy/Fantasy.Benchmark/ConsoleLog.cs b/Fantasy/Fantasy.Benchmark/ConsoleLog.cs
deleted file mode 100644
index 4fa540f..0000000
--- a/Fantasy/Fantasy.Benchmark/ConsoleLog.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-
-#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
-
-namespace Fantasy
-{
- ///
- /// 标准的控制台Log
- ///
- public sealed class ConsoleLog : ILog
- {
-
- ///
- /// 记录跟踪级别的日志消息。
- ///
- /// 日志消息。
- public void Trace(string message)
- {
- System.Console.ForegroundColor = ConsoleColor.White;
- System.Console.WriteLine(message);
- }
-
- ///
- /// 记录警告级别的日志消息。
- ///
- /// 日志消息。
- public void Warning(string message)
- {
- System.Console.ForegroundColor = ConsoleColor.Yellow;
- System.Console.WriteLine(message);
- }
-
- ///
- /// 记录信息级别的日志消息。
- ///
- /// 日志消息。
- public void Info(string message)
- {
- System.Console.ForegroundColor = ConsoleColor.Gray;
- System.Console.WriteLine(message);
- }
-
- ///
- /// 记录调试级别的日志消息。
- ///
- /// 日志消息。
- public void Debug(string message)
- {
- System.Console.ForegroundColor = ConsoleColor.DarkGreen;
- System.Console.WriteLine(message);
- }
-
- ///
- /// 记录错误级别的日志消息。
- ///
- /// 日志消息。
- public void Error(string message)
- {
- System.Console.ForegroundColor = ConsoleColor.DarkRed;
- System.Console.WriteLine(message);
- }
-
- ///
- /// 记录严重错误级别的日志消息。
- ///
- /// 日志消息。
- public void Fatal(string message)
- {
- System.Console.ForegroundColor = ConsoleColor.Red;
- System.Console.WriteLine(message);
- }
-
- ///
- /// 记录跟踪级别的格式化日志消息。
- ///
- /// 日志消息模板。
- /// 格式化参数。
- public void Trace(string message, params object[] args)
- {
- System.Console.ForegroundColor = ConsoleColor.White;
- System.Console.WriteLine(message, args);
- }
-
- ///
- /// 记录警告级别的格式化日志消息。
- ///
- /// 日志消息模板。
- /// 格式化参数。
- public void Warning(string message, params object[] args)
- {
- System.Console.ForegroundColor = ConsoleColor.Yellow;
- System.Console.WriteLine(message, args);
- }
-
- ///
- /// 记录信息级别的格式化日志消息。
- ///
- /// 日志消息模板。
- /// 格式化参数。
- public void Info(string message, params object[] args)
- {
- System.Console.ForegroundColor = ConsoleColor.Gray;
- System.Console.WriteLine(message, args);
- }
-
- ///
- /// 记录调试级别的格式化日志消息。
- ///
- /// 日志消息模板。
- /// 格式化参数。
- public void Debug(string message, params object[] args)
- {
- System.Console.ForegroundColor = ConsoleColor.DarkGreen;
- System.Console.WriteLine(message, args);
- }
-
- ///
- /// 记录错误级别的格式化日志消息。
- ///
- /// 日志消息模板。
- /// 格式化参数。
- public void Error(string message, params object[] args)
- {
- System.Console.ForegroundColor = ConsoleColor.DarkRed;
- System.Console.WriteLine(message, args);
- }
-
- ///
- /// 记录严重错误级别的格式化日志消息。
- ///
- /// 日志消息模板。
- /// 格式化参数。
- public void Fatal(string message, params object[] args)
- {
- System.Console.ForegroundColor = ConsoleColor.Red;
- System.Console.WriteLine(message, args);
- }
- }
-}
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj b/Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj
deleted file mode 100644
index d44402a..0000000
--- a/Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Exe
- enable
- enable
- net8.0;net9.0
- default
-
-
-
- TRACE;FANTASY_CONSOLE
- true
-
-
-
- TRACE;FANTASY_CONSOLE
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs b/Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs
deleted file mode 100644
index 18e3ea1..0000000
--- a/Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using BenchmarkDotNet.Attributes;
-using BenchmarkDotNet.Jobs;
-using BenchmarkDotNet.Running;
-using Fantasy.Async;
-using Fantasy.InnerMessage;
-using Fantasy.Network;
-using Fantasy.Platform.Console;
-
-#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
-
-namespace Fantasy.Benchmark;
-[SimpleJob(RuntimeMoniker.Net80, baseline: true)]
-public class NetworkBenchmark
-{
- private static Scene _scene;
- private static Session _session;
- private readonly BenchmarkRequest _benchmarkRequest = new BenchmarkRequest();
-
- public static async FTask Initialize()
- {
- // 注册日志实例到框架中
- Log.Register(new ConsoleLog());
- // 初始化框架
- await Entry.Initialize();
- // 执行StartUpdate方法
- Entry.StartUpdate();
- _scene = await Entry.CreateScene();
- // 创建远程连接
- _session = _scene.Connect("127.0.0.1:20000", NetworkProtocolType.WebSocket,
- () =>
- {
- Log.Debug("连接到目标服务器成功");
- var summary = BenchmarkRunner.Run();
- Console.WriteLine(summary);
- },
- () => { Log.Debug("无法连接到目标服务器"); },
- () => { Log.Debug("与服务器断开连接"); }, false);
- }
-
- [Benchmark]
- public async FTask Call()
- {
- await _session.Call(_benchmarkRequest);
- }
-}
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Benchmark/Program.cs b/Fantasy/Fantasy.Benchmark/Program.cs
deleted file mode 100644
index 30d8cf3..0000000
--- a/Fantasy/Fantasy.Benchmark/Program.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-Fantasy.Benchmark.NetworkBenchmark.Initialize().Coroutine();
-Console.ReadKey();
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Benchmark/README.md b/Fantasy/Fantasy.Benchmark/README.md
deleted file mode 100644
index 8315cc4..0000000
--- a/Fantasy/Fantasy.Benchmark/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Fantasy.Benchmark
-使用 Fantasy.Benchmark 工具,我们能够快速评估框架网络的处理性能。目前,该工具提供的基准测试主要集中在 RPC(远程过程调用)消息 方面。这一项测试能够有效测量系统在处理远程调用时的响应时间、吞吐量和资源利用率,帮助开发者优化网络通信性能,确保在高负载情况下系统依然能够稳定运行
-## 操作步骤
-- 1.打开位于 Examples/Server/Server.sln 的解决方案文件。
-- 2.在解决方案中选择并启动 Main 项目。
-- 3.接着,启动 Fantasy.Benchmark 应用程序,并耐心等待其测试结果的生成。
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net.sln b/Fantasy/Fantasy.Net/Fantasy.Net.sln
deleted file mode 100644
index 1abdc06..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net.sln
+++ /dev/null
@@ -1,16 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fantasy.Net", "Fantasy.Net\Fantasy.Net.csproj", "{636FBF87-A6D2-4A31-86FF-F4157F558C95}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
-EndGlobal
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets b/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets
deleted file mode 100644
index 5426ed6..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj b/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj
deleted file mode 100644
index be19e19..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
- Fantasy-Net
- 2024.2.26
- Fantasy-Net
- qq362946
- qq362946
- ../../nupkg
- false
-
- Fantasy is a high-performance network development framework based on .NET, supporting mainstream protocols. It is designed for development teams or individuals needing a quick start, scalability, and a distributed, cross-platform solution at the commercial level. Fantasy aims to provide easy-to-use tools while ensuring high system performance and scalability.
- Copyright 2026 qq362946
- LICENSE
- README.md
- https://www.code-fantasy.com/
- https://github.com/qq362946/Fantasy
- git
- Net, c#, Server, Game, GameServer, Fantasy , Network
- icon.png
- enable
- enable
- Fantasy-Net
- net8.0;net9.0
- default
-
-
-
- TRACE;FANTASY_NET
- true
- true
- bin\Debug\net8.0\Fantasy.Net.xml
-
-
-
- TRACE;FANTASY_NET
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/LICENSE b/Fantasy/Fantasy.Net/Fantasy.Net/LICENSE
deleted file mode 100644
index 24a69b2..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/LICENSE
+++ /dev/null
@@ -1,14 +0,0 @@
-MIT License
-
-Copyright (c) 2023 qq362946
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-However, the following entity is explicitly prohibited from using, copying, modifying, or distributing the Software or any of its portions:
-
-泰课在线(https://www.taikr.com/)
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/README.md b/Fantasy/Fantasy.Net/Fantasy.Net/README.md
deleted file mode 100644
index 582e668..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Fantasy
-#### 框架支持TCP\KCP\WebSocket\http(支持Unity发布成H5)三种网络协议,采用的Protobuf/MemoryPack/Bson做为消息的序列化方案。
-#### Fantasy是基于.NET的高性能网络开发框架,支持主流协议,前后端分离,适合需要快速上手、可扩展、分布式全平台商业级解决方案的开发团队或个人。它旨在提供易用工具,同时保证系统的高性能和扩展性。
-## 导航
-* [Fantasy介绍网站](https://www.code-fantasy.com/)
-* [Fantasy的API文档](https://www.code-fantasy.com/doc/api/Fantasy.html)
-* [入门视频观看地址](https://space.bilibili.com/382126312)
-## 快速上手
-* 01.快速入门
- * [1.1.获得Fantasy](https://www.code-fantasy.com/top/download-fantasy/)
- * [1.2.安装Fantasy](https://www.code-fantasy.com/top/creating-your-app/)
- * [1.3.Fantasy的网络](https://www.code-fantasy.com/top/use-network/)
- * [1.4.Fantasy的配置文件](https://www.code-fantasy.com/top/config-file/)
- * [1.5.Fantasy的命令行参数](https://www.code-fantasy.com/top/command-line-parameter/)
- * [1.6.Fantasy的导表工具](https://www.code-fantasy.com/top/guidance/)
- * [1.7.如何升级到最新版](https://www.code-fantasy.com/top/upgrade/)
-* 02.网络通信
- * [2.1.客户端服务器之间发送消息](https://www.code-fantasy.com/network/session/)
- * [2.2.服务器之间发送消息](https://www.code-fantasy.com/network/networkmessagingomponent/)
- * [2.3.定义通信协议](https://www.code-fantasy.com/network/network-protocols/)
- * [2.4.Route通信协议](https://www.code-fantasy.com/network/network-route/)
- * [2.5.Addressable通信协议](https://www.code-fantasy.com/network/network-addressable/)
-* 03.系统组件
- * [3.1.ECS系统](https://www.code-fantasy.com/core/ecs/)
- * [3.2.事件系统](https://www.code-fantasy.com/core/event/)
- * [3.3.任务系统](https://www.code-fantasy.com/core/task/)
- * [3.4.异步协程锁](https://www.code-fantasy.com/core/lock/)
- * [3.5.数据库](https://www.code-fantasy.com/core/db/)
-* [更新日志](https://www.code-fantasy.com/changelog/)
-* [API文档](https://www.code-fantasy.com/doc/api/Fantasy.html)
-* [常见问题](https://www.code-fantasy.com/question/)
-
-## 交流与讨论:
-__讨论QQ群 : Fantasy服务器开发交流群 569888673 __
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs
deleted file mode 100644
index 3957539..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using Fantasy.DataStructure.Collection;
-
-// ReSharper disable CollectionNeverQueried.Global
-#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
-
-namespace Fantasy.Assembly
-{
- ///
- /// AssemblyInfo提供有关程序集和类型的信息
- ///
- public sealed class AssemblyInfo
- {
- ///
- /// 唯一标识
- ///
- public readonly long AssemblyIdentity;
- ///
- /// 获取或设置与此程序集相关联的 实例。
- ///
- public System.Reflection.Assembly Assembly { get; private set; }
- ///
- /// 程序集类型集合,获取一个列表,包含从程序集加载的所有类型。
- ///
- public readonly List AssemblyTypeList = new List();
- ///
- /// 程序集类型分组集合,获取一个分组列表,将接口类型映射到实现这些接口的类型。
- ///
- public readonly OneToManyList AssemblyTypeGroupList = new OneToManyList();
-
- ///
- /// 初始化 类的新实例。
- ///
- ///
- public AssemblyInfo(long assemblyIdentity)
- {
- AssemblyIdentity = assemblyIdentity;
- }
-
- ///
- /// 从指定的程序集加载类型信息并进行分类。
- ///
- /// 要加载信息的程序集。
- public void Load(System.Reflection.Assembly assembly)
- {
- Assembly = assembly;
- var assemblyTypes = assembly.GetTypes().ToList();
-
- foreach (var type in assemblyTypes)
- {
- if (type.IsAbstract || type.IsInterface)
- {
- continue;
- }
-
- var interfaces = type.GetInterfaces();
-
- foreach (var interfaceType in interfaces)
- {
- AssemblyTypeGroupList.Add(interfaceType, type);
- }
- }
-
- AssemblyTypeList.AddRange(assemblyTypes);
- }
-
- ///
- /// 重新加载程序集的类型信息。
- ///
- ///
- public void ReLoad(System.Reflection.Assembly assembly)
- {
- Unload();
- Load(assembly);
- }
-
- ///
- /// 卸载程序集的类型信息。
- ///
- public void Unload()
- {
- AssemblyTypeList.Clear();
- AssemblyTypeGroupList.Clear();
- }
- }
-}
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs
deleted file mode 100644
index deb9da6..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs
+++ /dev/null
@@ -1,285 +0,0 @@
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Security.Cryptography;
-using System.Text;
-using Fantasy.Async;
-using Fantasy.Helper;
-#pragma warning disable CS8604 // Possible null reference argument.
-#pragma warning disable CS8602 // Dereference of a possibly null reference.
-#pragma warning disable CS8603
-#pragma warning disable CS8618
-namespace Fantasy.Assembly
-{
- ///
- /// 管理程序集加载和卸载的帮助类。
- ///
- public static class AssemblySystem
- {
-#if FANTASY_WEBGL
- private static readonly List AssemblySystems = new List();
- private static readonly Dictionary AssemblyList = new Dictionary();
-#else
- private static readonly ConcurrentQueue AssemblySystems = new ConcurrentQueue();
- private static readonly ConcurrentDictionary AssemblyList = new ConcurrentDictionary();
-#endif
- ///
- /// 初始化 AssemblySystem。(仅限内部)
- ///
- ///
- internal static async FTask InnerInitialize(params System.Reflection.Assembly[] assemblies)
- {
- await LoadAssembly(typeof(AssemblySystem).Assembly);
- foreach (var assembly in assemblies)
- {
- await LoadAssembly(assembly);
- }
- }
-
- ///
- /// 加载指定的程序集,并触发相应的事件。
- ///
- /// 要加载的程序集。
- /// 如果当前Domain中已经存在同名的Assembly,使用Domain中的程序集。
- public static async FTask LoadAssembly(System.Reflection.Assembly assembly, bool isCurrentDomain = true)
- {
- if (isCurrentDomain)
- {
- var currentDomainAssemblies = System.AppDomain.CurrentDomain.GetAssemblies();
- var currentAssembly = currentDomainAssemblies.FirstOrDefault(d => d.GetName().Name == assembly.GetName().Name);
- if (currentAssembly != null)
- {
- assembly = currentAssembly;
- }
- }
-
- var assemblyIdentity = AssemblyIdentity(assembly);
-
- if (AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo))
- {
- assemblyInfo.ReLoad(assembly);
- foreach (var assemblySystem in AssemblySystems)
- {
- await assemblySystem.ReLoad(assemblyIdentity);
- }
- }
- else
- {
- assemblyInfo = new AssemblyInfo(assemblyIdentity);
- assemblyInfo.Load(assembly);
- AssemblyList.TryAdd(assemblyIdentity, assemblyInfo);
- foreach (var assemblySystem in AssemblySystems)
- {
- await assemblySystem.Load(assemblyIdentity);
- }
- }
- }
-
- ///
- /// 卸载程序集
- ///
- ///
- public static async FTask UnLoadAssembly(System.Reflection.Assembly assembly)
- {
- var assemblyIdentity = AssemblyIdentity(assembly);
-
- if (!AssemblyList.Remove(assemblyIdentity, out var assemblyInfo))
- {
- return;
- }
-
- assemblyInfo.Unload();
- foreach (var assemblySystem in AssemblySystems)
- {
- await assemblySystem.OnUnLoad(assemblyIdentity);
- }
- }
-
- ///
- /// 将AssemblySystem接口的object注册到程序集管理中心
- ///
- ///
- public static async FTask Register(object obj)
- {
- if (obj is not IAssembly assemblySystem)
- {
- return;
- }
-#if FANTASY_WEBGL
- AssemblySystems.Add(assemblySystem);
-#else
- AssemblySystems.Enqueue(assemblySystem);
-#endif
- foreach (var (assemblyIdentity, _) in AssemblyList)
- {
- await assemblySystem.Load(assemblyIdentity);
- }
- }
-
- ///
- /// 程序集管理中心卸载注册的Load、ReLoad、UnLoad的接口
- ///
- ///
- public static void UnRegister(object obj)
- {
- if (obj is not IAssembly assemblySystem)
- {
- return;
- }
-#if FANTASY_WEBGL
- AssemblySystems.Remove(assemblySystem);
-#else
- var count = AssemblySystems.Count;
-
- for (var i = 0; i < count; i++)
- {
- if (!AssemblySystems.TryDequeue(out var removeAssemblySystem))
- {
- continue;
- }
-
- if (removeAssemblySystem == assemblySystem)
- {
- break;
- }
-
- AssemblySystems.Enqueue(removeAssemblySystem);
- }
-#endif
- }
-
- ///
- /// 获取所有已加载程序集中的所有类型。
- ///
- /// 所有已加载程序集中的类型。
- public static IEnumerable ForEach()
- {
- foreach (var (_, assemblyInfo) in AssemblyList)
- {
- foreach (var type in assemblyInfo.AssemblyTypeList)
- {
- yield return type;
- }
- }
- }
-
- ///
- /// 获取指定程序集中的所有类型。
- ///
- /// 程序集唯一标识。
- /// 指定程序集中的类型。
- public static IEnumerable ForEach(long assemblyIdentity)
- {
- if (!AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo))
- {
- yield break;
- }
-
- foreach (var type in assemblyInfo.AssemblyTypeList)
- {
- yield return type;
- }
- }
-
- ///
- /// 获取所有已加载程序集中实现指定类型的所有类型。
- ///
- /// 要查找的基类或接口类型。
- /// 所有已加载程序集中实现指定类型的类型。
- public static IEnumerable ForEach(Type findType)
- {
- foreach (var (_, assemblyInfo) in AssemblyList)
- {
- if (!assemblyInfo.AssemblyTypeGroupList.TryGetValue(findType, out var assemblyLoad))
- {
- continue;
- }
-
- foreach (var type in assemblyLoad)
- {
- yield return type;
- }
- }
- }
-
- ///
- /// 获取指定程序集中实现指定类型的所有类型。
- ///
- /// 程序集唯一标识。
- /// 要查找的基类或接口类型。
- /// 指定程序集中实现指定类型的类型。
- public static IEnumerable ForEach(long assemblyIdentity, Type findType)
- {
- if (!AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo))
- {
- yield break;
- }
-
- if (!assemblyInfo.AssemblyTypeGroupList.TryGetValue(findType, out var assemblyLoad))
- {
- yield break;
- }
-
- foreach (var type in assemblyLoad)
- {
- yield return type;
- }
- }
-
- ///
- /// 获取指定程序集的实例。
- ///
- /// 程序集名称。
- /// 指定程序集的实例,如果未加载则返回 null。
- public static System.Reflection.Assembly GetAssembly(long assemblyIdentity)
- {
- return !AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo) ? null : assemblyInfo.Assembly;
- }
-
- ///
- /// 获取当前框架注册的Assembly
- ///
- ///
- public static IEnumerable ForEachAssembly
- {
- get
- {
- foreach (var (_, assemblyInfo) in AssemblyList)
- {
- yield return assemblyInfo.Assembly;
- }
- }
- }
-
- ///
- /// 根据Assembly的强命名计算唯一标识。
- ///
- ///
- ///
- private static long AssemblyIdentity(System.Reflection.Assembly assembly)
- {
- return HashCodeHelper.ComputeHash64(assembly.GetName().Name);
- }
-
- ///
- /// 释放资源,卸载所有加载的程序集。
- ///
- public static void Dispose()
- {
- DisposeAsync().Coroutine();
- }
-
- private static async FTask DisposeAsync()
- {
- foreach (var (_, assemblyInfo) in AssemblyList.ToArray())
- {
- await UnLoadAssembly(assemblyInfo.Assembly);
- }
-
- AssemblyList.Clear();
- AssemblySystems.Clear();
- }
- }
-}
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs
deleted file mode 100644
index 185e037..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using Fantasy.Async;
-
-namespace Fantasy.Assembly
-{
- ///
- /// 实现这个接口、会再程序集首次加载、卸载、重载的时候调用
- ///
- public interface IAssembly : IDisposable
- {
- ///
- /// 程序集加载时调用
- ///
- /// 程序集标识
- public FTask Load(long assemblyIdentity);
- ///
- /// 程序集重新加载的时候调用
- ///
- /// 程序集标识
- public FTask ReLoad(long assemblyIdentity);
- ///
- /// 卸载的时候调用
- ///
- /// 程序集标识
- public FTask OnUnLoad(long assemblyIdentity);
- }
-}
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs
deleted file mode 100644
index 8532547..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using Fantasy.Async;
-using Fantasy.InnerMessage;
-using Fantasy.Network.Interface;
-
-#if FANTASY_NET
-namespace Fantasy.Network.Benchmark.Handler;
-
-///
-/// BenchmarkRequestHandler
-///
-public sealed class BenchmarkRequestHandler : MessageRPC
-{
- ///
- /// Run方法
- ///
- ///
- ///
- ///
- ///
- protected override async FTask Run(Session session, BenchmarkRequest request, BenchmarkResponse response, Action reply)
- {
- await FTask.CompletedTask;
- }
-}
-#endif
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs
deleted file mode 100644
index 2fb03ec..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// ReSharper disable CheckNamespace
-// ReSharper disable InconsistentNaming
-#if FANTASY_NET
-namespace Fantasy.DataBase;
-
-///
-/// 数据库类型
-///
-public enum DataBaseType
-{
- ///
- /// 默认
- ///
- None = 0,
- ///
- /// MongoDB
- ///
- MongoDB = 1
-}
-#endif
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs
deleted file mode 100644
index 6a2fe8b..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs
+++ /dev/null
@@ -1,210 +0,0 @@
-#if FANTASY_NET
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using Fantasy.Async;
-using Fantasy.Entitas;
-using MongoDB.Driver;
-// ReSharper disable InconsistentNaming
-#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
-
-#pragma warning disable CS8625
-
-namespace Fantasy.DataBase
-{
- ///
- /// 数据库设置助手
- ///
- public static class DataBaseSetting
- {
- ///
- /// 初始化自定义委托,当设置了这个委托后,就不会自动创建MongoClient,需要自己在委托里创建MongoClient。
- ///
- public static Func? MongoDBCustomInitialize;
- }
-
- ///
- /// MongoDB自定义连接参数
- ///
- public sealed class DataBaseCustomConfig
- {
- ///
- /// 当前Scene
- ///
- public Scene Scene;
- ///
- /// 连接字符串
- ///
- public string ConnectionString;
- ///
- /// 数据库名字
- ///
- public string DBName;
- }
-
- ///
- /// 表示用于执行各种数据库操作的数据库接口。
- ///
- public interface IDataBase : IDisposable
- {
- ///
- /// 获得当前数据的类型
- ///
- public DataBaseType GetDataBaseType { get;}
- ///
- /// 获得对应数据的操作实例
- ///
- /// 如MongoDB就是IMongoDatabase
- public object GetDataBaseInstance { get;}
- ///
- /// 初始化数据库连接。
- ///
- IDataBase Initialize(Scene scene, string connectionString, string dbName);
- ///
- /// 在指定的集合中检索类型 的实体数量。
- ///
- FTask Count(string collection = null) where T : Entity;
- ///
- /// 在指定的集合中检索满足给定筛选条件的类型 的实体数量。
- ///
- FTask Count(Expression> filter, string collection = null) where T : Entity;
- ///
- /// 检查指定集合中是否存在类型 的实体。
- ///
- FTask Exist(string collection = null) where T : Entity;
- ///
- /// 检查指定集合中是否存在满足给定筛选条件的类型 的实体。
- ///
- FTask Exist(Expression> filter, string collection = null) where T : Entity;
- ///
- /// 从指定集合中检索指定 ID 的类型 的实体,不锁定。
- ///
- FTask QueryNotLock(long id, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 从指定集合中检索指定 ID 的类型 的实体。
- ///
- FTask Query(long id, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 按页查询满足给定筛选条件的类型 的实体数量和日期。
- ///
- FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 按页查询满足给定筛选条件的类型 的实体数量和日期。
- ///
- FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 分页查询指定集合中满足给定筛选条件的类型 的实体列表。
- ///
- FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 分页查询指定集合中满足给定筛选条件的类型 的实体列表,仅返回指定列的数据。
- ///
- FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表,按指定字段排序。
- ///
- FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 检索满足给定筛选条件的类型 的第一个实体,从指定集合中。
- ///
- FTask First(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 查询指定集合中满足给定 JSON 查询字符串的类型 的第一个实体,仅返回指定列的数据。
- ///
- FTask First(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表,按指定字段排序。
- ///
- FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表。
- ///
- FTask> Query(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 查询指定集合中满足给定筛选条件的类型 实体列表,仅返回指定字段的数据。
- ///
- FTask> Query(Expression> filter, Expression>[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 查询指定 ID 的多个集合,将结果存储在给定的实体列表中。
- ///
- FTask Query(long id, List collectionNames, List result, bool isDeserialize = false);
- ///
- /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表。
- ///
- FTask> QueryJson(string json, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表,仅返回指定列的数据。
- ///
- FTask> QueryJson(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表,通过指定的任务 ID 进行标识。
- ///
- FTask> QueryJson(long taskId, string json, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 查询指定集合中满足给定筛选条件的类型 实体列表,仅返回指定列的数据。
- ///
- FTask> Query(Expression> filter, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
- ///
- /// 保存类型 实体到指定集合中,如果集合不存在将自动创建。
- ///
- FTask Save(T entity, string collection = null) where T : Entity, new();
- ///
- /// 保存一组实体到数据库中,根据实体列表的 ID 进行区分和存储。
- ///
- FTask Save(long id, List entities);
- ///
- /// 通过事务会话将类型 实体保存到指定集合中,如果集合不存在将自动创建。
- ///
- FTask Save(object transactionSession, T entity, string collection = null) where T : Entity;
- ///
- /// 向指定集合中插入一个类型 实体,如果集合不存在将自动创建。
- ///
- FTask Insert(T entity, string collection = null) where T : Entity, new();
- ///
- /// 批量插入一组类型 实体到指定集合中,如果集合不存在将自动创建。
- ///
- FTask InsertBatch(IEnumerable list, string collection = null) where T : Entity, new();
- ///
- /// 通过事务会话,批量插入一组类型 实体到指定集合中,如果集合不存在将自动创建。
- ///
- FTask InsertBatch(object transactionSession, IEnumerable list, string collection = null) where T : Entity, new();
- ///
- /// 通过事务会话,根据指定的 ID 从数据库中删除指定类型 实体。
- ///
- FTask Remove(object transactionSession, long id, string collection = null) where T : Entity, new();
- ///
- /// 根据指定的 ID 从数据库中删除指定类型 实体。
- ///
- FTask Remove(long id, string collection = null) where T : Entity, new();
- ///
- /// 通过事务会话,根据给定的筛选条件从数据库中删除指定类型 实体。
- ///
- FTask Remove(long coroutineLockQueueKey, object transactionSession, Expression> filter, string collection = null) where T : Entity, new();
- ///
- /// 根据给定的筛选条件从数据库中删除指定类型 实体。
- ///
- FTask Remove(long coroutineLockQueueKey, Expression> filter, string collection = null) where T : Entity, new();
- ///
- /// 根据给定的筛选条件计算指定集合中类型 实体某个属性的总和。
- ///
- FTask Sum(Expression> filter, Expression> sumExpression, string collection = null) where T : Entity;
- ///
- /// 在指定的集合中创建索引,以提高类型 实体的查询性能。
- ///
- FTask CreateIndex(string collection, params object[] keys) where T : Entity;
- ///
- /// 在默认集合中创建索引,以提高类型 实体的查询性能。
- ///
- FTask CreateIndex(params object[] keys) where T : Entity;
- ///
- /// 创建指定类型 的数据库,用于存储实体。
- ///
- FTask CreateDB() where T : Entity;
- ///
- /// 根据指定类型创建数据库,用于存储实体。
- ///
- FTask CreateDB(Type type);
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs
deleted file mode 100644
index 49948f4..0000000
--- a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs
+++ /dev/null
@@ -1,1081 +0,0 @@
-#if FANTASY_NET
-using System.Linq.Expressions;
-using Fantasy.Async;
-using Fantasy.DataStructure.Collection;
-using Fantasy.Entitas;
-using Fantasy.Helper;
-using Fantasy.Serialize;
-using MongoDB.Bson;
-using MongoDB.Driver;
-#pragma warning disable CS8602 // Dereference of a possibly null reference.
-#pragma warning disable CS8603 // Possible null reference return.
-#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
-#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
-
-namespace Fantasy.DataBase
-{
- ///
- /// 使用 MongoDB 数据库的实现。
- ///
- public sealed class MongoDataBase : IDataBase
- {
- private const int DefaultTaskSize = 1024;
- private Scene _scene;
- private MongoClient _mongoClient;
- private ISerialize _serializer;
- private IMongoDatabase _mongoDatabase;
- private CoroutineLock _dataBaseLock;
- private readonly HashSet _collections = new HashSet();
- ///
- /// 获得当前数据的类型
- ///
- public DataBaseType GetDataBaseType { get; } = DataBaseType.MongoDB;
- ///
- /// 获得对应数据的操作实例
- ///
- public object GetDataBaseInstance => _mongoDatabase;
- ///
- /// 初始化 MongoDB 数据库连接并记录所有集合名。
- ///
- /// 场景对象。
- /// 数据库连接字符串。
- /// 数据库名称。
- /// 初始化后的数据库实例。
- public IDataBase Initialize(Scene scene, string connectionString, string dbName)
- {
- _scene = scene;
- _mongoClient = DataBaseSetting.MongoDBCustomInitialize != null
- ? DataBaseSetting.MongoDBCustomInitialize(new DataBaseCustomConfig()
- {
- Scene = scene, ConnectionString = connectionString, DBName = dbName
- })
- : new MongoClient(connectionString);
- _mongoDatabase = _mongoClient.GetDatabase(dbName);
- _dataBaseLock = scene.CoroutineLockComponent.Create(GetType().TypeHandle.Value.ToInt64());
- // 记录所有集合名
- _collections.UnionWith(_mongoDatabase.ListCollectionNames().ToList());
- _serializer = SerializerManager.GetSerializer(FantasySerializerType.Bson);
- return this;
- }
-
- ///
- /// 销毁释放资源。
- ///
- public void Dispose()
- {
- // 优先释放协程锁。
- _dataBaseLock.Dispose();
- // 清理资源。
- _scene = null;
- _serializer = null;
- _mongoDatabase = null;
- _dataBaseLock = null;
- _collections.Clear();
- _mongoClient.Dispose();
- }
-
- #region Other
-
- ///
- /// 对满足条件的文档中的某个数值字段进行求和操作。
- ///
- /// 实体类型。
- /// 用于筛选文档的表达式。
- /// 要对其进行求和的字段表达式。
- /// 集合名称,可选。如果未指定,将使用实体类型的名称。
- /// 满足条件的文档中指定字段的求和结果。
- public async FTask Sum(Expression> filter, Expression> sumExpression, string collection = null) where T : Entity
- {
- var member = (MemberExpression)((UnaryExpression)sumExpression.Body).Operand;
- var projection = new BsonDocument("_id", "null").Add("Result", new BsonDocument("$sum", $"${member.Member.Name}"));
- var data = await GetCollection(collection).Aggregate().Match(filter).Group(projection).FirstOrDefaultAsync();
- return data == null ? 0 : Convert.ToInt64(data["Result"]);
- }
-
- #endregion
-
- #region GetCollection
-
- ///
- /// 获取指定集合中的 MongoDB 文档的 IMongoCollection 对象。
- ///
- /// 实体类型。
- /// 集合名称,可选。如果未指定,将使用实体类型的名称。
- /// IMongoCollection 对象。
- private IMongoCollection GetCollection(string collection = null)
- {
- return _mongoDatabase.GetCollection(collection ?? typeof(T).Name);
- }
-
- ///
- /// 获取指定集合中的 MongoDB 文档的 IMongoCollection 对象,其中实体类型为 Entity。
- ///
- /// 集合名称。
- /// IMongoCollection 对象。
- private IMongoCollection GetCollection(string name)
- {
- return _mongoDatabase.GetCollection(name);
- }
-
- #endregion
-
- #region Count
-
- ///
- /// 统计指定集合中满足条件的文档数量。
- ///
- /// 实体类型。
- /// 集合名称,可选。如果未指定,将使用实体类型的名称。
- /// 满足条件的文档数量。
- public async FTask Count(string collection = null) where T : Entity
- {
- return await GetCollection(collection).CountDocumentsAsync(d => true);
- }
-
- ///
- /// 统计指定集合中满足条件的文档数量。
- ///
- /// 实体类型。
- /// 用于筛选文档的表达式。
- /// 集合名称,可选。如果未指定,将使用实体类型的名称。
- /// 满足条件的文档数量。
- public async FTask Count(Expression> filter, string collection = null) where T : Entity
- {
- return await GetCollection(collection).CountDocumentsAsync(filter);
- }
-
- #endregion
-
- #region Exist
-
- ///
- /// 判断指定集合中是否存在文档。
- ///
- /// 实体类型。
- /// 集合名称,可选。如果未指定,将使用实体类型的名称。
- /// 如果存在文档则返回 true,否则返回 false。
- public async FTask Exist(string collection = null) where T : Entity
- {
- return await Count(collection) > 0;
- }
-
- ///
- /// 判断指定集合中是否存在满足条件的文档。
- ///
- /// 实体类型。
- /// 用于筛选文档的表达式。
- /// 集合名称,可选。如果未指定,将使用实体类型的名称。
- /// 如果存在满足条件的文档则返回 true,否则返回 false。
- public async FTask Exist(Expression> filter, string collection = null) where T : Entity
- {
- return await Count(filter, collection) > 0;
- }
-
- #endregion
-
- #region Query
-
- ///
- /// 在不加数据库锁定的情况下,查询指定 ID 的文档。
- ///
- /// 文档实体类型。
- /// 要查询的文档 ID。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 查询到的文档。
- public async FTask QueryNotLock(long id, bool isDeserialize = false, string collection = null) where T : Entity
- {
- var cursor = await GetCollection(collection).FindAsync(d => d.Id == id);
- var v = await cursor.FirstOrDefaultAsync();
-
- if (isDeserialize && v != null)
- {
- v.Deserialize(_scene);
- }
-
- return v;
- }
-
- ///
- /// 查询指定 ID 的文档,并加数据库锁定以确保数据一致性。
- ///
- /// 文档实体类型。
- /// 要查询的文档 ID。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 查询到的文档。
- public async FTask Query(long id, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(id))
- {
- var cursor = await GetCollection(collection).FindAsync(d => d.Id == id);
- var v = await cursor.FirstOrDefaultAsync();
-
- if (isDeserialize && v != null)
- {
- v.Deserialize(_scene);
- }
-
- return v;
- }
- }
-
- ///
- /// 通过分页查询并返回满足条件的文档数量和日期列表(不加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 页码。
- /// 每页大小。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档数量和日期列表。
- public async FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var count = await Count(filter);
- var dates = await QueryByPage(filter, pageIndex, pageSize, isDeserialize, collection);
- return ((int)count, dates);
- }
- }
-
- ///
- /// 通过分页查询并返回满足条件的文档数量和日期列表(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 页码。
- /// 每页大小。
- /// 要查询的列名称数组。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档数量和日期列表。
- public async FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var count = await Count(filter);
- var dates = await QueryByPage(filter, pageIndex, pageSize, cols, isDeserialize, collection);
- return ((int)count, dates);
- }
- }
-
- ///
- /// 通过分页查询并返回满足条件的文档列表(不加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 页码。
- /// 每页大小。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var list = await GetCollection(collection).Find(filter).Skip((pageIndex - 1) * pageSize)
- .Limit(pageSize)
- .ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 通过分页查询并返回满足条件的文档列表(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 页码。
- /// 每页大小。
- /// 要查询的列名称数组。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var projection = Builders.Projection.Include("");
-
- foreach (var col in cols)
- {
- projection = projection.Include(col);
- }
-
- var list = await GetCollection(collection).Find(filter).Project(projection)
- .Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 通过分页查询并返回满足条件的文档列表,并按指定表达式进行排序(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 页码。
- /// 每页大小。
- /// 排序表达式。
- /// 是否升序排序。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- List list;
-
- if (isAsc)
- {
- list = await GetCollection(collection).Find(filter).SortBy(orderByExpression).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();
- }
- else
- {
- list = await GetCollection(collection).Find(filter).SortByDescending(orderByExpression).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();
- }
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 通过指定过滤条件查询并返回满足条件的第一个文档(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的第一个文档,如果未找到则为 null。
- public async FTask First(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var cursor = await GetCollection(collection).FindAsync(filter);
- var t = await cursor.FirstOrDefaultAsync();
-
- if (isDeserialize && t != null)
- {
- t.Deserialize(_scene);
- }
-
- return t;
- }
- }
-
- ///
- /// 通过指定 JSON 格式查询并返回满足条件的第一个文档(加锁)。
- ///
- /// 文档实体类型。
- /// JSON 查询条件。
- /// 要查询的列名称数组。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的第一个文档。
- public async FTask First(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var projection = Builders.Projection.Include("");
-
- foreach (var col in cols)
- {
- projection = projection.Include(col);
- }
-
- var options = new FindOptions { Projection = projection };
-
- FilterDefinition filterDefinition = new JsonFilterDefinition(json);
-
- var cursor = await GetCollection(collection).FindAsync(filterDefinition, options);
- var t = await cursor.FirstOrDefaultAsync();
-
- if (isDeserialize && t != null)
- {
- t.Deserialize(_scene);
- }
-
- return t;
- }
- }
-
- ///
- /// 通过指定过滤条件查询并返回满足条件的文档列表,并按指定表达式进行排序(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 排序表达式。
- /// 是否升序排序。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- List list;
-
- if (isAsc)
- {
- list = await GetCollection(collection).Find(filter).SortBy(orderByExpression).ToListAsync();
- }
- else
- {
- list = await GetCollection(collection).Find(filter).SortByDescending(orderByExpression).ToListAsync();
- }
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 通过指定过滤条件查询并返回满足条件的文档列表(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> Query(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var cursor = await GetCollection(collection).FindAsync(filter);
- var list = await cursor.ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 根据指定 ID 加锁查询多个集合中的文档。
- ///
- /// 文档 ID。
- /// 要查询的集合名称列表。
- /// 查询结果存储列表。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- public async FTask Query(long id, List? collectionNames, List result, bool isDeserialize = false)
- {
- using (await _dataBaseLock.Wait(id))
- {
- if (collectionNames == null || collectionNames.Count == 0)
- {
- return;
- }
-
- foreach (var collectionName in collectionNames)
- {
- var cursor = await GetCollection(collectionName).FindAsync(d => d.Id == id);
-
- var e = await cursor.FirstOrDefaultAsync();
-
- if (e == null)
- {
- continue;
- }
-
- if (isDeserialize)
- {
- e.Deserialize(_scene);
- }
-
- result.Add(e);
- }
- }
- }
-
- ///
- /// 根据指定的 JSON 查询条件查询并返回满足条件的文档列表(加锁)。
- ///
- /// 文档实体类型。
- /// JSON 查询条件。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryJson(string json, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- FilterDefinition filterDefinition = new JsonFilterDefinition(json);
- var cursor = await GetCollection(collection).FindAsync(filterDefinition);
- var list = await cursor.ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 根据指定的 JSON 查询条件查询并返回满足条件的文档列表,并选择指定的列(加锁)。
- ///
- /// 文档实体类型。
- /// JSON 查询条件。
- /// 要查询的列名称数组。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryJson(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var projection = Builders.Projection.Include("");
-
- foreach (var col in cols)
- {
- projection = projection.Include(col);
- }
-
- var options = new FindOptions { Projection = projection };
-
- FilterDefinition filterDefinition = new JsonFilterDefinition(json);
-
- var cursor = await GetCollection(collection).FindAsync(filterDefinition, options);
- var list = await cursor.ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 根据指定的 JSON 查询条件和任务 ID 查询并返回满足条件的文档列表(加锁)。
- ///
- /// 文档实体类型。
- /// 任务 ID。
- /// JSON 查询条件。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> QueryJson(long taskId, string json, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(taskId))
- {
- FilterDefinition filterDefinition = new JsonFilterDefinition(json);
- var cursor = await GetCollection(collection).FindAsync(filterDefinition);
- var list = await cursor.ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 根据指定过滤条件查询并返回满足条件的文档列表,选择指定的列(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 要查询的列名称数组。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- /// 满足条件的文档列表。
- public async FTask> Query(Expression> filter, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var projection = Builders.Projection.Include("_id");
-
- foreach (var t in cols)
- {
- projection = projection.Include(t);
- }
-
- var list = await GetCollection(collection).Find(filter).Project(projection).ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- ///
- /// 根据指定过滤条件查询并返回满足条件的文档列表,选择指定的列(加锁)。
- ///
- /// 文档实体类型。
- /// 查询过滤条件。
- /// 要查询的列名称数组。
- /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
- /// 集合名称。
- ///
- public async FTask> Query(Expression> filter, Expression>[] cols, bool isDeserialize = false, string collection = null) where T : Entity
- {
- using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
- {
- var projection = Builders.Projection.Include("_id");
-
- foreach (var col in cols)
- {
- if (col.Body is not MemberExpression memberExpression)
- {
- throw new ArgumentException("Lambda expression must be a member access expression.");
- }
-
- projection = projection.Include(memberExpression.Member.Name);
- }
-
- var list = await GetCollection(collection).Find(filter).Project(projection).ToListAsync();
-
- if (!isDeserialize || list is not { Count: > 0 })
- {
- return list;
- }
-
- foreach (var entity in list)
- {
- entity.Deserialize(_scene);
- }
-
- return list;
- }
- }
-
- #endregion
-
- #region Save
-
- ///
- /// 保存实体对象到数据库(加锁)。
- ///
- /// 实体类型。
- /// 事务会话对象。
- /// 要保存的实体对象。
- /// 集合名称。
- public async FTask Save(object transactionSession, T? entity, string collection = null) where T : Entity
- {
- if (entity == null)
- {
- Log.Error($"save entity is null: {typeof(T).Name}");
- return;
- }
-
- var clone = _serializer.Clone(entity);
-
- using (await _dataBaseLock.Wait(clone.Id))
- {
- await GetCollection(collection).ReplaceOneAsync(
- (IClientSessionHandle)transactionSession, d => d.Id == clone.Id, clone,
- new ReplaceOptions { IsUpsert = true });
- }
- }
-
- ///
- /// 保存实体对象到数据库(加锁)。
- ///
- /// 实体类型。
- /// 要保存的实体对象。
- /// 集合名称。
- public async FTask Save(T? entity, string collection = null) where T : Entity, new()
- {
- if (entity == null)
- {
- Log.Error($"save entity is null: {typeof(T).Name}");
-
- return;
- }
-
- var clone = _serializer.Clone(entity);
-
- using (await _dataBaseLock.Wait(clone.Id))
- {
- await GetCollection(collection).ReplaceOneAsync(d => d.Id == clone.Id, clone, new ReplaceOptions { IsUpsert = true });
- }
- }
-
- ///
- /// 保存实体对象到数据库(加锁)。
- ///
- /// 保存的条件表达式。
- /// 实体类型。
- /// 集合名称。
- ///
- public async FTask Save(Expression> filter, T? entity, string collection = null) where T : Entity, new()
- {
- if (entity == null)
- {
- Log.Error($"save entity is null: {typeof(T).Name}");
- return;
- }
-
- T clone = _serializer.Clone(entity);
-
- using (await _dataBaseLock.Wait(clone.Id))
- {
- await GetCollection(collection).ReplaceOneAsync(filter, clone, new ReplaceOptions { IsUpsert = true });
- }
- }
-
- ///
- /// 保存多个实体对象到数据库(加锁)。
- ///
- /// 文档 ID。
- /// 要保存的实体对象列表。
- public async FTask Save(long id, List? entities)
- {
- if (entities == null || entities.Count == 0)
- {
- Log.Error("save entity is null");
- return;
- }
-
- using var listPool = ListPool.Create();
-
- foreach (var entity in entities)
- {
- listPool.Add(_serializer.Clone(entity));
- }
-
- using (await _dataBaseLock.Wait(id))
- {
- foreach (var clone in listPool)
- {
- try
- {
- await GetCollection(clone.GetType().Name).ReplaceOneAsync(d => d.Id == clone.Id, clone, new ReplaceOptions { IsUpsert = true });
- }
- catch (Exception e)
- {
- Log.Error($"Save List Entity Error: {clone.GetType().Name} {clone}\n{e}");
- }
- }
- }
- }
-
- #endregion
-
- #region Insert
-
- ///
- /// 插入单个实体对象到数据库(加锁)。
- ///
- /// 实体类型。
- /// 要插入的实体对象。
- /// 集合名称。
- public async FTask Insert(T? entity, string collection = null) where T : Entity, new()
- {
- if (entity == null)
- {
- Log.Error($"insert entity is null: {typeof(T).Name}");
- return;
- }
-
- var clone = _serializer.Clone(entity);
-
- using (await _dataBaseLock.Wait(entity.Id))
- {
- await GetCollection