TJC.Cyclops.TaskSystem
                              
                            
                                2025.7.21.1
                            
                        
                    
        
        
                                There is a newer version of this package available.
                                
See the version list below for details.
                    See the version list below for details.
dotnet add package TJC.Cyclops.TaskSystem --version 2025.7.21.1
NuGet\Install-Package TJC.Cyclops.TaskSystem -Version 2025.7.21.1
        
        
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
                    
    
    <PackageReference Include="TJC.Cyclops.TaskSystem" Version="2025.7.21.1" />
        
        
For projects that support PackageReference, copy this XML node into the project file to reference the package.
                    
    
    <PackageVersion Include="TJC.Cyclops.TaskSystem" Version="2025.7.21.1" />
<PackageReference Include="TJC.Cyclops.TaskSystem" />
        
        
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
                    
    
    paket add TJC.Cyclops.TaskSystem --version 2025.7.21.1
        
        
 The NuGet Team does not provide support for this client. Please contact its maintainers for support.
                    
    
    #r "nuget: TJC.Cyclops.TaskSystem, 2025.7.21.1"
        
        
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
                    
    
    #:package TJC.Cyclops.TaskSystem@2025.7.21.1
        
        
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
                    
    
    #addin nuget:?package=TJC.Cyclops.TaskSystem&version=2025.7.21.1
#tool nuget:?package=TJC.Cyclops.TaskSystem&version=2025.7.21.1
        
        
 The NuGet Team does not provide support for this client. Please contact its maintainers for support.
                    
    
    Cyclops.FrameWork
Cyclops.FrameWork 基于aspnetcore封装的api框架,集成了一线开发的常用设置和基础功能;可以用较少的时间代价,让开发人员将精力更多地集中在业务上。
- [√] 全局api调用和框架级异常日志,支持Swagger接口文档的查看、调试和代码生成
- [√] 接口入参校验,Cyclops.FrameWork中的接口参数校验完全基于System.ComponentModel.DataAnnotations,且在此基础上提供了验证数据是否存在ExistAttribute等扩展功能
- [√] 统一返回值,无论是使用Cyclops.FrameWork中的Result及其子类,或者CSharp中的裸类型都自动返回全局统一值,从框架上避免对接混乱
- [√] 标准化快捷文件上传、下载和excel的导入、导出,支持MS Azure和阿里OSS
- [√] 在安全方面集成jwt认证和SafeComparisonFilter防重放攻击,并且支持多租户权限
- [√] 标准化配置,支持Nacos
一、配置示例
{
  "HostingOptions": {
    
    "ServiceName": "Cyclops.WebApplication1",
    "Domain": "https://cyclops.yswenli.com/",
    "EnableHealthCheck": true,
    "AppOptions": {
      "Urls": [ "https://127.0.0.1:39654" ],
      "DisableSwagger": false,
      "HideConsoleLog": false,      
      //jwt TokenManagement
      "JwtAuthConfig": {
        "Secret": "base64:HU8MlQQDHfGaQ+k+0q3z4HKJvNQUTjK5uRGodDATyKc=",
        "Issuer": "yswenli.cnblogs.com",
        "Audience": "Cyclops.FrameWork",
        "AccessExpiration": 315576000
      },
      "MaxRequestSize": 134217728, //134217728,文件限制128M
      "UserStaticPath": true,
      "StaticPaths": [ "upload" ],
      //全局禁用防复放校验
      "DisableSafeComparisonFilter": false,
      "SafeComparisonExpired": 5,
      //全局验证码
      "GloabVerifyCode": "9365",
      //是否启用SignalR
      "EnableSignalR": true,
      //SignalR配置
      "SignalROptions": {
        //SignalR hub url
        "HubUrl": "/hubs/common",
        //握手超时时间
        "HandshakeTimeout": 30,
        //心跳间隔时间
        "KeepAliveInterval": 15,
        //空连接超时时间
        "FreeTimeout": 60,
        //每连接并行处理数量
        "ParallelCount": "1",
        //消息包大小
        "MaximumReceiveMessageSize": 32768
      }
    },
    "NacosConfig": {
      "Listeners": [
        {
          "Optional": false,
          "DataId": "Common",
          "Group": "DEFAULT_GROUP"
        },
        {
          "Optional": false,
          "DataId": "OperationService",
          "Group": "DEFAULT_GROUP"
        }
      ],
      "Namespace": "dev",
      "ServerAddresses": [ "http://127.0.0.1:8848" ],
      "UserName": "",
      "Password": "",
      "ConfigUseRpc": false,
      "NamingUseRpc": false
    }
  }
}
AppConfig节点以下的可以与nacos集成 其它各项如下:
"SnowId": {
  "WorkerId": 1, // 机器码 全局唯一
  "WorkerIdBitLength": 1, // 机器码位长 默认值6,取值范围 [1, 19]
  "SeqBitLength": 6 // 序列数位长 默认值6,取值范围 [3, 21](建议不小于4,值越大性能越高、Id位数也更长)
},
//详细数据库配置见SqlSugar官网(第一个为默认库)
"DbConnectionOptions": {
  "EnableConsoleSql": true, // 启用控制台打印SQL
  "EnableDBLogs": true, // 启用日志入库
  "ConnectionConfigs": [
    {
      "ConfigId": "1300000000001", // 默认库标识-禁止修改
      //"DbType": "SqlServer", // MySql、SqlServer、Sqlite、Oracle、PostgreSQL、Dm、Kdbndp、Oscar、MySqlConnector、Access、OpenGauss、QuestDB、HG、ClickHouse、GBase、Odbc、Custom
      //"ConnectionString": "Data Source=10.10.0.214;Initial Catalog=tjc_dev_cyclopsdb;User Id=testuser;Password=testuser;Encrypt=True;TrustServerCertificate=True;",
      "DbType": "Sqlite",
      "ConnectionString": "Data Source=TJCES.Cyclops.db",
      "DbSettings": {
        "EnableInitDb": true, // 启用库初始化
        "EnableDiffLog": true, // 启用库表差异日志
        "EnableUnderLine": true // 启用驼峰转下划线
      },
      "TableSettings": {
        "EnableInitTable": true, // 启用表初始化
        "EnableIncreTable": false // 启用表增量更新-特性[IncreTable]
      },
      "SeedSettings": {
        "EnableInitSeed": true, // 启用种子初始化
        "EnableIncreSeed": false // 启用种子增量更新-特性[IncreSeed]
      }
    }
    // 日志独立数据库配置
    //,{
    //  "ConfigId": "1300000000002", // 日志库标识-禁止修改
    //  "DbType": "Sqlite",
    //  "ConnectionString": "DataSource=./TJCES.Cyclops.Log.db", // 库连接字符串
    //  "DbSettings": {
    //    "EnableInitDb": true, // 启用库初始化
    //    "EnableDiffLog": false, // 启用库表差异日志
    //    "EnableUnderLine": false // 启用驼峰转下划线
    //  },
    //  "TableSettings": {
    //    "EnableInitTable": true, // 启用表初始化
    //    "EnableIncreTable": false // 启用表增量更新-特性[IncreTable]
    //  },
    //  "SeedSettings": {
    //    "EnableInitSeed": false, // 启用种子初始化
    //    "EnableIncreSeed": false // 启用种子增量更新-特性[IncreSeed]
    //  }
    //}
    //// 其他数据库配置(可以配置多个)
    //,{
    //  "ConfigId": "test", // 库标识
    //  "DbType": "Sqlite", // 库类型
    //  "ConnectionString": "DataSource=./TJCES.Cyclops.Test.db", // 库连接字符串
    //  "DbSettings": {
    //    "EnableInitDb": true, // 启用库初始化
    //    "EnableDiffLog": false, // 启用库表差异日志
    //    "EnableUnderLine": false // 启用驼峰转下划线
    //  },
    //  "TableSettings": {
    //    "EnableInitTable": true, // 启用表初始化
    //    "EnableIncreTable": false // 启用表增量更新-特性[IncreTable]
    //  },
    //  "SeedSettings": {
    //    "EnableInitSeed": true, // 启用种子初始化
    //    "EnableIncreSeed": false // 启用种子增量更新-特性[IncreSeed]
    //  }
    //}
  ]
}
//图形验证码
"CaptchaOptions": {
  "CaptchaType": 2, // 验证码类型0、1、2、3、4、5、6、7、8、9、10、11
  "CodeLength": 4, // 验证码长度, 要放在CaptchaType设置后  当类型为算术表达式时,长度代表操作的个数, 例如2
  "ExpirySeconds": 60, // 验证码过期秒数
  "IgnoreCase": true, // 比较时是否忽略大小写
  "StoreageKeyPrefix": "", // 存储键前缀
  "ImageOption": {
    "Animation": false, // 是否启用动画
    "FontSize": 36, // 字体大小
    "Width": 150, // 验证码宽度
    "Height": 50, // 验证码高度
    "BubbleMinRadius": 5, // 气泡最小半径
    "BubbleMaxRadius": 10, // 气泡最大半径
    "BubbleCount": 3, // 气泡数量
    "BubbleThickness": 1.0, // 气泡边沿厚度
    "InterferenceLineCount": 3, // 干扰线数量
    "FontFamily": "kaiti", // 包含actionj,epilog,fresnel,headache,lexo,prefix,progbot,ransom,robot,scandal,kaiti
    "FrameDelay": 300, // 每帧延迟,Animation=true时有效, 默认300
    "BackgroundColor": "#ffffff", //  格式: rgb, rgba, rrggbb, or rrggbbaa format to match web syntax, 默认#fff
    "ForegroundColors": "", //  颜色格式同BackgroundColor,多个颜色逗号分割,随机选取。不填,空值,则使用默认颜色集
    "Quality": 100, // 图片质量(质量越高图片越大,gif调整无效可能会更大)
    "TextBold": true // 粗体
  },
  "DefaultCode": "9365"
}
//redis配置
"RedisOptions": {
  "SectionName": "Redis",
  "Type": 0,
  "Password": "12321",
  "Masters": "127.0.0.1:6379",
  "Slaves": null,
  "ServiceName": "mymaster",
  "DefaultDatabase": 0,
  "AllowAdmin": true,
  "KeepAlive": 180,
  "ConnectTimeout": 10000,
  "ConnectRetry": 1,
  "BusyRetry": 3,
  "BusyRetryWaitMS": 15000,
  "PoolSize": 1,
  "CommandTimeout": 60000,
  "Extention": null
}
//微信公众号/小程序
"WechatOptions": {
  // 公众号-正式版公众测试号
  "WechatAppId": "",
  "WechatAppSecret": "",
  // 小程序
  "WxOpenAppId": "",
  "WxOpenAppSecret": "",
  //企业微信
  "WechatCorpOptions": {
    "Type": 0,
    "CorpId": "",
    "SelfAppOptions": {
      "AgentId": ,
      "AgentSecret": "",
      "PushToken": "",
      "PushEncodingAESKey": ""
    },
    "DevelopersOptions": {
      "ProviderSecret": "",
      "PushToken": "",
      "PushEncodingAESKey": "",
      "SuiteOptions": [
          {
            "SuiteId": null,
            "SuiteSecret": null,
            "SuitePushToken": null,
            "SuitePushEncodingAESKey": null
          }
      ]
    },
    "SmartHardwareOptions": {
      "ModelId": null,
      "ModelSecret": null,
      "PushToken": null,
      "PushEncodingAESKey": null
    }
  }
},
// 微信支付
"WechatPayOptions": {
  "AppId": "", // 微信公众平台AppId、开放平台AppId、小程序AppId、企业微信CorpId
  "MerchantId": "", // 商户平台的商户号
  "MerchantV3Secret": "", // 商户平台的APIv3密钥
  "MerchantCertificateSerialNumber": "", // 商户平台的证书序列号
  "MerchantCertificatePrivateKey": "/WxPayCert/apiclient_key.pem", // 商户平台的API证书私钥(apiclient_key.pem文件内容)
  "WechatPayUrl": "/api/sysWechatPay/payCallBack" // 微信支付回调
}
//上传文件
"UploadOptions": {
  "Path": "upload/{yyyy}/{MM}/{dd}", // 文件上传目录
  "MaxSize": 5368709120, // 文件最大限制128M
  "MemoryBufferThreshold": 10485760, // 内存缓冲区大小,65536 64k
  "ExtensionNames": [ ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".zip", ".rar", ".7z" ],
  "EnableMd5": true, // 启用文件MDF5验证-防止重复上传
  "EnableCloudStorage": false, // 启用云存储
  //ms azure
  //"CloudStorageOptions": {
  //  "Id": "",
  //  "Key": "",
  //  "SupplierType": 2,
  //  "ContainerName": "",
  //  "Endpoint": "core.chinacloudapi.cn",
  //  "TimeOut": 60,
  //  "MaxErrorRetry": 3
  //}
  //阿里云
  "CloudStorageOptions": {
    "Id": "",
    "Key": "",
    "SupplierType": 1,
    "ContainerName": "cyclops",
    //"Endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
    "Endpoint": "oss-cn-shanghai.aliyuncs.com",
    "TimeOut": 60,
    "MaxErrorRetry": 3
  }
}
//短信
"SmsOption": {
  "ZhuTong": {
    "UserName": "",
    "Password": "",
    "Signature": "【Cyclops管理平台】"
  }
}
//直播配置
"LiveOption": {
  "AppId": "",
  "AppSecret": "",
  "Url": "",
  "AuthorizeUrl": "",
  "AuthSecret": null,
  "UserName": null,
  "Password": null,
  "Salt": null
}
//语音转换
"SpeechConfig": {
  "SpeechType": 1,
  "ClientId": "",
  "ClientSecret": ""
}
//电子邮件
"EMailOptions": {
  "EMailClientConfigs": [
    {
      //发送邮件
      "ClientType": 1,
      //服务器
      "Host": "",
      //端口
      "Port": 465,
      //是否启用SSL
      "UseSsl": true,
      //用户名
      "Username": "",
      //密码
      "Password": ""
    }
  ]
}
/**轻流配置文件**/
"QingflowOptions": {
  //轻流api
  "Domain": "https://api.qingflow.com", 
  //工作空间id
  "WorkspaceId": "",
  //工作空间密钥
  "WorkspaceSecret": "",
  //超管Token
  "SuperAdminToken": ""
}
二、初始化代码示例
public class Program
{
    public static void Main(string args)
    {
        WebApp.OnStarted += WebApp_OnStarted;
        WebApp.OnStopped += WebApp_OnStopped;
        WebApp.RunWebHost<Startup>(args);
    }
    static void WebApp_OnStarted()
    {
        Logger.Info($"{WebApp.ServiceName}应用已启动");
    }
    static void WebApp_OnStopped()
    {
        Logger.Info($"{WebApp.ServiceName}应用已停止");
    }
}
    /// <summary>
    /// Startup
    /// </summary>
    public class Startup : BaseStartup
    {
        /// <summary>
        /// Startup
        /// </summary>
        /// <param name="configuration"></param>
        public Startup(IConfiguration configuration) : base(configuration)
        {
        }
    }
三、控制器示例
继承基类即可
[Route(RouteConst.ROUTE_TEMPLATE_MOBILE)]
public class AuthController : BaseApiController
方法示例
    /// <summary>
    /// Login
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [AllowAnonymous, HttpPost, DisplayName("Login")]
    public async Task<Result> Login([Required(ErrorMessage = "请输入用户名或密码"), FromBody] UserLoginInput input)
    {
        var user = new SysUser();
        return SuccessResult(await CreateToken(user));
    }
    /// <summary>
    /// 获取验证码
    /// </summary>
    /// <returns></returns>
    [AllowAnonymous]
    [SuppressMonitor]
    [DisplayName("获取验证码"), HttpGet]
    public Result GetCaptcha()
    {
        ICaptcha captcha = ServiceProviderUtil.GetRequiredService<ICaptcha>();
        var codeId = YitIdHelper.NextId().ToString();
        var captchas = captcha.Generate(codeId, 180);
        return SuccessResult(new { Id = codeId, Img = captchas.Base64 });
    }
四、集成数据校验
/// <summary>
/// 登录信息
/// </summary>
public class UserLoginInput
{
    /// <summary>
    /// 请输入用户名
    /// </summary>
    [Required(ErrorMessage = "请输入用户名"), Exists("用户名不存在", TableName = "bus_user", ColumnName = "user_name")]
    public string UserName { get; set; }
    /// <summary>
    /// 请输入密码
    /// </summary>
    [Required(ErrorMessage = "请输入密码"), Custom<UserLoginInput>("密码不正确", "Valide")]
    public string Password { get; set; }
    /// <summary>
    /// 验证密码
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public bool Valide(object? input)
    {
        if (input == null) return false;
        if (input is string password && password == "123456")
        {
            return true;
        }
        return false;
    }
}
五、防重放攻击示例
    /// <summary>
    /// 接口安全参数校验测试
    /// </summary>
    [SafeComparisonFilter]
    public class SafeController : BaseApiController
    {
        /// <summary>
        /// Test
        /// </summary>
        /// <param name="testInfo"></param>
        /// <returns></returns>
        [HttpPost]
        public Result Test([FromBody] TestInfo testInfo)
        {
            return SuccessResult(testInfo);
        }
        /// <summary>
        /// test2
        /// </summary>
        /// <returns></returns>
        [HttpGet, AllowAnonymous, NoSafeComparisonFilter]
        public Result Test2()
        {
            return SuccessResult();
        }
    }
六、文件上传下载Excel导入导出示例
   public class FileAdminController : BaseApiController
   {
       /// <summary>
       /// 导入
       /// </summary>
       /// <returns></returns>
       [HttpPost]
       [NoLoginAuth, AllowAnonymous]
       public Result Import(IFormCollection collection)
       {
           var data = collection.SaveAsDataTable();
           return SuccessResult(data);
       }
       /// <summary>
       /// 导出
       /// </summary>
       /// <returns></returns>
       [HttpPost]
       [NoLoginAuth, AllowAnonymous]
       public IActionResult Export()
       {
           return _env.Download("export.png");
       }
       /// <summary>
       /// 导出数据文件
       /// </summary>
       /// <returns></returns>
       [HttpGet]
       [NoLoginAuth, AllowAnonymous]
       public IActionResult ExportFile([FromQuery] bool isExcel = false)
       {
           var fileName = "export.xlsx";
           if (!isExcel)
           {
               fileName = "export.csv";
           }
           var dt = new DataTable();
           //return _env.ExportFile(dt, fileName);
           return Export(dt, fileName);
       }
       /// <summary>
       /// 导出数据文件
       /// </summary>
       /// <returns></returns>
       [HttpGet]
       [NoLoginAuth, AllowAnonymous]
       public IActionResult ExportDataFile([FromQuery] bool isExcel = false)
       {
           var fileName = "export.xlsx";
           if (!isExcel)
           {
               fileName = "export.csv";
           }
           var list = new List<BusUser>
           {
               new BusUser()
               {
                   Id = 1,
                   UserName = "张三"
               }
           };
           //return _env.ExportFile(list, fileName);
           return Export(list, fileName);
       }
       /// <summary>
       /// 测试上传文件大小
       /// </summary>
       /// <returns></returns>
       [HttpPost]
       public async Task<IActionResult> UploadFile(IFormCollection form)
       {
           var fileStream = await form.SaveAsStreamsAsync();
           return fileStream.First().Value.Download("test.jpg");
       }
       /// <summary>
       /// 测试限制上传文件大小
       /// </summary>
       /// <param name="form"></param>
       /// <returns></returns>
       [HttpPost, RequestSizeLimit(2 * 1024 * 1024)]
       public async Task<IActionResult> UploadFileByLimit(IFormCollection form)
       {
           var fileStream = await form.SaveAsStreamsAsync();
           return fileStream.First().Value.Download("test.jpg");
       }
       /// <summary>
       /// 测试不限制上传文件大小
       /// </summary>
       /// <param name="form"></param>
       /// <returns></returns>
       [HttpPost, DisableRequestSizeLimit]
       public async Task<IActionResult> UploadFileByNonLimit(IFormCollection form)
       {
           var fileStream = await form.SaveAsStreamsAsync();
           return fileStream.First().Value.Download("test.jpg");
       }       
      /// <summary>
      /// 示例获取流
      /// </summary>
      /// <returns></returns>
      [HttpGet]
      public async Task<Stream> GetStream()
      {
          var ms = new MemoryStream(RandomUtil.GetBytes(1024));
          return await Task.FromResult(ms);
      }
      /// <summary>
      /// 示例获取字节数组
      /// </summary>
      /// <returns></returns>
      [HttpGet]
      public async Task<byte> GetBytes()
      {
          return await Task.FromResult(RandomUtil.GetBytes(1024));
      }
   }
七、支持非api接口内容
        /// <summary>
        /// 返回指定内容结果
        /// </summary>
        /// <param name="controller"></param>
        /// <param name="text"></param>
        /// <param name="contentType"></param>
        /// <param name="statusCode"></param>
        /// <returns></returns>
        public async Task<IActionResult> ContentAsync(string text, string contentType = "text/plain", int statusCode = 200)
        {
            var contentResult = new ContentResult()
            {
                Content = text,
                ContentType = contentType,
                StatusCode = statusCode
            };
            return await Task.FromResult(contentResult);
        }
        /// <summary>
        /// 返回空结果
        /// </summary>
        /// <param name="controller"></param>
        /// <returns></returns>
        public async Task<IActionResult> EmptyAsync()
        {
            return await Task.FromResult(new EmptyResult());
        }
        /// <summary>
        /// 返回下载结果
        /// </summary>
        /// <param name="controller"></param>
        /// <param name="fileContent">下载时的文件名称</param>
        /// <param name="fileContent">内容字节数组</param>
        /// <param name="contentType">内容mime类型</param>
        /// <returns></returns>
        public async Task<IActionResult> DownloadAsync(string fileDownloadName,
            byte fileContent,
            string contentType)
        {
            return await Task.FromResult(new FileContentResult(fileContent, contentType) { FileDownloadName = fileDownloadName });
        }
        /// <summary>
        /// 返回下载结果
        /// </summary>
        /// <param name="controller"></param>
        /// <param name="fileName">内容文件地址</param>
        /// <param name="contentType">内容mime类型</param>
        /// <returns></returns>
        public async Task<IActionResult> DownloadAsync(string fileName,
            string contentType)
        {
            return await Task.FromResult(new VirtualFileResult(fileName, contentType)
            {
                EnableRangeProcessing = true,
                FileDownloadName = PathUtil.GetFileName(fileName)
            });
        }
        /// <summary>
        /// 返回流结果
        /// </summary>
        /// <param name="controller"></param>
        /// <param name="fileDownloadName"></param>
        /// <param name="fileStream"></param>
        /// <param name="contentType"></param>
        /// <returns></returns>
        public async Task<IActionResult> DownloadAsync(string fileDownloadName,
            Stream fileStream,
            string contentType
            )
        {
            return await Task.FromResult(new FileStreamResult(fileStream, contentType)
            {
                EnableRangeProcessing = true,
                FileDownloadName = fileDownloadName
            });
        }
        /// <summary>
        /// 返回跳转结果
        /// </summary>
        /// <param name="controller"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public async Task<IActionResult> RedirectAsync(string url)
        {
            return await Task.FromResult(new RedirectResult(url));
        }
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
        
        Compatible target framework(s)
    
    
        
        Included target framework(s) (in package)
    
    Learn more about Target Frameworks and .NET Standard.
- 
                                                    net8.0- Quartz (>= 3.14.0)
- Quartz.AspNetCore (>= 3.14.0)
- SqlSugarCore (>= 5.1.4.198)
- TJC.Cyclops.Common (>= 2025.7.21.1)
- TJC.Cyclops.Redis (>= 2025.7.21.1)
- TJC.Cyclops.Web.Core (>= 2025.7.21.1)
 
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | 
|---|---|---|
| 2025.10.28.1 | 105 | 10/28/2025 | 
| 2025.10.27.1 | 122 | 10/27/2025 | 
| 2025.10.24.1 | 156 | 10/24/2025 | 
| 2025.10.22.2 | 169 | 10/22/2025 | 
| 2025.10.22.1 | 151 | 10/22/2025 | 
| 2025.10.14.1 | 159 | 10/14/2025 | 
| 2025.10.13.5 | 154 | 10/13/2025 | 
| 2025.10.13.4 | 166 | 10/13/2025 | 
| 2025.10.13.3 | 181 | 10/13/2025 | 
| 2025.10.13.2 | 158 | 10/13/2025 | 
| 2025.10.13.1 | 157 | 10/13/2025 | 
| 2025.10.11.1 | 102 | 10/11/2025 | 
| 2025.10.10.1 | 149 | 10/10/2025 | 
| 2025.9.26.2 | 159 | 9/26/2025 | 
| 2025.9.26.1 | 165 | 9/26/2025 | 
| 2025.9.25.1 | 179 | 9/25/2025 | 
| 2025.9.23.1 | 158 | 9/23/2025 | 
| 2025.9.19.1 | 284 | 9/19/2025 | 
| 2025.9.16.1 | 293 | 9/16/2025 | 
| 2025.9.15.2 | 230 | 9/15/2025 | 
| 2025.9.15.1 | 242 | 9/15/2025 | 
| 2025.9.10.2 | 149 | 9/10/2025 | 
| 2025.9.10.1 | 153 | 9/10/2025 | 
| 2025.9.9.1 | 154 | 9/9/2025 | 
| 2025.9.1.1 | 171 | 9/1/2025 | 
| 2025.8.29.1 | 188 | 8/29/2025 | 
| 2025.8.22.1 | 122 | 8/22/2025 | 
| 2025.8.21.2 | 142 | 8/21/2025 | 
| 2025.8.21.1 | 150 | 8/21/2025 | 
| 2025.8.20.1 | 156 | 8/20/2025 | 
| 2025.8.14.1 | 157 | 8/14/2025 | 
| 2025.8.13.1 | 155 | 8/13/2025 | 
| 2025.8.12.1 | 170 | 8/12/2025 | 
| 2025.8.11.3 | 148 | 8/11/2025 | 
| 2025.8.11.2 | 138 | 8/11/2025 | 
| 2025.8.11.1 | 156 | 8/11/2025 | 
| 2025.8.8.2 | 193 | 8/8/2025 | 
| 2025.8.8.1 | 202 | 8/8/2025 | 
| 2025.8.7.1 | 240 | 8/7/2025 | 
| 2025.8.6.2 | 220 | 8/6/2025 | 
| 2025.8.6.1 | 232 | 8/6/2025 | 
| 2025.8.4.1 | 171 | 8/4/2025 | 
| 2025.8.1.1 | 111 | 8/1/2025 | 
| 2025.7.31.1 | 131 | 7/31/2025 | 
| 2025.7.30.2 | 122 | 7/30/2025 | 
| 2025.7.30.1 | 120 | 7/30/2025 | 
| 2025.7.25.3 | 439 | 7/25/2025 | 
| 2025.7.25.2 | 443 | 7/25/2025 | 
| 2025.7.25.1 | 467 | 7/25/2025 | 
| 2025.7.22.2 | 539 | 7/22/2025 | 
| 2025.7.22.1 | 547 | 7/22/2025 | 
| 2025.7.21.2 | 431 | 7/21/2025 | 
| 2025.7.21.1 | 343 | 7/21/2025 | 
| 2025.7.17.1 | 160 | 7/17/2025 | 
| 2025.7.8.1 | 147 | 7/8/2025 | 
| 2025.7.7.3 | 153 | 7/7/2025 | 
| 2025.7.7.2 | 164 | 7/7/2025 | 
| 2025.7.7.1 | 146 | 7/7/2025 | 
| 2025.7.5.1 | 101 | 7/4/2025 | 
| 2025.7.4.3 | 104 | 7/4/2025 | 
| 2025.7.4.2 | 114 | 7/4/2025 | 
| 2025.7.4.1 | 118 | 7/4/2025 | 
| 2025.7.2.3 | 169 | 7/2/2025 | 
| 2025.7.2.2 | 158 | 7/2/2025 | 
| 2025.7.2.1 | 149 | 7/2/2025 | 
| 2025.7.1.2 | 169 | 7/1/2025 | 
| 2025.7.1.1 | 159 | 7/1/2025 | 
| 2025.6.25.2 | 163 | 6/25/2025 | 
| 2025.6.25.1 | 163 | 6/25/2025 | 
| 2025.6.24.4 | 162 | 6/24/2025 | 
| 2025.6.24.3 | 170 | 6/24/2025 | 
| 2025.6.24.2 | 153 | 6/24/2025 | 
| 2025.6.24.1 | 164 | 6/24/2025 | 
| 2025.6.23.2 | 177 | 6/23/2025 | 
| 2025.6.23.1 | 174 | 6/23/2025 | 
| 2025.6.20.1 | 129 | 6/20/2025 | 
| 2025.6.19.1 | 170 | 6/19/2025 | 
| 2025.6.18.1 | 161 | 6/18/2025 | 
| 2025.6.13.1 | 284 | 6/13/2025 | 
| 2025.6.11.1 | 316 | 6/11/2025 | 
| 2025.5.26.1 | 182 | 5/26/2025 | 
| 2025.5.18.1 | 176 | 5/18/2025 | 
| 2025.5.8.1 | 180 | 5/8/2025 | 
| 2025.5.7.4 | 157 | 5/7/2025 | 
| 2025.5.7.3 | 182 | 5/7/2025 | 
| 2025.5.7.2 | 180 | 5/7/2025 | 
| 2025.5.7.1 | 177 | 5/7/2025 | 
| 2025.4.28.1 | 189 | 4/28/2025 | 
| 2025.4.22.2 | 192 | 4/22/2025 | 
| 2025.4.22.1 | 216 | 4/22/2025 | 
| 2025.4.18.1 | 208 | 4/18/2025 | 
| 2025.4.16.1 | 235 | 4/16/2025 | 
| 2025.4.15.1 | 231 | 4/15/2025 | 
| 2025.4.11.2 | 174 | 4/11/2025 | 
| 2025.4.11.1 | 189 | 4/11/2025 | 
| 2025.4.8.1 | 192 | 4/8/2025 | 
| 2025.4.7.2 | 199 | 4/7/2025 | 
| 2025.4.7.1 | 209 | 4/7/2025 | 
| 2025.4.3.2 | 206 | 4/3/2025 | 
| 2025.4.3.1 | 201 | 4/3/2025 | 
| 2025.4.2.1 | 207 | 4/2/2025 | 
| 2025.4.1.1 | 194 | 4/1/2025 | 
| 2025.3.31.4 | 190 | 3/31/2025 | 
| 2025.3.31.3 | 185 | 3/31/2025 | 
| 2025.3.31.2 | 199 | 3/31/2025 | 
| 2025.3.31.1 | 197 | 3/31/2025 | 
| 2025.3.26.2 | 487 | 3/26/2025 | 
| 2025.3.26.1 | 502 | 3/26/2025 | 
| 2025.3.25.1 | 507 | 3/25/2025 | 
| 2025.3.24.1 | 368 | 3/24/2025 | 
| 2025.3.18.2 | 180 | 3/18/2025 | 
| 2025.3.18.1 | 182 | 3/18/2025 | 
| 2025.3.13.1 | 194 | 3/13/2025 | 
| 2025.3.12.1 | 212 | 3/12/2025 | 
| 2025.3.11.1 | 222 | 3/11/2025 | 
| 2025.3.10.1 | 218 | 3/10/2025 | 
| 2025.3.6.2 | 246 | 3/6/2025 | 
| 2025.3.5.1 | 257 | 3/5/2025 | 
| 2025.3.3.1 | 163 | 3/3/2025 | 
| 2025.2.28.1 | 144 | 2/28/2025 | 
| 2025.2.25.1 | 144 | 2/25/2025 | 
| 2025.2.23.1 | 140 | 2/24/2025 | 
| 2025.2.14.1 | 154 | 2/14/2025 | 
| 2025.2.7.2 | 133 | 2/7/2025 | 
| 2025.2.7.1 | 124 | 2/7/2025 | 
| 2025.2.6.1 | 154 | 2/6/2025 | 
| 2025.1.22.1 | 155 | 1/22/2025 | 
| 2025.1.21.1 | 153 | 1/21/2025 | 
| 2025.1.20.1 | 137 | 1/20/2025 | 
| 2025.1.16.1 | 138 | 1/16/2025 | 
| 2025.1.9.1 | 127 | 1/9/2025 | 
| 2025.1.8.3 | 126 | 1/8/2025 | 
| 2025.1.8.2 | 123 | 1/8/2025 | 
| 2025.1.8.1 | 144 | 1/8/2025 | 
| 2025.1.7.1 | 136 | 1/7/2025 | 
| 2025.1.3.1 | 170 | 1/3/2025 | 
| 2025.1.2.1 | 147 | 1/2/2025 | 
| 2024.12.31.2 | 122 | 12/31/2024 | 
| 2024.12.31.1 | 144 | 12/31/2024 | 
| 2024.12.30.3 | 135 | 12/30/2024 | 
| 2024.12.30.2 | 143 | 12/30/2024 | 
| 2024.12.30.1 | 145 | 12/30/2024 | 
| 2024.12.27.1 | 130 | 12/27/2024 | 
| 2024.12.26.1 | 142 | 12/26/2024 | 
| 2024.12.25.2 | 139 | 12/25/2024 | 
| 2024.12.25.1 | 140 | 12/25/2024 | 
| 2024.12.24.1 | 143 | 12/24/2024 | 
| 2024.12.19.2 | 143 | 12/19/2024 | 
| 2024.12.19.1 | 141 | 12/19/2024 | 
| 2024.12.18.1 | 150 | 12/18/2024 | 
| 2024.12.17.2 | 149 | 12/17/2024 | 
| 2024.12.17.1 | 150 | 12/17/2024 | 
| 2024.12.16.1 | 162 | 12/16/2024 | 
| 2024.12.12.1 | 141 | 12/13/2024 | 
| 2024.12.11.2 | 136 | 12/11/2024 | 
| 2024.12.10.3 | 151 | 12/10/2024 | 
| 2024.12.10.2 | 136 | 12/10/2024 | 
| 2024.12.10.1 | 154 | 12/10/2024 | 
| 2024.12.9.1 | 149 | 12/9/2024 | 
| 2024.12.6.1 | 160 | 12/6/2024 | 
| 2024.12.5.1 | 145 | 12/5/2024 | 
| 2024.12.4.1 | 146 | 12/4/2024 | 
| 2024.12.3.2 | 149 | 12/3/2024 | 
| 2024.12.3.1 | 152 | 12/3/2024 | 
| 2024.12.2.2 | 147 | 12/2/2024 | 
| 2024.12.2.1 | 152 | 12/2/2024 | 
| 2024.11.29.2 | 155 | 11/29/2024 | 
| 2024.11.29.1 | 143 | 11/29/2024 | 
| 2024.11.28.1 | 144 | 11/28/2024 | 
| 2024.11.27.4 | 148 | 11/27/2024 | 
| 2024.11.27.3 | 141 | 11/27/2024 | 
| 2024.11.27.2 | 150 | 11/27/2024 | 
| 2024.11.27.1 | 127 | 11/27/2024 | 
| 2024.11.26.3 | 161 | 11/26/2024 | 
| 2024.11.26.2 | 148 | 11/26/2024 | 
| 2024.11.26.1 | 155 | 11/26/2024 | 
| 2024.11.25.5 | 141 | 11/25/2024 | 
| 2024.11.25.4 | 146 | 11/25/2024 | 
| 2024.11.25.3 | 131 | 11/25/2024 | 
| 2024.11.25.2 | 152 | 11/25/2024 | 
| 2024.11.25.1 | 132 | 11/25/2024 | 
| 2024.11.23.2 | 137 | 11/23/2024 | 
| 2024.11.23.1 | 155 | 11/23/2024 | 
| 2024.11.22.1 | 143 | 11/22/2024 | 
| 2024.11.21.1 | 147 | 11/21/2024 | 
| 2024.11.20.3 | 152 | 11/20/2024 | 
| 2024.11.20.2 | 154 | 11/20/2024 | 
| 2024.11.20.1 | 140 | 11/20/2024 | 
| 2024.11.19.1 | 147 | 11/19/2024 | 
| 2024.11.18.4 | 143 | 11/18/2024 | 
| 2024.11.18.3 | 142 | 11/18/2024 | 
| 2024.11.18.2 | 154 | 11/18/2024 | 
| 2024.11.18.1 | 152 | 11/18/2024 | 
| 2024.11.14.2 | 154 | 11/14/2024 | 
| 2024.11.14.1 | 148 | 11/14/2024 | 
| 2024.11.13.2 | 140 | 11/13/2024 | 
| 2024.11.13.1 | 157 | 11/13/2024 | 
| 2024.11.12.2 | 161 | 11/12/2024 | 
| 2024.11.12.1 | 165 | 11/12/2024 | 
| 2024.11.11.1 | 171 | 11/11/2024 | 
| 2024.11.8.1 | 148 | 11/8/2024 | 
| 2024.11.6.1 | 146 | 11/6/2024 | 
| 2024.11.5.1 | 135 | 11/5/2024 | 
| 2024.10.29.2 | 154 | 10/29/2024 | 
| 2024.10.29.1 | 156 | 10/29/2024 | 
| 2024.10.28.1 | 136 | 10/28/2024 | 
| 2024.10.25.1 | 144 | 10/25/2024 | 
| 2024.10.24.1 | 137 | 10/24/2024 | 
| 2024.10.21.1 | 150 | 10/21/2024 | 
| 2024.10.18.2 | 175 | 10/18/2024 | 
| 2024.10.18.1 | 185 | 10/18/2024 | 
| 2024.10.16.1 | 137 | 10/16/2024 | 
| 2024.10.12.1 | 149 | 10/12/2024 | 
| 2024.10.11.1 | 146 | 10/11/2024 | 
| 2024.10.10.1 | 155 | 10/10/2024 | 
| 2024.10.9.1 | 160 | 10/9/2024 | 
| 2024.10.8.1 | 147 | 10/8/2024 | 
| 2024.9.26.1 | 171 | 9/26/2024 | 
| 2024.9.25.1 | 151 | 9/25/2024 | 
| 2024.9.23.4 | 166 | 9/23/2024 | 
| 2024.9.23.3 | 150 | 9/23/2024 | 
| 2024.9.23.2 | 158 | 9/23/2024 | 
| 2024.9.23.1 | 154 | 9/23/2024 | 
| 2024.9.19.1 | 150 | 9/19/2024 | 
| 2024.9.14.1 | 158 | 9/14/2024 | 
| 2024.9.10.3 | 169 | 9/10/2024 | 
| 2024.9.10.2 | 169 | 9/10/2024 | 
| 2024.9.10.1 | 160 | 9/10/2024 | 
| 2024.9.5.1 | 170 | 9/5/2024 | 
| 2024.8.22.1 | 178 | 8/22/2024 | 
| 2024.8.19.1 | 170 | 8/19/2024 | 
| 2024.8.15.1 | 184 | 8/15/2024 | 
| 2024.8.14.1 | 179 | 8/14/2024 | 
| 2024.8.13.2 | 173 | 8/13/2024 | 
| 2024.8.13.1 | 178 | 8/13/2024 | 
| 2024.8.12.2 | 161 | 8/12/2024 | 
| 2024.8.12.1 | 159 | 8/12/2024 | 
| 2024.8.9.2 | 180 | 8/9/2024 | 
| 2024.8.9.1 | 183 | 8/9/2024 | 
| 2024.8.7.1 | 162 | 8/7/2024 | 
| 2024.8.6.2 | 156 | 8/6/2024 | 
| 2024.8.6.1 | 165 | 8/6/2024 | 
| 2024.8.5.5 | 137 | 8/5/2024 | 
| 2024.8.5.4 | 146 | 8/5/2024 | 
| 2024.8.5.3 | 145 | 8/5/2024 | 
| 2024.8.5.2 | 146 | 8/5/2024 | 
| 2024.8.5.1 | 152 | 8/5/2024 | 
| 2024.8.2.4 | 145 | 8/2/2024 | 
| 2024.8.2.3 | 150 | 8/2/2024 | 
| 2024.8.2.2 | 144 | 8/2/2024 | 
| 2024.8.2.1 | 144 | 8/2/2024 | 
| 2024.8.1.1 | 157 | 8/1/2024 | 
| 2024.7.31.2 | 141 | 7/31/2024 | 
| 2024.7.31.1 | 115 | 7/31/2024 | 
| 2024.7.25.1 | 144 | 7/25/2024 | 
| 2024.7.17.1 | 151 | 7/17/2024 | 
| 2024.7.12.2 | 141 | 7/12/2024 | 
| 2024.7.12.1 | 151 | 7/12/2024 | 
| 2024.7.11.2 | 154 | 7/11/2024 | 
| 2024.7.11.1 | 162 | 7/11/2024 | 
| 2024.7.10.4 | 162 | 7/10/2024 | 
| 2024.7.10.3 | 155 | 7/10/2024 | 
| 2024.7.10.2 | 140 | 7/10/2024 | 
| 2024.7.10.1 | 165 | 7/10/2024 | 
| 2024.5.29.1 | 181 | 5/29/2024 | 
| 2024.5.28.1 | 175 | 5/28/2024 | 
| 2024.5.15.1 | 182 | 5/15/2024 | 
| 2024.5.13.1 | 187 | 5/13/2024 | 
| 2024.5.11.1 | 177 | 5/11/2024 | 
| 2024.3.15.1 | 189 | 3/15/2024 | 
| 2024.1.9.1 | 203 | 1/9/2024 | 
| 2024.1.4.1 | 190 | 1/4/2024 | 
| 2024.1.2.3 | 205 | 1/2/2024 | 
| 2024.1.2.2 | 200 | 1/2/2024 | 
| 2024.1.2.1 | 201 | 1/2/2024 | 
| 2023.12.29.3 | 192 | 12/29/2023 | 
| 2023.12.29.2 | 171 | 12/29/2023 | 
| 2023.12.29.1 | 170 | 12/29/2023 | 
| 2023.12.28.4 | 190 | 12/28/2023 | 
| 2023.12.28.3 | 191 | 12/28/2023 | 
| 2023.12.28.2 | 176 | 12/28/2023 | 
| 2023.12.28.1 | 193 | 12/28/2023 | 
| 2023.12.27.2 | 192 | 12/27/2023 | 
| 2023.12.27.1 | 182 | 12/27/2023 | 
| 2023.12.26.1 | 197 | 12/26/2023 | 
| 2023.12.25.1 | 184 | 12/25/2023 | 
| 2023.12.22.4 | 185 | 12/22/2023 | 
| 2023.12.22.3 | 185 | 12/22/2023 | 
| 2023.12.22.2 | 181 | 12/22/2023 | 
| 2023.12.22.1 | 173 | 12/22/2023 | 
| 2023.12.21.2 | 179 | 12/21/2023 | 
| 2023.12.21.1 | 182 | 12/21/2023 | 
| 2023.12.20.2 | 153 | 12/20/2023 | 
| 2023.12.20.1 | 187 | 12/20/2023 | 
企服版任务核心