Github开源项目之:C#

文章目录

导航

内容来源于网络

前言

分享Github开源项目,在玩的过程中学习,2023年每天的目标就是研究几个项目,寻找点乐趣。

开源项目

001.WeiXinMPSDK

微信公众平台 SDK,支持 .NET Framework 及 .NET Core。已支持微信公众号、企业号、开放平台、微信支付、JSSDK。此项目开源、免费、持续维护。

002.Cowboy

一个基于 .NET/C# 实现的开源 WebSocket 网络库。详细介绍

003.MongoCola

MongoCola 是一个开源的 MongoDB 管理工具。持续开发、维护已经有五年了,开发历程,效果图如下:

004.NiceHashMiner

一款可以自动帮你挖比特币的免费 App。中文官网地址,经典版截图如下:

005.Newtonsoft.Json

Newtonsoft.Json 是一款 .NET 平台中开源的 JSON 序列化和反序列化类库,示例代码:

JSchema schema = JSchema.Parse(@"{
  'type': 'object',
  'properties': {
    'name': {'type':'string'},
    'roles': {'type': 'array'}
  }
}");

JObject user = JObject.Parse(@"{
  'name': 'Arnie Admin',
  'roles': ['Developer', 'Administrator']
}");

bool valid = user.IsValid(schema);
// true
006.Wox

Windows 上的 Alfred、Launchy,使用演示:

007.VerificationCode

滑动验证码 Demo。

JSON格式示例:

{
  "errcode": 0,
  "y": 189,
  "array": "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19",
  "imgx": 300,
  "imgy": 300,
  "small": "data:image/jpg;base64,/...",
  "normal":"data:image/jpg;base64,/..."
}

使用示例:

$("#__Verification").slide({
    imgspec: "200*100",
    successCallBack: function () {
        console.log("success");
        alert('你已通过验证!');
    }
});

008.WeixinSDK

微信 C# 版 SDK,虽然现在已经有很多优秀的 SDK,但是本项目的更多的是交流、学习。

每个类均有完整的代码注释、对应的单元测试、代码易于理解、接口抽象易于扩展。

代码实例如下:

using Wlitsoft.Framework.WeixinSDK.Core;
using Wlitsoft.Framework.WeixinSDK.Message.Request.Event;
using Wlitsoft.Framework.WeixinSDK.Message.Response;

namespace WeixinSDK.Test.Fake
{
    /// <summary>
    /// 订阅事件消息 Key_001 请求处理。
    /// </summary>
    public class RequestSubscribeEventMessageKey_001ProcessFake : WeixinMessageProcessBase
    {
        #region WeixinMessageProcessBase 成员

        /// <summary>
        /// 执行处理。
        /// </summary>
        public override void Process()
        {
            RequestSubscribeEventMessage requestMessage = base.GetRequestMessage<RequestSubscribeEventMessage>();

            ResponseTextMessage responseMessage = new ResponseTextMessage()
            {
                Content = requestMessage.EventKey
            };

            base.ResponseMessage = responseMessage;
        }

        #endregion
    }
}
009.apple-juice-actionscript

NET2.0 实现的 AS3(第三代 Flash 脚本)解释器,可用于嵌入 unity 做热更。一个完整的脚本语言解释执行系统,从语法树分析开始一直到实际执行

010.MaterialDesignInXamlToolkit

谷歌 Material Design 设计风格控件库

011.csharplang

C# 语言设计官方项目,在这里你可以直接参与讨论。同时还有:

  • 语言特色提议
  • C# 语言设计会议记要
  • 完整的 C# 6 语言规范(草案)
  • 语言版本历史摘要
012.choco

类似 yum、apt-get、brew 的 Windows 包、软件管理、自动安装工具

013.QuickLook

它允许 Windows 用户只需按空格键即可以快速地查看文件内容(类 macOS 的 Quick Look)

014.IdentityServer4.Admin

免费开源的 IdentityServer4 与 Asp.Net Core Identity 管理器。IdentityServer4 官方的管理器是收费的,该项目很好的替代了官方管理器,可以方便的管理使用 IdentityServer4 所搭建的认证服务器

015.cms

开源、免费、企业级内容管理平台。基于该工具可以快速、方便地搭建搭建一个性能优异、颇具规模、易于维护的网站平台

016.Rosin

一个 Fiddler 插件,用于协助开发者进行移动端页面开发、调试

017.RemoteDesktopManage

基于 MSTSC 连接 Windows 远程桌面,并对其进行封装实现管理多个远程桌面配置的小工具。更加方便地管理多个远程桌面,实现同时远程、互相切换。相当于把多个 MSTSC 集合在一个软件里,并进行分组打标试用

018.feel

一个专注于简单的开源跨平台编程语言。这门语言的设计目标是改进阅读与编写效率,降低语法负担。让使用者能够把真正的注意力放在解决问题上,只需极少的代码就能优雅地表达逻辑。

中文手册

019.Common.Utility

项目作者日常工作总结和网上收集、整理的 C# 各式各样的功能类库。类与类之间没有联系,可以单独引用至项目。代码中包含注释,便于使用和学习

020.FightLandlord

该项目采用 .NETCore 跨平台技术,实现斗地主服务端。已实现功能:洗牌、发牌、抢地主、斗地主、提示出牌、游戏结束等。

021.BenchmarkDotNet

功能强大的用于基准测试 .NET 库

示例代码:

[SimpleJob(RuntimeMoniker.Net472, baseline: true)]
[SimpleJob(RuntimeMoniker.NetCoreApp30)]
[SimpleJob(RuntimeMoniker.NativeAot70)]
[SimpleJob(RuntimeMoniker.Mono)]
[RPlotExporter]
public class Md5VsSha256
{
    private SHA256 sha256 = SHA256.Create();
    private MD5 md5 = MD5.Create();
    private byte[] data;

    [Params(1000, 10000)]
    public int N;

    [GlobalSetup]
    public void Setup()
    {
        data = new byte[N];
        new Random(42).NextBytes(data);
    }

    [Benchmark]
    public byte[] Sha256() => sha256.ComputeHash(data);

    [Benchmark]
    public byte[] Md5() => md5.ComputeHash(data);
}
022.csredis

Redis.io 官方推荐的 C# 语言 redis 客户端库,支持 redis 2.8-5.0 版本的所有命令,且包含哨兵、集群等功能。

该项目从 2016 年开始持续迭代更新,实现了低门槛、高性能和分区等高级玩法。该项目作者:2881099,在 GitHub 上开源了很多有趣、实用的 C# 项目。欢迎大家关注他,同时参与到他的项目中,为开源社区贡献自己的一份力量。

示例代码:

//Native subscribe
RedisHelper.Subscribe(
  ("chan1", msg => Console.WriteLine(msg.Body)),
  ("chan2", msg => Console.WriteLine(msg.Body)));

RedisHelper.PSubscribe(new[] { "test*", "*test001", "test*002" }, msg => {
  Console.WriteLine($"PSUB   {msg.MessageId}:{msg.Body}    {msg.Pattern}: chan:{msg.Channel}");
});

//模式订阅已经解决的难题:
//1、分区的节点匹配规则,导致通配符最大可能匹配全部节点,所以全部节点都要订阅
//2、本组 "test*", "*test001", "test*002" 订阅全部节点时,需要解决同一条消息不可执行多次

RedisHelper.Publish("chan1", "123123123");
023.Blog.Core

基于 ASP.NET Core 和 Vue 从零开始搭建前后端分离项目教程+实战项目。该项目从 .NET Core 基础讲起,内容完整、系统,对初学者和有一定基础的小伙伴都有借鉴和学习的价值

024.Terminal.Gui

支持 Windows 和 Linux/Unix 的 .NET 终端 UI 工具库。方便实现终端 GUI 工具,并且可以实现终端中用鼠标啦

示例代码:

// A simple Terminal.Gui example in C# - using C# 9.0 Top-level statements

using Terminal.Gui;

Application.Run<ExampleWindow> ();

System.Console.WriteLine ($"Username: {((ExampleWindow)Application.Top).usernameText.Text}");

// Before the application exits, reset Terminal.Gui for clean shutdown
Application.Shutdown ();

// Defines a top-level window with border and title
public class ExampleWindow : Window {
    public TextField usernameText;

    public ExampleWindow ()
    {
        Title = "Example App (Ctrl+Q to quit)";

        // Create input components and labels
        var usernameLabel = new Label () { 
            Text = "Username:" 
        };

        usernameText = new TextField ("") {
            // Position text field adjacent to the label
            X = Pos.Right (usernameLabel) + 1,

            // Fill remaining horizontal space
            Width = Dim.Fill (),
        };

        var passwordLabel = new Label () {
            Text = "Password:",
            X = Pos.Left (usernameLabel),
            Y = Pos.Bottom (usernameLabel) + 1
        };

        var passwordText = new TextField ("") {
            Secret = true,
            // align with the text box above
            X = Pos.Left (usernameText),
            Y = Pos.Top (passwordLabel),
            Width = Dim.Fill (),
        };

        // Create login button
        var btnLogin = new Button () {
            Text = "Login",
            Y = Pos.Bottom(passwordLabel) + 1,
            // center the login button horizontally
            X = Pos.Center (),
            IsDefault = true,
        };

        // When login button is clicked display a message popup
        btnLogin.Clicked += () => {
            if (usernameText.Text == "admin" && passwordText.Text == "password") {
                MessageBox.Query ("Logging In", "Login Successful", "Ok");
                Application.RequestStop ();
            } else {
                MessageBox.ErrorQuery ("Logging In", "Incorrect username or password", "Ok");
            }
        };

        // Add the views to the Window
        Add (usernameLabel, usernameText, passwordLabel, passwordText, btnLogin);
    }
}
025.FreeSql

一个功能强大的 C# 对象关系映射程序(ORM),支持 .NETCore 2.1+、.NETFramework 4.5+ 开发模式下,开箱即用,可繁可简的使用方式。支持 CodeFirst 迁移、丰富的表达式函数、支持多种数据库、大量采用 ExpressionTree 技术提升性能等功能。

示例代码:

static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
  .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=document.db")
  .UseAutoSyncStructure(true) //automatically synchronize the entity structure to the database
  .Build(); //be sure to define as singleton mode

class Song {
  [Column(IsIdentity = true)]
  public int Id { get; set; }
  public string Title { get; set; }
  public string Url { get; set; }
  public DateTime CreateTime { get; set; }

  public ICollection<Tag> Tags { get; set; }
}
class Song_tag {
  public int Song_id { get; set; }
  public Song Song { get; set; }

  public int Tag_id { get; set; }
  public Tag Tag { get; set; }
}
class Tag {
  [Column(IsIdentity = true)]
  public int Id { get; set; }
  public string Name { get; set; }

  public int? Parent_id { get; set; }
  public Tag Parent { get; set; }

  public ICollection<Song> Songs { get; set; }
  public ICollection<Tag> Tags { get; set; }
}
026.Windows-Auto-Night-Mode

设置定时自动切换 Windows 10 深色和浅色主题的工具

027.HandyControl

一套 WPF 控件库。它几乎重写了所有原生样式,同时包含 70 余款自定义控件。支持跨平台、国际化,适用于 MVVM 架构开发,扁平化设计、支持动态更换主题和背景色。丰富的自定义控件解决了 View 设计的痛点,让程序员更加专注于业务逻辑的开发

028.netch

A simple proxy client

029.ScheduleMasterCore

一款基于 .NET Core 开发的分布式任务调度系统。支持丰富的调度类型、灵活可控的系统参数、简易的 UI 操作、支持多节点高可用、业务 API 集成等等特性。同时支持多样化的部署方式,容易上手

030.ToolGood.Words

一款高性能非法词、敏感词检测库。还支持繁体简体互换、获取拼音首字母、获取拼音字母、拼音模糊搜索等功能

非法词(敏感词)检测(字符串搜索):

string s = "中国|国人|zg人";
string test = "我是中国人";

StringSearch iwords = new StringSearch();
iwords.SetKeywords(s.Split('|'));

var b = iwords.ContainsAny(test);
Assert.AreEqual(true, b);

var f = iwords.FindFirst(test);
Assert.AreEqual("中国", f);

var all = iwords.FindAll(test);
Assert.AreEqual("中国", all[0]);
Assert.AreEqual("国人", all[1]);
Assert.AreEqual(2, all.Count);

var str = iwords.Replace(test, '*');
Assert.AreEqual("我是***", str);

非法词(敏感词)检测(字符串搜索)(支持通配符):

string s = ".[中美]国|国人|zg人";
string test = "我是中国人";

WordsMatch wordsSearch = new WordsMatch();
wordsSearch.SetKeywords(s.Split('|'));

var b = wordsSearch.ContainsAny(test);
Assert.AreEqual(true, b);

var f = wordsSearch.FindFirst(test);
Assert.AreEqual("是中国", f.Keyword);

var alls = wordsSearch.FindAll(test);
Assert.AreEqual("是中国", alls[0].Keyword);
Assert.AreEqual(".[中美]国", alls[0].MatchKeyword);
Assert.AreEqual(1, alls[0].Start);
Assert.AreEqual(3, alls[0].End);
Assert.AreEqual(0, alls[0].Index);//返回索引Index,默认从0开始
Assert.AreEqual("国人", alls[1].Keyword);
Assert.AreEqual(2, alls.Count);

var t = wordsSearch.Replace(test, '*');
Assert.AreEqual("我****", t);
031.perfview

微软开源的性能分析工具。配套的教程视频

032.dotnet-docker

.NET Core 和 Tools 的 Docker 镜像

033.machinelearning

微软开源的 C# 机器学习框架。支持的机器学习类任务:分类、回归、聚类等,教程和视频

示例代码:

var dataPath = "sentiment.csv";
var mlContext = new MLContext();
var loader = mlContext.Data.CreateTextLoader(new[]
    {
        new TextLoader.Column("SentimentText", DataKind.String, 1),
        new TextLoader.Column("Label", DataKind.Boolean, 0),
    },
    hasHeader: true,
    separatorChar: ',');
var data = loader.Load(dataPath);
var learningPipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText")
        .Append(mlContext.BinaryClassification.Trainers.FastTree());
var model = learningPipeline.Fit(data);
034.excel2json

C# 写的把 Excel 表转换成 json 的工具

035.ModernWpf

WPF 应用程序的现代风格控件

036.Notepads

一款基于 C# 开发的 UWP 文本编辑器。该记事本应用是由一位国人开发,采用了 Fluent Design。轻便、美观,打开速度飞快,支持 Markdown 预览、文件更改前后对比和多标签页。它没有 VS Code 或是 Sublime 那么强,但是完全可以代替 Windows 系统自带的笔记本应用

037.KSFramework

一个整合 KEngine、SLua/XLua 的 Unity 5 Asset Bundle 游戏开发框架。它为程序员、美术、策划、运营提供辅助工具集,很多大型游戏都在用的项目,快来学起来吧

038.NETworkManager

管理和解决网络问题的工具。它集成了 IP 和端口扫描、WiFi 分析器、跟踪路由、DNS 查询等工具

039.wavefunctioncollapse

基于波函数坍缩 (WFC) 算法,实现的无限城市示例。城市里有房子、楼梯、树木、连接房屋的通道,你可以在城市中自由移动、跳跃、飞行,但不论你怎么移动都找不到尽头,因为这座城市会无限延伸

040.jynew

采用 Unity 重制的《金庸群侠传》3D 版

041.EverythingToolbar

把搜索和启动应用等功能整合到 Windows taskbar 的工具。效果如下图:

042..NET-Backend-Developer-Roadmap

.NET 后端学习路线图

043.LiveCharts2

简单、灵活、强大的 .Net 图表库。支持 WPF、WinForms、WinUI、UWP 等

044.PDFPatcher

多功能的 PDF 工具箱,可用于修改 PDF 文件信息。支持:

  • 修改、合并 PDF 文档
  • 自动生成书签
  • 书签编辑器
  • 高速无损地导出文件中的图片
  • 等等

045.PowerRemoteDesktop

仅用 PowerShell 实现的远程桌面工具。它易于安装和使用、功能齐全,未依赖现有的协议和工具

046.tilt-brush

Google 开源的 VR 绘图工具。用它可以在虚拟三维空间中创作各种作品,支持主流的 VR 设备

047.Files

一个全新的文件管理器。采用 Fluent Design 和 Windows 平台最新的 API 实现,简约但不简单

048.ravendb

一款快速、可靠的开源 NoSQL 数据库

049.nopCommerce

免费开源的 ASP.NET 电子商城平台。该项目始于 2008 年,由专业团队开发和维护,大而全的商城项目。支持 Windows、Linux、macOS 平台,还有支持开箱即用的 Docker 部署方式

050.osu

支持多平台的同人节奏免费开源游戏。游戏中玩家随着音乐的节奏,点击界面上圈圈、随着轨迹拖拽和旋转。从最初(07 年)仅支持 Windows 平台,到目前已经扩展到支持 Linux、macOS、iOS、Android 等平台,并且还在持续维护和开发,快下载下来玩玩吧!

051.Ryujinx

用 C# 写的任天堂 Switch 游戏机模拟器。该项目还处于实验阶段,稳定性欠佳同时机器配置要求 8G 以上的内存,有探险精神的小伙伴可以试试

052.ToastFish

利用 Windows 通知栏背单词的软件。能够选择单词集合,并在背完后进行测验

053.XboxDownload

Xbox 下载助手。支持 Xbox 游戏加速下载、比价等功能

054.EarTrumpet

一款 Windows 系统上的音量控制小工具

055.maui

微软官方开源的 .NET 跨平台 UI 框架。这将意味着同一套代码和原生 UI 可以跑在几乎所有的设备上

056.BBDown

命令行哔哩哔哩视频下载工具

命令参数:

Description:
  BBDown是一个免费且便捷高效的哔哩哔哩下载/解析软件.

Usage:
  BBDown <url> [command] [options]

Arguments:
  <url>  视频地址 或 av|bv|BV|ep|ss

Options:
  -tv, --use-tv-api                              使用TV端解析模式
  -app, --use-app-api                            使用APP端解析模式
  -intl, --use-intl-api                          使用国际版解析模式
  --use-mp4box                                   使用MP4Box来混流
  --encoding-priority <encoding-priority>        视频编码的选择优先级, 用逗号分割 例: "hevc,av1,avc"
  --dfn-priority <dfn-priority>                  画质优先级,用逗号分隔 例: "8K 超高清, 1080P 高码率, HDR 真彩, 杜比视界"
  -info, --only-show-info                        仅解析而不进行下载
  --show-all                                     展示所有分P标题
  --use-aria2c                                   调用aria2c进行下载(你需要自行准备好二进制可执行文件)
  -ia, --interactive                             交互式选择清晰度
  -hs, --hide-streams                            不要显示所有可用音视频流
  -mt, --multi-thread                            使用多线程下载(默认开启)
  --video-only                                   仅下载视频
  --audio-only                                   仅下载音频
  --sub-only                                     仅下载字幕
  --debug                                        输出调试日志
  --skip-mux                                     跳过混流步骤
  --skip-subtitle                                跳过字幕下载
  --skip-cover                                   跳过封面下载
  --force-http                                   下载音视频时强制使用HTTP协议替换HTTPS(默认开启)
  -dd, --download-danmaku                        下载弹幕
  --skip-ai                                      跳过AI字幕下载
  --bandwith-ascending                           比特率升序(最小体积优先)
  -F, --file-pattern <file-pattern>              使用内置变量自定义单P存储文件名:

                                                 <videoTitle>: 视频主标题
                                                 <pageNumber>: 视频分P序号
                                                 <pageNumberWithZero>: 视频分P序号(前缀补零)
                                                 <pageTitle>: 视频分P标题
                                                 <aid>: 视频aid
                                                 <cid>: 视频cid
                                                 <dfn>: 视频清晰度
                                                 <res>: 视频分辨率
                                                 <fps>: 视频帧率
                                                 <videoCodecs>: 视频编码
                                                 <videoBandwidth>: 视频码率
                                                 <audioCodecs>: 音频编码
                                                 <audioBandwidth>: 音频码率
                                                 <ownerName>: 上传者名称
                                                 <ownerMid>: 上传者mid

                                                 默认为: <videoTitle>
  -M, --multi-file-pattern <multi-file-pattern>  使用内置变量自定义多P存储文件名:

                                                 默认为: <videoTitle>/[P<pageNumberWithZero>]<pageTitle>
  -p, --select-page <select-page>                选择指定分p或分p范围: (-p 8 或 -p 1,2 或 -p 3-5 或 -p ALL 或 -p LAST)
  --language <language>                          设置混流的音频语言(代码), 如chi, jpn等
  -c, --cookie <cookie>                          设置字符串cookie用以下载网页接口的会员内容
  -token, --access-token <access-token>          设置access_token用以下载TV/APP接口的会员内容
  --aria2c-args <aria2c-args>                    调用aria2c的附加参数(默认参数包含"-x16 -s16 -j16 -k 5M", 使用时注意字符串转义)
  --work-dir <work-dir>                          设置程序的工作目录
  --ffmpeg-path <ffmpeg-path>                    设置ffmpeg的路径
  --mp4box-path <mp4box-path>                    设置mp4box的路径
  --aria2c-path <aria2c-path>                    设置aria2c的路径
  --delay-per-page <delay-per-page>              设置下载合集分P之间的下载间隔时间(单位: 秒, 默认无间隔)
  --host <host>                                  指定BiliPlus host(解析服务器能够获取你账号的大部分权限!)
  --ep-host <ep-host>                            指定BiliPlus EP host
  --area <area>                                  指定BiliPlus area 例: hk(使用BiliPlus需要access_token, 不需要cookie)
  --config-file <config-file>                    读取指定的BBDown本地配置文件(默认为: BBDown.config)
  --version                                      Show version information
  -?, -h, --help                                 Show help and usage information

Commands:
  login    通过APP扫描二维码以登录您的WEB账号
  logintv  通过APP扫描二维码以登录您的TV账号
057.SteamTools

集合多种 Steam 客户端工具的工具箱。该工具支持 Window、Linux、macOS、Android 操作系统,包括游戏库存管理、解锁成就、史低价格、出售库存物品等功能,还有丰富的插件等待你发掘

058.xLua

为 C#、Unity、.Net 等环境增添 Lua 脚本编程的能力,使得 Lua 代码方便地与 C# 相互调用

XLua.LuaEnv luaenv = new XLua.LuaEnv();
luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
luaenv.Dispose();
059.AduSkin

一款简约漂亮的 WPF UI 库

060.ShareX

免费的 Windows 截屏录制工具。功能强大支持全屏截图、滚动截图、检测窗口截图、GIF 录制等,截图后还支持在图片上增加文字、水印、特效、马赛克等,最后可直接上传图床得到链接,丝滑地完成整个截图流程

061.ContextMenuManager

一个纯粹的 Windows 右键菜单管理程序。功能:

  • 启用或禁用文件、文件夹、新建、发送到、打开方式等右键菜单项目
  • 右键菜单项目进行修改名称、修改图标、导航注册表位置、永久删除等操作
  • 右键菜单自定义添加项目,自定义菜单命令

062.RevokeMsgPatcher

适用于 Windows 系统下电脑版微信、QQ 的防撤回工具

063.lively

Windows 动态桌面壁纸工具。支持 Windows 用户设置多种动画文件为桌面壁纸的工具,不仅安装简单效果炫酷,而且完全免费。

064.TradingSystem

开源的交易管理系统。包含了服务器端、PC 客户端、手机客户端的源码,支持中文界面、交易管理、打印小票、会员管理、统计报表等功能,适用于餐厅、超市、酒店等领域。使用和二次开发前请认真阅读开源协议

065.Bili.Uwp

非官方的 B 站桌面应用。基于 UWP 框架开发的哔哩哔哩 Windows 客户端,简单易用、界面清爽,适用于 Windows 10/11 桌面系统和 Xbox。

066.Monitorian

轻松调节多个显示器亮度的 Windows 桌面工具。操作界面支持中文,使用时显示器需要开启 DDC/CI

067.PluginCore

适用于 ASP.NET Core 的轻量级插件框架。开箱即用自带插件管理 Web 界面

using PluginCore.AspNetCore.Extensions;

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    // 1. 添加 PluginCore
    services.AddPluginCore();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    // 2. 使用 PluginCore
    app.UsePluginCore();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

068.TowerDefense-GameFramework-Demo

开源的塔防游戏示例。此项目主要用来上手和学习基于 Unity 引擎的游戏框架 GameFramework,感兴趣的同学可以把玩一下。游戏共有五个关卡,玩家通过击杀敌人和建造能量塔获取资源,消耗能量建造防御塔阻止敌人攻击基地

069.imewlconverter

一款开源免费的输入法词库转换程序。输入法会根据用户的输入和选词频率,形成一套符合用户输入习惯的词库,但这个词库无法直接转换到其它输入法,如果你换了输入法就需要重新习惯、养成新的词库。该项目支持 20 多种输入法的用户词库相互导入、导出以及合并词库,能够将你的输入习惯带到全新的输入法。

070.jellyfin

优秀的本地媒体库管理工具。这是一个完全免费、支持中文、安装简单、跨平台、功能强大的媒体库管理系统。它能把原本躺在文件夹里的视频文件,变成包含封面、描述、评分、演员表等信息的“影碟”,让视频整整齐齐、赏心悦目,还支持视频续播、订阅更新、多端可看,让你可以远离广告优雅地追剧。

071.PRemoteM

爽快利落的 Windows 平台远程桌面管理软件。该项目致力于提供优秀的远程桌面管理体验,通过启动器可以快速地连接到远程服务器,目前已支持 RDP、SSH、SFTP、FTP 等多种远程连接方式。

072.CrazyCar

一款用 Unity 制作的联机赛车游戏。这是一套完整的网络联机游戏解决方案,项目包含游戏端、服务器端、网络传输和管理后台。游戏支持计时赛、多人比赛、个人成就、资源热更等特性,可以运行在 iOS/Android/Windows 设备上。

073.Masuit.Tools

C# 开发工具箱。该库包含了 C# 日常开发常用的操作类,比如字符串处理、进制转换、日期处理、加密/解密、文件压缩、图像裁剪、断点续传、分布式 ID 等。

.NET Framework使用:

using Masuit.Tools.Mvc;
using Masuit.Tools.Mvc.ResumeFileResult;
private readonly MimeMapper mimeMapper=new MimeMapper(); // 推荐使用依赖注入

public ActionResult ResumeFileResult()
{
    var path = Server.MapPath("~/Content/test.mp4");
    return new ResumeFileResult(path, mimeMapper.GetMimeFromPath(path), Request);
}

public ActionResult ResumeFile()
{
    return this.ResumeFile("~/Content/test.mp4", mimeMapper.GetMimeFromPath(path), "test.mp4");
}

public ActionResult ResumePhysicalFile()
{
    return this.ResumePhysicalFile(@"D:/test.mp4", mimeMapper.GetMimeFromPath(@"D:/test.mp4"), "test.mp4");
}

Asp.Net Core使用:

using Masuit.Tools.AspNetCore.ResumeFileResults.Extensions;
public void ConfigureServices(IServiceCollection services)
{
    services.AddResumeFileResult();
}
074.Text-Grab

一个轻量级的 Windows OCR 工具。它基于 Windows 10 系统自带的 OCR API 实现,可以将看到的所有文字转化成文本,而且启动速度快、无需常驻后台、可离线使用。

075.WinDynamicDesktop

类似 macOS 动态桌面的工具。该项目是将 macOS 动态桌面功能移植到 Windows 10,它可以基于你的位置计算出日出和日落的时间,并根据当前时间动态改变桌面壁纸,已上架 Microsoft 应用商店。

076.XCharts

Unity 数据可视化图表插件。一款基于 Unity UGUI 的图表插件,它功能强大、简单易用,支持折线图、柱状图、饼图、雷达图、散点图、热力图、环形图、K 线图等多种图表。

077.DevToys

程序员的瑞士军刀。该项目打包了程序员日常开发会用到的小工具,比如时间戳转化、各种解码、输出美化、颜色选择器等,使用方便颜值高。

078.Tai

Windows 上统计软件使用时长的工具。该项目会根据软件获得焦点和失去焦点的时间差,来计算软件的真实使用时长,而不是简单地统计软件存活时间。

079.Malware-Patch

阻止 Windows 流氓软件授权的工具。它轻巧、无需后台运行,可用于阻止指定软件的管理员授权。

080.CliWrap

执行外部命令的 C# 库。提供启动进程、输入/输出重定向、等待完成、管道等功能,支持 Windows、Linux、macOS 操作系统

using CliWrap;

var result = await Cli.Wrap("path/to/exe")
    .WithArguments("--foo bar")
    .WithWorkingDirectory("work/dir/path")
    .ExecuteAsync();

// Result contains:
// -- result.ExitCode        (int)
// -- result.StartTime       (DateTimeOffset)
// -- result.ExitTime        (DateTimeOffset)
// -- result.RunTime         (TimeSpan)

081.DreamScene2

小巧的 Windows 动态桌面工具。适用于 Windows10/11 系统,支持视频、网页动画播放

082.ScreenToGif

此工具可以记录屏幕的选定区域、网络摄像头的实时图像和绘图板上的实时图像。可以编辑并将动画保存为 GIF 或视频

083.dopamine-windows

基于WPF编写的现代扁平风格轻量级播放器

持续更新中...

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
滚动至顶部