更新最新框架

This commit is contained in:
Bob.Song
2025-11-11 17:43:11 +08:00
parent 7b10d4cb31
commit fd3c6ec38d
1048 changed files with 11041 additions and 87002 deletions

View File

@@ -59,7 +59,7 @@ internal static class AuthenticationComponentSystem
}
var scene = self.Scene;
var worldDateBase = scene.World.DataBase; //DateBase
var worldDateBase = scene.World.Database; //DateBase
var usernameHashCode = userName.GetHashCode();
using (var @lock =
@@ -176,7 +176,7 @@ internal static class AuthenticationComponentSystem
}
// 2、数据库查询该账号是否存在
var worldDateBase = scene.World.DataBase;
var worldDateBase = scene.World.Database;
var isExist = await worldDateBase.Exist<Account>(d => d.Username == username);
if (isExist)
{
@@ -239,7 +239,7 @@ internal static class AuthenticationComponentSystem
using (var @lock = await scene.CoroutineLockComponent.Wait((int)LockType.AuthenticationRemoveLock, accountId))
{
var worldDateBase = scene.World.DataBase;
var worldDateBase = scene.World.Database;
await worldDateBase.Remove<Account>(accountId);
Log.Info($"Remove source:{source} accountId:{accountId}");
return 0;

View File

@@ -1,55 +0,0 @@
using Fantasy.Entitas;
using Fantasy.Entitas.Interface;
namespace Fantasy;
// 这个是一个自定义系统类型,用于决定系统类型。
// 也可以用枚举,看个人怎么使用了。
public static class CustomSystemType
{
public const int RunSystem = 1;
}
// 这个是一个自定义系统,用于处理自定义事件。
public abstract class RunSystem<T> : CustomSystem<T> where T : Entity
{
/// <summary>
/// 自定义事件类型,用于决定事件的类型。
/// </summary>
public override int CustomEventType => CustomSystemType.RunSystem;
/// <summary>
/// 不知道为什么这样定义的,就照搬就可以了。
/// </summary>
/// <param name="self"></param>
protected abstract override void Custom(T self);
/// <summary>
/// 不知道为什么这样定义的,就照搬就可以了。
/// </summary>
/// <returns></returns>
public override Type EntitiesType() => typeof(T);
}
// 下面是一个测试自定义系统。
// 首先定义一个组件用来测试自定义系统。
public class TestCustomSystemComponent : Entity
{
}
// 现在给TestCustomSystemComponent组件添加一个自定义系统。
// 现在添加的就是上面定义的RunSystem自定义系统。
public class TestCustomSystemComponentRunSystem : RunSystem<TestCustomSystemComponent>
{
protected override void Custom(TestCustomSystemComponent self)
{
Log.Debug($"执行了TestCustomSystemComponentRunSystem");
}
}
// 执行方法
// 在任何实体下获得Scene下面的EntityComponent.CustomSystem方法。
// 比如下面这个
// 第一个参数是你要执行自定义系统的实体实例
// 第二个参数是自定义系统类型
// scene.EntityComponent.CustomSystem(testCustomSystemComponent, CustomSystemType.RunSystem);
// 你可以在OnCreateSceneEvent.cs的Handler方法里找到执行这个的例子。

View File

@@ -100,7 +100,7 @@ public static class PlayerBasicCacheManageComponentSystem
var ret = new List<PlayerBasicCache>();
//TODO:需要考虑如果数量过大是否需要分页
List<Player> players =
await manage.Scene.World.DataBase.QueryByPage<Player>(d => ids.Contains(d.Id), 1, ids.Count);
await manage.Scene.World.Database.QueryByPage<Player>(d => ids.Contains(d.Id), 1, ids.Count);
foreach (var player in players)
{
var cache = manage.UpdateCache(player);

View File

@@ -27,7 +27,7 @@ public static class PlayerItemContainerComponentSystem
public static async FTask Save(this PlayerItemContainerComponent self)
{
await self.Scene.World.DataBase.Save(self);
await self.Scene.World.Database.Save(self);
}
#endregion

View File

@@ -218,7 +218,7 @@ public static class PlayerManageComponentSystem
{
if (player.GetComponent<T>() == null)
{
var component = await player.Scene.World.DataBase.Query<T>(player.Id, true);
var component = await player.Scene.World.Database.Query<T>(player.Id, true);
if (component == null)
{
//如果没有组件

View File

@@ -13,7 +13,7 @@ public static class PlayerHelper
public static async FTask Save(this Player self)
{
//先立马保存,后续做缓存
await self.Scene.World.DataBase.Save(self);
await self.Scene.World.Database.Save(self);
}
/// <summary>
@@ -24,7 +24,7 @@ public static class PlayerHelper
/// <returns></returns>
public static async FTask<Player?> LoadDataBase(Scene scene, long accountId)
{
var account = await scene.World.DataBase.First<Player>(d => d.Id == accountId);
var account = await scene.World.Database.First<Player>(d => d.Id == accountId);
if (account == null)
{
return null;

View File

@@ -9,7 +9,7 @@ public static class PlayerWalletComponentSystem
public static async FTask Save(this PlayerWalletComponent self)
{
await self.Scene.World.DataBase.Save(self);
await self.Scene.World.Database.Save(self);
}
#endregion

View File

@@ -1,24 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>default</LangVersion>
<TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<RootNamespace>Hotfix</RootNamespace>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Entity\Entity.csproj" />
<ProjectReference Include="..\Fantasy\Fantasy.Net\Fantasy.Net\Fantasy.Net.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Entity\Entity.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Game\Helper\" />
<Folder Include="Game\Shop\Handler\" />
<Folder Include="Social\Chat\" />
<Folder Include="Social\Club\" />
<Folder Include="Social\Mail\Handler\Inner\" />
<Folder Include="Utils\" />
</ItemGroup>
</Project>
</Project>

View File

@@ -1,187 +1,224 @@
using System.Diagnostics;
using Fantasy;
using Fantasy.Async;
using Fantasy.Entitas;
using Fantasy.Event;
using Fantasy.Helper;
using Fantasy.Serialize;
using NB;
using NB.Authentication;
using NB.Chat;
using NB.Game;
using NB.Gate;
using NB.Map;
using NBF;
using ProtoBuf;
namespace NB;
public sealed class SubSceneTestComponent : Entity
{
public override void Dispose()
{
Log.Debug("销毁SubScene下的SubSceneTestComponent");
base.Dispose();
}
}
namespace NBF;
public sealed class OnCreateSceneEvent : AsyncEventSystem<OnCreateScene>
{
private static long _addressableSceneRunTimeId;
private static long _addressableSceneRuntimeId;
/// <summary>
/// Handles the OnCreateScene event.
/// </summary>
/// <param name="self">The OnCreateScene object.</param>
/// <returns>A task representing the asynchronous operation.</returns>
protected override async FTask Handler(OnCreateScene self)
{
// var epoch1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000;
//
// {
// var now = TimeHelper.Transition(new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc));
// var epochThisYear = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000 - epoch1970;
// var time = (uint)((now - epochThisYear) / 1000);
// Log.Debug($"time = {time} now = {now} epochThisYear = {epochThisYear}");
// }
//
// {
// var now = TimeHelper.Transition(new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc));
// var epochThisYear = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000 - epoch1970;
// var time = (uint)((now - epochThisYear) / 1000);
// Log.Debug($"time = {time} now = {now} epochThisYear = {epochThisYear}");
// }
var scene = self.Scene;
// 在这里执行你的初始化逻辑
Log.Info($"Scene created: SceneType={scene.SceneType}, SceneId={scene.Id} SceneConfigId={scene.SceneConfigId}");
switch (scene.SceneType)
{
case 6666:
{
var subSceneTestComponent = scene.AddComponent<SubSceneTestComponent>();
Log.Debug("增加了SubSceneTestComponent");
scene.EntityComponent.CustomSystem(subSceneTestComponent, CustomSystemType.RunSystem);
break;
}
case SceneType.Addressable:
{
// scene.AddComponent<AddressableManageComponent>();
_addressableSceneRunTimeId = scene.RuntimeId;
// 保存 Addressable 场景的 RuntimeId,供其他场景使用
_addressableSceneRuntimeId = scene.RuntimeId;
await InitializeAddressableScene(scene);
break;
}
case SceneType.Map:
case SceneType.Authentication:
{
Log.Debug($"Map Scene SceneRuntimeId:{scene.RuntimeId}");
var roomCode = RoomHelper.GenerateCode(scene.SceneConfigId, 1);
Log.Info($"测试 roomCode{roomCode}");
// uint serverId = 25255;
// for (int i = 1; i < 65535; i++)
// {
// var roomId = RoomHelper.GenerateCode(serverId, i);
// RoomHelper.ParseCode(roomId, out var pId, out var rId);
// Log.Info($"生成id测试房间id={roomId} 原始服务id{serverId} 原始房间id={i} 解析={pId} {rId}");
// }
break;
}
case SceneType.Social:
{
break;
}
case SceneType.Game:
{
var rod = RodConfig.Get(30001);
Log.Info("rod config id="+rod.Id);
// // Begins transaction
// using (var session = mongoClient.StartSession())
// {
// session.StartTransaction();
// try
// {
// // Creates sample data
// var book = new Book
// {
// Title = "Beloved",
// Author = "Toni Morrison",
// InStock = true
// };
// var film = new Film
// {
// Title = "Star Wars",
// Director = "George Lucas",
// InStock = true
// };
// // Inserts sample data
// books.InsertOne(session, book);
// films.InsertOne(session, film);
// // Commits our transaction
// session.CommitTransaction();
// }
// catch (Exception e)
// {
// Console.WriteLine("Error writing to MongoDB: " + e.Message);
// return;
// }
// // Prints a success message if no error thrown
// Console.WriteLine("Successfully committed transaction!");
// }
// var client = self.Scene.World.DataBase;
// List<FTask> tasks = new List<FTask>();
// Stopwatch stopwatch = new Stopwatch();
// stopwatch.Start();
// for (int i = 0; i < 100; i++)
// {
// var accountId = scene.EntityIdFactory.Create;
// var account = PlayerFactory.Create(scene, accountId);
//
// account.Level = 99;
// account.NickName = $"测试号{i + 1}";
// account.Country = "cn";
// account.Exp = 999;
// account.Head = "xxx.png";
// tasks.Add(account.Save());
// }
// await FTask.WaitAll(tasks);
// // self.Scene.World.DataBase.InsertBatch()
//
// stopwatch.Stop();
// Log.Info($"创建100个号入库耗时={stopwatch.ElapsedMilliseconds}ms");
await InitializeAuthenticationScene(scene);
break;
}
case SceneType.Gate:
{
// var tasks = new List<FTask>(2000);
// var session = scene.GetSession(_addressableSceneRunTimeId);
// var sceneNetworkMessagingComponent = scene.NetworkMessagingComponent;
// var g2ATestRequest = new G2A_TestRequest();
//
// async FTask Call()
// {
// await sceneNetworkMessagingComponent.CallInnerRouteBySession(session,_addressableSceneRunTimeId,g2ATestRequest);
// }
//
// for (int i = 0; i < 100000000000; i++)
// {
// tasks.Clear();
// for (int j = 0; j < tasks.Capacity; ++j)
// {
// tasks.Add(Call());
// }
// await FTask.WaitAll(tasks);
// }
// 执行自定义系统
var testCustomSystemComponent = scene.AddComponent<TestCustomSystemComponent>();
scene.EntityComponent.CustomSystem(testCustomSystemComponent, CustomSystemType.RunSystem);
// // 测试配置表
// var instanceList = UnitConfigData.Instance.List;
// var unitConfig = instanceList[0];
// Log.Debug(instanceList[0].Dic[1]);
// Gate 场景初始化
await InitializeGateScene(scene);
break;
}
case SceneType.Map:
{
await InitializeMapScene(scene);
break;
}
case SceneType.Social:
{
// Gate 场景初始化
await InitializeSocialScene(scene);
break;
}
case SceneType.Game:
{
await InitializeGameScene(scene);
break;
}
}
await FTask.CompletedTask;
}
private async FTask InitializeAuthenticationScene(Scene scene)
{
// 用于鉴权服务器注册和登录相关逻辑的组件
scene.AddComponent<AuthenticationComponent>().UpdatePosition();
// 用于颁发ToKen证书相关的逻辑。
scene.AddComponent<AuthenticationJwtComponent>();
await FTask.CompletedTask;
}
private async FTask InitializeGateScene(Scene scene)
{
// Gate 场景特定的初始化逻辑
Log.Info($"初始化 Gate 场景: {scene.Id}");
// 用于管理网关所有连接的组件
scene.AddComponent<GateUnitManageComponent>();
// 用于验证JWT是否合法的组件
scene.AddComponent<GateJWTComponent>();
await FTask.CompletedTask;
// var roomCode = RoomHelper.GenerateCode(scene.SceneConfigId, 1);
// Log.Info($"测试 roomCode{roomCode}");
// uint serverId = 25255;
// for (int i = 1; i < 65535; i++)
// {
// var roomId = RoomHelper.GenerateCode(serverId, i);
// RoomHelper.ParseCode(roomId, out var pId, out var rId);
// Log.Info($"生成id测试房间id={roomId} 原始服务id{serverId} 原始房间id={i} 解析={pId} {rId}");
// }
// var tasks = new List<FTask>(2000);
// var session = scene.GetSession(_addressableSceneRunTimeId);
// var sceneNetworkMessagingComponent = scene.NetworkMessagingComponent;
// var g2ATestRequest = new G2A_TestRequest();
//
// async FTask Call()
// {
// await sceneNetworkMessagingComponent.CallInnerRouteBySession(session,_addressableSceneRunTimeId,g2ATestRequest);
// }
//
// for (int i = 0; i < 100000000000; i++)
// {
// tasks.Clear();
// for (int j = 0; j < tasks.Capacity; ++j)
// {
// tasks.Add(Call());
// }
// await FTask.WaitAll(tasks);
// }
// // 测试配置表
// var instanceList = UnitConfigData.Instance.List;
// var unitConfig = instanceList[0];
// Log.Debug(instanceList[0].Dic[1]);
}
private async FTask InitializeMapScene(Scene scene)
{
// Map 场景特定的初始化逻辑
Log.Info($"初始化 Map 场景: {scene.Id}");
Log.Info("创建地图场景===");
scene.AddComponent<MapUnitManageComponent>();
var roomManageComponent = scene.AddComponent<RoomManageComponent>();
scene.AddComponent<MapManageComponent>();
var room = roomManageComponent.Create(361499030775398402);
if (room != null)
{
roomManageComponent.TestRoomCode = room.Code;
Log.Info($"测试房间代码 = {room.Code}");
}
await FTask.CompletedTask;
}
private async FTask InitializeSocialScene(Scene scene)
{
Log.Info($"初始化 Social 场景: {scene.Id}");
//用于管理玩家的组件
scene.AddComponent<SocialUnitManageComponent>();
scene.AddComponent<ChatChannelCenterComponent>();
scene.AddComponent<MailManageComponent>();
await FTask.CompletedTask;
}
private async FTask InitializeGameScene(Scene scene)
{
// Chat 场景特定的初始化逻辑
Log.Info($"初始化 Game 场景: {scene.Id}");
//用于管理玩家的组件
scene.AddComponent<PlayerManageComponent>();
scene.AddComponent<PlayerBasicCacheManageComponent>();
await FTask.CompletedTask;
// var rod = RodConfig.Get(30001);
// Log.Info("rod config id=" + rod.Id);
// // Begins transaction
// using (var session = mongoClient.StartSession())
// {
// session.StartTransaction();
// try
// {
// // Creates sample data
// var book = new Book
// {
// Title = "Beloved",
// Author = "Toni Morrison",
// InStock = true
// };
// var film = new Film
// {
// Title = "Star Wars",
// Director = "George Lucas",
// InStock = true
// };
// // Inserts sample data
// books.InsertOne(session, book);
// films.InsertOne(session, film);
// // Commits our transaction
// session.CommitTransaction();
// }
// catch (Exception e)
// {
// Console.WriteLine("Error writing to MongoDB: " + e.Message);
// return;
// }
// // Prints a success message if no error thrown
// Console.WriteLine("Successfully committed transaction!");
// }
// var client = self.Scene.World.Database;
// List<FTask> tasks = new List<FTask>();
// Stopwatch stopwatch = new Stopwatch();
// stopwatch.Start();
// for (int i = 0; i < 100; i++)
// {
// var accountId = scene.EntityIdFactory.Create;
// var account = PlayerFactory.Create(scene, accountId);
//
// account.Level = 99;
// account.NickName = $"测试号{i + 1}";
// account.Country = "cn";
// account.Exp = 999;
// account.Head = "xxx.png";
// tasks.Add(account.Save());
// }
// await FTask.WaitAll(tasks);
// // self.Scene.World.Database.InsertBatch()
//
// stopwatch.Stop();
// Log.Info($"创建100个号入库耗时={stopwatch.ElapsedMilliseconds}ms");
}
private async FTask InitializeAddressableScene(Scene scene)
{
// Addressable 场景特定的初始化逻辑
Log.Info($"初始化 Addressable 场景: {scene.Id}");
await FTask.CompletedTask;
}
}

View File

@@ -1,71 +0,0 @@
using Fantasy;
using Fantasy.Async;
using Fantasy.Event;
using NB.Authentication;
using NB.Chat;
using NB.Game;
using NB.Gate;
using NB.Map;
namespace NB;
public class OnSceneCreate_Init : AsyncEventSystem<OnCreateScene>
{
protected override async FTask Handler(OnCreateScene self)
{
var scene = self.Scene;
switch (scene.SceneType)
{
case SceneType.Authentication:
{
// 用于鉴权服务器注册和登录相关逻辑的组件
scene.AddComponent<AuthenticationComponent>().UpdatePosition();
// 用于颁发ToKen证书相关的逻辑。
scene.AddComponent<AuthenticationJwtComponent>();
break;
}
case SceneType.Gate:
{
// 用于管理网关所有连接的组件
scene.AddComponent<GateUnitManageComponent>();
// 用于验证JWT是否合法的组件
scene.AddComponent<GateJWTComponent>();
break;
}
case SceneType.Game:
{
//用于管理玩家的组件
scene.AddComponent<PlayerManageComponent>();
scene.AddComponent<PlayerBasicCacheManageComponent>();
break;
}
case SceneType.Social:
{
//用于管理玩家的组件
scene.AddComponent<SocialUnitManageComponent>();
scene.AddComponent<ChatChannelCenterComponent>();
scene.AddComponent<MailManageComponent>();
break;
}
case SceneType.Map:
{
Log.Info("创建地图场景===");
scene.AddComponent<MapUnitManageComponent>();
var roomManageComponent = scene.AddComponent<RoomManageComponent>();
scene.AddComponent<MapManageComponent>();
var room = roomManageComponent.Create(361499030775398402);
if (room != null)
{
roomManageComponent.TestRoomCode = room.Code;
Log.Info($"测试房间代码 = {room.Code}");
}
break;
}
}
await FTask.CompletedTask;
}
}

View File

@@ -36,7 +36,7 @@ public static class ChatChannelCenterComponentSystem
}
//查数据库
channel = await self.Scene.World.DataBase.Query<ChatChannel>(channelId, true);
channel = await self.Scene.World.Database.Query<ChatChannel>(channelId, true);
if (channel != null)
{
self.Channels.Add(channel.Id, channel);
@@ -58,7 +58,7 @@ public static class ChatChannelCenterComponentSystem
channel.CreateTime = TimeHelper.Now;
self.Channels.Add(channel.Id, channel);
//保存到数据库
await self.Scene.World.DataBase.Save(channel);
await self.Scene.World.Database.Save(channel);
return channel;
}

View File

@@ -114,7 +114,7 @@ public static class ChatUnitManageComponentSystem
{
if (socialUnit.GetComponent<T>() == null)
{
var mailComponent = await socialUnit.Scene.World.DataBase.Query<T>(socialUnit.Id, true);
var mailComponent = await socialUnit.Scene.World.Database.Query<T>(socialUnit.Id, true);
if (mailComponent == null)
{
//如果没有邮件组件

View File

@@ -16,7 +16,7 @@ public static class MailConversationHelper
public static async FTask<MailConversation> LoadDataBase(Scene scene, long firstId, long secondId)
{
var conversation =
await scene.World.DataBase.First<MailConversation>(d => d.FirstId == firstId && d.SecondId == secondId);
await scene.World.Database.First<MailConversation>(d => d.FirstId == firstId && d.SecondId == secondId);
if (conversation == null)
{
return null;
@@ -33,6 +33,6 @@ public static class MailConversationHelper
/// <param name="id"></param>
public static async FTask DeleteDataBase(Scene scene,long id)
{
await scene.World.DataBase.Remove<MailConversation>(id);
await scene.World.Database.Remove<MailConversation>(id);
}
}

View File

@@ -48,7 +48,7 @@ public static class MailComponentSystem
});
}
await self.Scene.World.DataBase.Save(self);
await self.Scene.World.Database.Save(self);
Log.Info($"MailComponent Add id:{self.Id} mailId:{mail.Id} count:{self.Mails.Count}");
}
@@ -72,7 +72,7 @@ public static class MailComponentSystem
});
}
await self.Scene.World.DataBase.Save(self);
await self.Scene.World.Database.Save(self);
Log.Info($"MailComponent Remove id:{self.Id} mailId:{mail.Id} count:{self.Mails.Count}");
return 0;
}

View File

@@ -58,7 +58,7 @@ public static class MailConversationSystem
if (forceSave)
{
self.UpdateTime = TimeHelper.Now;
await self.Scene.World.DataBase.Save(self);
await self.Scene.World.Database.Save(self);
}
else
{

View File

@@ -84,7 +84,7 @@ public static class MailManageComponentSystem
public static async FTask<List<MailConversation>> GetConversations(this MailManageComponent self, long id)
{
List<MailConversation> players =
await self.Scene.World.DataBase.QueryByPageOrderBy<MailConversation>(
await self.Scene.World.Database.QueryByPageOrderBy<MailConversation>(
d => d.FirstId == id || d.SecondId == id, 1, 50,
d => d.UpdateTime);

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<fantasy xmlns="http://fantasy.net/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://fantasy.net/config Fantasy.xsd">
<!-- ↓这是为了兼容旧版Fantasy的导表Json配置↓, 如果这个XML节点被注释掉, 就会以 Fantasy.config 配置为准 -->
<!--<configTable path="../../../../Config/Json/Server" />-->
<!-- ↓这是目前推荐使用的Fantasy框架启服配置↓ -->
<network inner="TCP" maxMessageSize="1048560" />
<session idleTimeout="8000" idleInterval="5000" />
<server>
<!-- 机器配置 -->
<machines>
<machine id="1" outerIP="127.0.0.1" outerBindIP="127.0.0.1" innerBindIP="127.0.0.1" />
</machines>
<!-- 进程配置 -->
<processes>
<process id="1" machineId="1" startupGroup="0" />
</processes>
<!-- 世界配置 -->
<worlds>
<world id="1" worldName="WorldA">
<database dbType="MongoDB" dbName="fantasy_main" dbConnection="mongodb://127.0.0.1" />
</world>
</worlds>
<!-- 场景配置 -->
<scenes>
<scene id="1001"
processConfigId="1"
worldConfigId="1"
sceneRuntimeMode="MultiThread"
sceneTypeString="Authentication"
networkProtocol="KCP"
outerPort="20001" innerPort="11001" />
<scene id="1002"
processConfigId="1"
worldConfigId="1"
sceneRuntimeMode="MultiThread"
sceneTypeString="Addressable"
networkProtocol=""
outerPort="0" innerPort="11011" />
<scene id="1003"
processConfigId="1"
worldConfigId="1"
sceneRuntimeMode="MultiThread"
sceneTypeString="Gate"
networkProtocol="KCP"
outerPort="20000" innerPort="11021" />
<scene id="1004"
processConfigId="1"
worldConfigId="1"
sceneRuntimeMode="MultiThread"
sceneTypeString="Game"
networkProtocol=""
outerPort="0" innerPort="11031" />
<scene id="1006"
processConfigId="1"
worldConfigId="1"
sceneRuntimeMode="MultiThread"
sceneTypeString="Social"
networkProtocol=""
outerPort="0" innerPort="11051" />
<scene id="1007"
processConfigId="1"
worldConfigId="1"
sceneRuntimeMode="MultiThread"
sceneTypeString="Map"
networkProtocol=""
outerPort="0" innerPort="11061" />
</scenes>
</server>
</fantasy>

View File

@@ -0,0 +1,345 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://fantasy.net/config"
xmlns="http://fantasy.net/config"
elementFormDefault="qualified">
<!-- Root element -->
<xs:element name="fantasy">
<xs:annotation>
<xs:documentation>Fantasy框架配置文件根元素</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="configTable" type="configTableType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>配置表路径设置</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="network" type="networkRuntimeType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>网络运行时配置</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="session" type="sessionRuntimeType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>会话运行时配置</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="server" type="serverType" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>服务器配置</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ConfigTable type -->
<xs:complexType name="configTableType">
<xs:attribute name="path" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>配置表文件路径</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Server type -->
<xs:complexType name="serverType">
<xs:sequence>
<xs:element name="machines" type="machinesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>机器配置列表</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="processes" type="processesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>进程配置列表</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="worlds" type="worldsType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>世界配置列表</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="scenes" type="scenesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>场景配置列表</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="units" type="unitsType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>单位配置列表</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- Machines types -->
<xs:complexType name="machinesType">
<xs:sequence>
<xs:element name="machine" type="machineType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="machineType">
<xs:attribute name="id" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>机器ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="outerIP" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>外网IP地址</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="outerBindIP" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>外网绑定IP地址</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="innerBindIP" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>内网绑定IP地址</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Processes types -->
<xs:complexType name="processesType">
<xs:sequence>
<xs:element name="process" type="processType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="processType">
<xs:attribute name="id" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>进程ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="machineId" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>所属机器ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="startupGroup" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>启动分组</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Worlds types -->
<xs:complexType name="worldsType">
<xs:sequence>
<xs:element name="world" type="worldType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- database的选择 -->
<xs:complexType name="databaseType">
<xs:attribute name="dbType" use="required">
<xs:annotation>
<xs:documentation>数据库类型</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<!-- PostgreSQL -->
<xs:enumeration value="PostgreSQL"/>
<xs:enumeration value="Postgres"/>
<xs:enumeration value="PgSQL"/>
<xs:enumeration value="Pg"/>
<xs:enumeration value="PG"/>
<!-- MongoDB -->
<xs:enumeration value="MongoDB"/>
<xs:enumeration value="Mongo"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="dbName" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>数据库名称</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="dbConnection" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>数据库连接字符串</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="worldType">
<!-- 每个world允许包含1或n个database -->
<xs:sequence>
<xs:annotation>
<xs:documentation>世界中配置的数据库</xs:documentation>
</xs:annotation>
<xs:element name="database" type="databaseType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<!-- world需要id和worldName -->
<xs:attribute name="id" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>世界ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="worldName" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>世界名称</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Scenes types -->
<xs:complexType name="scenesType">
<xs:sequence>
<xs:element name="scene" type="sceneType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sceneType">
<xs:attribute name="id" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>场景ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="processConfigId" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>进程配置ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="worldConfigId" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>世界配置ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sceneRuntimeMode" use="required">
<xs:annotation>
<xs:documentation>场景运行模式</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="MainThread"/>
<xs:enumeration value="MultiThread"/>
<xs:enumeration value="ThreadPool"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="sceneTypeString" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>场景类型字符串</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="networkProtocol" use="optional">
<xs:annotation>
<xs:documentation>网络协议类型</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="TCP"/>
<xs:enumeration value="KCP"/>
<xs:enumeration value="WebSocket"/>
<xs:enumeration value="HTTP"/>
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="outerPort" type="xs:unsignedInt" use="optional" default="0">
<xs:annotation>
<xs:documentation>外网端口</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="innerPort" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>内网端口</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Network Runtime type -->
<xs:complexType name="networkRuntimeType">
<xs:attribute name="inner" use="optional" default="TCP">
<xs:annotation>
<xs:documentation>服务器内部网络协议</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="TCP"/>
<xs:enumeration value="KCP"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="maxMessageSize" type="xs:int" use="optional" default="1048560">
<xs:annotation>
<xs:documentation>消息体最大长度(字节)默认1048560字节(约1.02MB)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Session Runtime type -->
<xs:complexType name="sessionRuntimeType">
<xs:attribute name="idleTimeout" type="xs:int" use="optional" default="8000">
<xs:annotation>
<xs:documentation>Session idle check timeout (in milliseconds)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idleInterval" type="xs:int" use="optional" default="5000">
<xs:annotation>
<xs:documentation>Session idle check interval (in milliseconds)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Units types -->
<xs:complexType name="unitsType">
<xs:sequence>
<xs:element name="unit" type="unitType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="unitType">
<xs:sequence>
<xs:element name="dic" type="unitDicType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>单位字典数据</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>单位ID</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>单位名称</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="model" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>单位模型</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="unitDicType">
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="key" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>字典键</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>字典值</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,424 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v9.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v9.0": {
"Hotfix/1.0.0": {
"dependencies": {
"Entity": "1.0.0"
},
"runtime": {
"Hotfix.dll": {}
}
},
"CommandLineParser/2.9.1": {
"runtime": {
"lib/netstandard2.0/CommandLine.dll": {
"assemblyVersion": "2.9.1.0",
"fileVersion": "2.9.1.0"
}
}
},
"DnsClient/1.6.1": {
"dependencies": {
"Microsoft.Win32.Registry": "5.0.0"
},
"runtime": {
"lib/net5.0/DnsClient.dll": {
"assemblyVersion": "1.6.1.0",
"fileVersion": "1.6.1.0"
}
}
},
"Fantasy-Net/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"
}
}
},
"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": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"ThirdParty/1.0.0": {
"runtime": {
"ThirdParty.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"Hotfix/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"CommandLineParser/2.9.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
"path": "commandlineparser/2.9.1",
"hashPath": "commandlineparser.2.9.1.nupkg.sha512"
},
"DnsClient/1.6.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
"path": "dnsclient/1.6.1",
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
},
"Fantasy-Net/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"
},
"Entity/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"ThirdParty/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Hotfix")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7b10d4cb317c9f310649a9cb4afe3882d4b12624")]
[assembly: System.Reflection.AssemblyProductAttribute("Hotfix")]
[assembly: System.Reflection.AssemblyTitleAttribute("Hotfix")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// 由 MSBuild WriteCodeFragment 类生成。

View File

@@ -0,0 +1 @@
1a6c20277d8c32971e19ca0e610451e7396ebd99499eddc93137e652e7e5490e

View File

@@ -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 = Hotfix
build_property.ProjectDir = D:\work\Fishing2Server\Hotfix\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 9.0
build_property.EnableCodeStyleSeverity =

View File

@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

View File

@@ -0,0 +1 @@
41f40879fae108427ac2e9e835099cef2ff8300cd2385f9434498ed95c00e0de

View File

@@ -0,0 +1,19 @@
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Fantasy.config
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Fantasy.xsd
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Hotfix.deps.json
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Hotfix.dll
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Hotfix.pdb
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Entity.dll
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\Entity.pdb
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.csproj.AssemblyReference.cache
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.GeneratedMSBuildEditorConfig.editorconfig
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.AssemblyInfoInputs.cache
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.AssemblyInfo.cs
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.csproj.CoreCompileInputs.cache
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.csproj.Up2Date
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.dll
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\refint\Hotfix.dll
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\Hotfix.pdb
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\obj\Debug\net9.0\ref\Hotfix.dll
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\ThirdParty.dll
D:\work\Fishing2ServerNew\Fishing2\Server\Hotfix\bin\Debug\net9.0\ThirdParty.pdb

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,225 @@
{
"format": 1,
"restore": {
"D:\\work\\Fishing2Server\\Hotfix\\Hotfix.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\\Hotfix\\Hotfix.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\work\\Fishing2Server\\Hotfix\\Hotfix.csproj",
"projectName": "Hotfix",
"projectPath": "D:\\work\\Fishing2Server\\Hotfix\\Hotfix.csproj",
"packagesPath": "C:\\Users\\FIREBAT\\.nuget\\packages\\",
"outputPath": "D:\\work\\Fishing2Server\\Hotfix\\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\\Entity\\Entity.csproj": {
"projectPath": "D:\\work\\Fishing2Server\\Entity\\Entity.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.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"
}
}
}
}
}

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\FIREBAT\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\FIREBAT\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)fantasy-net\2025.2.0\buildTransitive\Fantasy-Net.targets" Condition="Exists('$(NuGetPackageRoot)fantasy-net\2025.2.0\buildTransitive\Fantasy-Net.targets')" />
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,34 @@
{
"version": 2,
"dgSpecHash": "X6oCWCLPCsk=",
"success": true,
"projectFilePath": "D:\\work\\Fishing2Server\\Hotfix\\Hotfix.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": []
}

View File

@@ -0,0 +1 @@
"restore":{"projectUniqueName":"D:\\work\\Fishing2Server\\Hotfix\\Hotfix.csproj","projectName":"Hotfix","projectPath":"D:\\work\\Fishing2Server\\Hotfix\\Hotfix.csproj","outputPath":"D:\\work\\Fishing2Server\\Hotfix\\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\\Entity\\Entity.csproj":{"projectPath":"D:\\work\\Fishing2Server\\Entity\\Entity.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.300"}"frameworks":{"net9.0":{"targetAlias":"net9.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"}}

View File

@@ -0,0 +1 @@
17628533859080463

View File

@@ -0,0 +1 @@
17628541514897177