dotnet

大象笔记 > 标签 > dotnet

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 就是生成的独立的可执行的 ...

阅读全文...

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 ...

阅读全文...

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 的语法,但是这个项目引入政治元素,而且看起来文档也有点乱。 不太 ...

阅读全文...

.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 ...

阅读全文...

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 的入门教程,应该很有市场。 体 ...

阅读全文...

golang gin 与 asp.net 对比

尝试 asp.net 的原因 有三个原因让我想尝试一下 asp.net 听说 Ubuntu 22.04 已经内置 .net 6 运行时 asp.net 可以像 golang 一样编译成一个二进制文件直接部署并运行在 linux 系统环境中,即 AOT 技术栈向原生客户端开发靠拢,毕竟要做个人开发者,能直接向应用商店发布产品是最重要的。而 Windows 平台最靠谱的技术栈必然是 .net。再就是做物联网相关的开发,还是绕不过 windows。 asp.net 初体验 没有使用 visual studio 的安装方式,我直接下载了.net6 sdk,并通过命令行新建了 wpf 和 asp.n ...

阅读全文...

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 ...

阅读全文...

做程序员呢,开心最重要,用 .Net 8 开发了一个自用的 Windows 文件上传七牛云小工具

没有什么事情比给自己开发一个小工具更开心了。每天都在给别人写程序,通过代码实现自动化,解放客户的双手,提高他们的工作效率。但是对比之下,给自己写的工具却寥寥无几。 最近,由于要给客户频繁修改 Android 平板 App 上的 bug,每次修复完,都需要: 重新发布一个 apk 安装包 登录七牛云网页后台,把 apk 文件上传,并获得下载链接 url 将加载链接生成二维码,方便客户直接在平板上扫码下载 这个过程异常的繁琐,特别是那个网页后台操作很麻烦 (现在的云平台都是这个鬼样子,让人眼花缭乱,不知所措)。于是,我决定开发一个小工具,来解决自己的烦恼。 技术选型 用 Koltin 开发 A ...

阅读全文...

.NET 8 通过 dotnet add package 安装三方依赖包

例如我想给正在开发的 .NET 8 Console 程序添加上七牛云的官方 SDK 依赖。 可以直接使用 dotnet add package 命令: dotnet add package Qiniu.Shared --version 7.2.15 或者直接省略版本号,即安装最新的包版本 dotnet add package Qiniu.Shared 对应的配置修改 通过 git diff,可以看到项目根目录下的 xxx.csproj 文件发生了变更。增加了新添加的包的名称及版本号。这跟 python requirements.txt 和 golang 的 go.mod 文件的机制类似。 ...

阅读全文...

.Net 8 Console 程序中使用 Windows 弹窗

例如,咱把 .Net Console 默认的 hello world 程序修改一下,增加一个弹窗。 using System.Windows.Forms; Console.WriteLine("Hello, World!"); DialogResult res = MessageBox.Show("Are you sure you want to Delete", "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (res == ...

阅读全文...