Windows

分类下相关文章

ASP.NET Core 8.0 asp-append-version 自动添加版本号失败

问题描述 在开发一个 ASP.NET Core 8.0 的网站,使用 asp-append-version 自动给 js 和 css 文件添加版本号。 代码如下: <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> 之前还是好的,但是不知道啥时候,就不好用了。即,没有后面的版本号了(文件 hash) 问题根源 为了方便 Nginx 转发 /tools4 的请求到这个 ASP.NET Core 的服务上,我统一添加了前缀。 而版 ...

阅读全文...

.NET Core MVC 渲染多条记录报错 foreach statement cannot operate on variables of type 'object'

借实现我的 Emoji 字典工具 📖 的机会,了解了一下 .NET Core MVC 中使用 EF Core 及在 controll view 间传递变量的方式。 果然遇到了类型的问题。 foreach statement cannot operate on variables of type 'object' 问题代码 controller: [HttpGet] public async Task<IActionResult> Index() { var items = await _context.Items.ToListAsync(); ViewData[&q ...

阅读全文...

给家里年迈的 DELL 台式机新配了个腾达 USB WIFI 6 无线网卡

起因 家里的这个 DELL 台式机本身是内置了无线网卡的,但是放在小屋时,距离客厅的无线路由器太远,信号很不稳定。 还因此更换了一个更贵的小米路由器,但是偶尔还是信号不好。电脑桌面右下角的 WIFI 图标永远没有满格的时候,总是少一格。。。小网卡你也太不努力了吧 ╮(╯▽╰)╭ 可是,我的手机在小屋里,信号永远是满格。说明还是台式机内置的无线网卡不太行,或者是在机箱里影响信号? 也这样凑合了很久,但是昨晚我实在是受不了了。起因是,最近严重依赖 AI 编程插件来写代码,在网络不稳定的情况下,插件一直显示超时,导致我一行代码也写不出来。。。我终于成为了只会按 TAB 键的笨蛋程序员。 写了几段单元 ...

阅读全文...

ASP.NET 使用 EF Core 连接 MySQL 8.0

版本 ASP.NET Core in .NET 8.0 MySQL 8.0 EF Core 是什么 Entity Framework Core (中文名称更抽象,还是记住英文名吧),即 EF Core, 是微软官方的 ORM(对象关系映射)框架,它允许开发者使用 .NET 对象来操作数据库,从而避免了直接编写大量的数据访问代码。EF Core 支持: 多种数据库,如 SQL Server、MySQL、PostgreSQL 和 SQLite 等 支持跨平台 Windows, Linux 都可以。而我的服务器基本都是 Ubuntu 加 MySQL,所以才考虑使用 .NET 自动迁移,即 Mi ...

阅读全文...

ASP.NET Core Razor 网页模板中将 Markdown 转换为 HTML

习惯了 Markdown 来记录笔记,所以编辑时使用的是 Markdown。但是在网站展示时, 希望将其转换为 HTML。 于是,搜索了一下 C# 相关的 Markdown 库。找到一个 Markdig 的库: https://github.com/xoofx/markdig 但是,这个不能直接在 ASP.NET Core MVC 的 Razor 代码文件中使用。 需要自己封装一下。还是太麻烦了,于是找了另一个基于 Markdig 封装好的库。 https://github.com/RickStrahl/Westwind.AspNetCore.Markdown ASP.NET Core Ma ...

阅读全文...

.NET 8 C# 使用模板引擎 Scriban

由于 C# 中没有像 golang 一样内置一个模板引擎,所以做一下选型。 选型一:T4 text templates https://learn.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2022 没有看懂是否能够在 Visual Studio 之外使用,所以放弃。 选型二:类 razor 模板引擎 https://github.com/toddams/RazorLight 比较喜欢 Razor 的语法,但是这个项目引入政治元素,而且看起来文档也有点乱。 不太 ...

阅读全文...

在编程中变量名的几种表示方法

早上开会时,太无聊了,于是摸了个鱼,查询了一下在编程中变量名的几种表示方法对应的叫法。 为何要了解不同的命名方式呢? 因为 AI 时代,要让 AI 帮你写代码,首先要能描述清楚你的需求。例如,我在实现一个自动生成项目代码的 .NET 工具时,发现对于变量名格式的描述很模糊,需要不断举例说明,但是如果换成约定俗成的叫法,那么 AI 里面就能理解了。 下面就是一个案例: c# 将变量名 PascalCase 形式,转换为短横线命名法(KebabCase) 然后 AI 立即生成了对应的正则表达式代码。(腾讯元宝生成的代码还是不太行,用 POE 的 gpt-3.5-turbo 就非常准确) 下面是 ...

阅读全文...

.NET 8 C# Console 程序命令行解析

由于平时要写大量的增删改查代码,包括 golang gin 的和 C# asp.net 的等等。 用 VIM Snippet 可以解决单文件的问题,但是解决不了要同时新建多个文件的情况。 所以,想用 .NET 8 Console 来实现一个自动生成代码的工具。 首先呢,就需要能方便的解析命令行参数,来区分不同的框架。 依赖库:System.CommandLine 官方介绍 https://learn.microsoft.com/en-us/dotnet/standard/commandline/get-started-tutorial GitHub 项目: https://github.com ...

阅读全文...

多张 PPT 无缝切换,适用于 win10 / win11

昨天公司举办一年一度的行业大会,我以第一鼠标操作员的身份参加了大会。 主要承担了给各个专家演讲时,播放 PPT 的核心工作 💣。在上午彩排预演的时候,政府领导对我切换 PPT 的手法提出了质疑,说每播放完一个 ppt,就回到系统桌面,或者文件夹,再选择下一个,看起来比较 low。是否可以做到无缝切换? 虽然我心中一万匹草泥马飘过,但是想想也非常合理。。。于是在手机上搜索了一下,没找到简单的解决方案。不知为何会议现场手机 5g 信号满格,但是网络异常卡,发个消息都发不出去。于是作罢,先完成彩排,然后想办法。 系统多屏幕设置 中午吃饭的时候,突然想到既然插了 hdmi 线投屏,理论上跟平时办公写代 ...

阅读全文...

ASP.NET Core in .NET 8 的 I18N 多语言国际化

配置 例如,我想要的效果如下: 支持中文和英文两门语言 默认语言是英文 翻译文件放到 Resources 目录下 上代码,在 Program.cs 入口文件中添加: using Microsoft.AspNetCore.Localization; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddLocalization(options =&g ...

阅读全文...

基于 ASP.NET Core in .NET 8 开发了一个在线二维码生成工具

平时经常要将开发好的 Android APP 上传到云服务器,然后将下载链接生成二维码,发送给客户,方便扫码下载安装。 之前用的草料二维码虽然满足需求,但是操作有点繁琐,所以想借自学 .NET 8 的机会,边学习边开发一个在线的二维码生成工具。 也算是在枯燥的工作之余,自己找点乐趣吧。 断断续续搞了一个周,每天最多半小时,终于上线了。总体感觉 .NET 8 的 ASP.NET Core MVC 开发起来还算舒服。 就是官方文档比较杂乱,需要东找西找。市面上的书籍也滥竽充数的居多,鲜有从头一步步的构建流程,大多是官方文档的二次消化式输出。 所以,写个 .NET 8 的入门教程,应该很有市场。 体 ...

阅读全文...

DotNet 8 Minimal API with AOT (三): Ubuntu Server 生产环境部署

在使用 HTMX 调用 .NET 8 Minimal API 实现的接口后,这个小的练手项目就算是开发完了。现在需要部署到生产服务器上。 编译 > dotnet publish 可执行文件的大小 > ls bin/Release/net8.0/linux-x64/publish/ -lah total 32M 4.0K ./ 4.0K ../ 11M app* 21M app.dbg* 127 appsettings.Development.json* 151 appsettings.json* 4.0K wwwroot/ app 就是生成的独立的可执行的 ...

阅读全文...

DotNet 8 Minimal API with AOT (二): 编写接口

书接上回 DotNet 8 Minimal API with AOT: Part 1 这是使用 DotNet 8 Minimal API with AOT 系列的第二部分,开始实行一个 API 接口。 一个最简单的 API 接口 app.MapGet("/hello", () => "Hello World!"); 测试一下: > curl http://localhost:5141/hello Hello World!¶ get 请求就是 MapGet; post 请求就是 MapPost。 独立的处理函数 我还是觉得上面那种 lamb ...

阅读全文...

DotNet 8 Minimal API with AOT (一): 新建项目

我想用 DotNet 8 的 Minimal API 实现一个简单的服务器操作界面, 点击页面中的一个按钮,自动执行 Linux 服务器中的一行命令。(为何不用 PHP 或是 golang 去实现,因为我想换个口味) 初步构想是: api 提供接口 html 放 wwwroot 目录下 尝试一下 AOT 版本的 Minimal API 部署方式 为何选择 Native AOT 虽然有几种不同方式可以部署 ASP.NET 8 Minimal API 服务,但是我部署想试试 AOT。 Native AOT is a deployment model that uses an ahead-of ...

阅读全文...

DotNet 8 AOT 测试,还是不如 Golang 交叉编译方便

什么是 .Net 的 AOT 简言之,就是类似 Golang 将代码编译成一个独立的二进制文件,直接扔到服务器上就能运行,也不需要任何的 runtime 依赖。 Publishing your app as Native AOT produces an app that's self-contained and that has been ahead-of-time (AOT) compiled to native code. Native AOT apps have faster startup time and smaller memory footprints. These apps ...

阅读全文...