.NET way to explore https:https://cdn.v2ex.com/navatar/0bb4/aec1/349_normal.png?m=1579009691 https:https://cdn.v2ex.com/navatar/0bb4/aec1/349_large.png?m=1579009691 2025-09-14T13:55:17Z Copyright © 2010-2018, V2EX 知乎网友:“VS2026 还是跑在 .NET Framework 4.8 上,看来 .NET LTS 只有三年的问题还真把微软自己的脖子卡住了” tag:www.v2ex.com,2025-09-12:/t/1158803 2025-09-12T07:14:33Z 2025-09-14T13:55:17Z cnbatch member/cnbatch 这段说法来自于知乎提问
如何评价 Visual Studio 2026 ? 下方网友的其中一个回答:
https://www.zhihu.com/question/1949061195031118812/answer/1949130568806670437

我还没安装 VS2026 ,等到正式版推出了再说

不过 .NET LTS 的时间倒是很值得关注,三年是不是有点少?毕竟微软自家 Visual Studio 本体的支持时间远不止 3 年,如果跑在 .NET LTS 那可能真不够用


题外话:每个 IDE 厂商(尤其是 JetBrains)都应该参考一下微软的这次“营销”技巧,专门留一行字给老板和采购部门看,让他们尽量买高配电脑而不是按照最低需求来买(除非他们钻细节找到真实配置需求的网页)

]]> .Net 有没有类似若依这种后台框架? tag:www.v2ex.com,2025-08-29:/t/1155769 2025-08-29T05:49:39Z 2025-08-30T14:09:08Z StoneHuLu member/StoneHuLu 然后增删改查列表页可以快速根据数据库表字段生成的。

我以前在互联网写.net 微服务的,去年入职朋友的公司回传统行业,这边当时技术盏还是 java ,写了一年多越写越烦,就感觉和 java 结了婚但是心里的白月光还是当年那个.Net ,现在公司技术盏我可以一言堂了,想着干脆切回.net 算了,起码写着舒服,但好多年不用.net 写后台了,想问下有没有比较成熟可靠的后台框架开箱即用的,想着把现在的若依后台逐步迭代回.Net ]]>
请教个 .NET Framework 4.0 升级以运行在 arm 上的问题 tag:www.v2ex.com,2025-08-26:/t/1154926 2025-08-26T01:45:03Z 2025-08-26T10:14:54Z rrubick member/rrubick 有一个老项目,是用 .NET Framework 4.0 开发,在 web 页面调用并运行在 windows 上。 现在有一个需求:需要迁移到 arm 上运行。

我搜索了一下,解决方案是:

  1. 升级到 .NET Framework 4.8.1 及以后版本,原生支持 arm
  2. 用 .NET Core (.NET 或者 ASP.NET ) 重写

由于本人从未接触此类开发,所以有疑问想请教大佬:

  1. 以上哪种方案对于我来说是比较省心的
  2. 我是否必须要在 arm 架构的机器上开发,比如 MacOS 、arm Ubuntu ,如果用树莓派是否可行。
]]>
应届生刚入职,做的是 wms+mes+mes 二次开发,因为没学过.net+c#,现在接口代码全靠 ai 写怎么办 tag:www.v2ex.com,2025-08-25:/t/1154817 2025-08-25T08:55:12Z 2025-08-26T03:04:22Z boliang2333 member/boliang2333 1.control 里创建 api ,创建 model ,声明接口,实现接口,反序列化传入的 json 值
2.判空,用 linq 语句查询本地数据库里是否有和 json 值相应的数据
3.有的话存下来,让后把存下来的数据导入实体类,在用 context 加到本地数据库里

但是让我自己从 0 写真的很困难,感觉啥都联系不起来,是否需要系统学习一下,有没有快速掌握 curd 的方法 ]]>
[分享创造] 开源轻量级 WinForm 壁纸切换器 Wallpaper Switcher (C# / .NET 9) tag:www.v2ex.com,2025-08-07:/t/1150815 2025-08-07T12:43:06Z 2025-08-08T01:10:08Z lorenzoyang2002 member/lorenzoyang2002 大家好!

作为一个 C# 新手,完成了我的第一个真正有用的个人项目:Wallpaper Switcher (壁纸切换器),并已开源。

一句话介绍: 一个基于 WinForms 开发的轻量级工具,专注于快速、方便地管理和切换静态壁纸。支持 Windows 8/10/11 (.NET 9)。

核心痛点 & 为什么做这个?

主要功能亮点:

  1. 文件夹管理:轻松添加/删除/切换壁纸源文件夹。
  2. 一键切换:按钮或热键立即切换壁纸/文件夹。
  3. 全局热键:后台运行,支持自定义热键(仅运行时有效)。
  4. 系统托盘常驻:关闭即最小化到托盘,支持热键必需。
  5. 开机自启
  6. 两种切换模式
    • Native:用系统幻灯片,流畅但间隔受限。
    • Custom:直接 API 调用,切换更快更即时。
  7. 简洁设置界面

技术选型与开发亮点:

获取与使用:

期待你的反馈! 作为第一个完整的 C# 实用项目,深知代码和设计必有不足。非常欢迎:

请在 GitHub Issues/PR本帖回复 中提出!你的反馈是宝贵的学习机会。

希望这个小工具也能为你带来便利!

(文章用 Deepseek 进行了优化,本人文采不好,内容是自己写的只不过让 AI 润色了一下,见谅)

]]>
csharp 这回真成了脚本语言: dotnet run app.cs tag:www.v2ex.com,2025-07-23:/t/1147221 2025-07-23T11:19:02Z 2025-07-30T00:19:49Z Need4more member/Need4more dotnet 10 支持直接运行 cs 源文件

引用三方包

#:package Humanizer@2.14.1 using Humanizer; var dotNet9Released = DateTimeOffset.Parse("2024-12-03"); var since = DateTimeOffset.Now - dotNet9Released; Console.WriteLine($"It has been {since.Humanize()} since .NET 9 was released."); 

linux shebang

#!/usr/bin/dotnet run Console.WriteLine("Hello from a C# script!"); 
chmod +x app.cs ./app.cs 

https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app

v 站的 dotnet 节点好冷清~~~

]]>
小弟写了一个 ETLBox 写入数据到 ClickHouse 的组件, 需要用到的兄弟们可以看看 tag:www.v2ex.com,2025-06-20:/t/1139918 2025-06-20T06:32:18Z 2025-06-20T06:32:18Z niubiman member/niubiman https://github.com/choby/ETLBox.ClickHouse ,麻烦路过的兄弟们点个 star
默认支持.net 6,8,9 ,如果需要支持其他版本可以自行尝试编译
使用说明已经在 md 中写了, 由于 ETLBox 官方并没有提供 clickhouse 的支持,所以本组件主要是针对使用 ETLBox 并且使用 clickhouse 做数仓的项目有帮助,这部分功能在本公司生产项目已经在正式使用,稳定可靠 ]]>
C#.net9wpf 项目这份.gitignore 规则可行吗?还有什么可以添加的吗? tag:www.v2ex.com,2025-04-13:/t/1125132 2025-04-13T10:28:17Z 2025-04-13T10:27:17Z AndrewHenry member/AndrewHenry # ~~ C# .NET (.NET Core / .NET 5+) .gitignore 文件 ~~
# 此文件旨在覆盖 .NET 9 及相关工具链生成的大多数临时文件和本地配置。
# 适用于 Visual Studio, VS Code, JetBrains Rider 等环境。

# 操作系统生成的文件
# -------------------------------------------------------------------
.DS_Store # macOS
Thumbs.db # Windows Thumbs cache
ehthumbs.db # Windows Thumbs cache
Desktop.ini # Windows Folder view settings

# IDE 和编辑器特定的文件/文件夹
# -------------------------------------------------------------------

# Visual Studio
.vs/ # Visual Studio 解决方案缓存和用户设置 (非常重要)
*.suo # Visual Studio Solution User Options (旧格式)
*.user # Visual Studio Project User Options
*.vcxproj.user # C++ Project User Options (如果混合使用)
*.*proj.user # 任何项目的用户选项

# Visual Studio Code
.vscode/ # VS Code 工作区设置。
# 注意:有时 launch.json 或 tasks.json 可能希望共享,
# 如果是这样,可以取消忽略特定文件:
# !.vscode/launch.json
# !.vscode/tasks.json
# !.vscode/settings.json (如果想共享某些工作区设置)

# JetBrains Rider
.idea/ # Rider 项目/解决方案设置和缓存
*.sln.iml # Rider/IntelliJ 生成的模块文件

# 编译和构建输出
# -------------------------------------------------------------------
bin/ # 主要编译输出目录
obj/ # 中间编译文件目录
**/bin/ # 递归匹配所有 bin 目录
**/obj/ # 递归匹配所有 obj 目录
**/Release/ # 显式忽略 Release 构建输出 (通常已在 bin/ 中)
**/Debug/ # 显式忽略 Debug 构建输出 (通常已在 bin/ 中)
build/ # 有些构建脚本使用 'build' 作为输出
artifacts/ # .NET SDK 风格项目有时使用的发布/打包输出目录
publish/ # `dotnet publish` 的默认输出目录
**/Generated/ # 有些代码生成器可能输出到这里

# NuGet 包和依赖项缓存
# -------------------------------------------------------------------
packages/ # 旧版 NuGet 包文件夹 (packages.config)
*.nupkg # NuGet 包文件
*.snupkg # NuGet 符号包文件
*.[Pp]ackages.* # 例如 'project.assets.json' 在 obj/ 中,但以防万一
# 注意:通常不忽略 nuget.config ,因为它定义了包源。

# 用户特定的运行时文件
# -------------------------------------------------------------------
*.pid # 进程 ID 文件
*.lock # 锁文件

# 日志和临时文件
# -------------------------------------------------------------------
*.log # 日志文件
*.log.* # 滚动日志文件
*.tmp # 临时文件
*.bak # 备份文件
*.swp # Vim 交换文件
*.DS_Store?* # macOS 特殊文件变体

# 测试结果和覆盖率报告
# -------------------------------------------------------------------
TestResults/ # Visual Studio 测试结果目录
*.trx # Visual Studio 测试结果文件
*.coverage # Visual Studio 代码覆盖率文件
*.coveragexml # 代码覆盖率 XML 文件 (如 Cobertura)
**/coverage.cobertura.xml # Cobertura 格式覆盖率报告
**/lcov.info # lcov 格式覆盖率报告 (常用于前端/JS 测试)
reportresults/ # 一些报告生成器的输出目录

# 运行时配置文件和 Secrets (非常重要)
# -------------------------------------------------------------------
secrets.json # .NET User Secrets 文件 (绝不应提交)
**/secrets.json # 确保任何位置的 secrets 文件都被忽略
appsettings.Development.json # 开发环境特定设置,可能包含本地敏感信息。
# 取决于团队策略,有时会提交 *模板* 但非实际值。
# 推荐的做法是不要提交包含真实密码/密钥的此文件。
.env # 环境变量文件,常用于本地开发 secrets

# 数据库文件 (本地开发数据库)
# -------------------------------------------------------------------
*.mdf # SQL Server 数据库文件
*.ldf # SQL Server 日志文件
*.sdf # SQL Server Compact Edition 数据库文件
*.db # 通用数据库文件 (如 SQLite)
*.db3 # SQLite 常用扩展名
*.sqlite # SQLite 常用扩展名
*.sqlite3 # SQLite 常用扩展名

# Web 开发相关 (如果适用)
# -------------------------------------------------------------------
node_modules/ # Node.js 依赖项 (如果使用 npm/yarn)
wwwroot/dist/ # 前端构建工具的输出目录 (示例)
wwwroot/lib/ # 通过 LibMan 或类似工具管理的客户端库 (如果不想提交)

# 特定工具/库生成的文件
# -------------------------------------------------------------------
*_i.c # COM Interop 生成文件
*_p.c # COM Interop 生成文件
*_h.h # COM Interop 生成文件
*.ilk # 增量链接器文件
*.aps # Visual C++ 文件 (如果混合使用)
*.ncb # Visual C++ 文件 (如果混合使用)
*.plg # Visual C++ 文件 (如果混合使用)

# Resharper (如果使用)
# -------------------------------------------------------------------
_ReSharper*/ # ReSharper 缓存/设置
*.[Rr]e[Ss]harper # ReSharper 文件

# 证书和密钥文件 (绝不应提交)
# -------------------------------------------------------------------
*.pfx # 个人信息交换文件 (证书和私钥)
*.p12 # PKCS#12 文件 (证书和私钥)
*.key # 私钥文件

# Docker 相关 (如果使用 Docker)
# -------------------------------------------------------------------
docker-compose.override.yml # 本地 Docker Compose 覆盖文件
.dockerignore # 注意:这不是 gitignore ,但常与 Dockerfile 放在一起

# Profiler / Memory Dump Files
# -------------------------------------------------------------------
*.psess # Visual Studio Profiler Session
*.vsp # Visual Studio Profiler Report
*.vspx # Visual Studio Profiler Report
*.sap # Visual Studio Profiler File
*.diagsession # Visual Studio Diagnostic Session
*.dmp # Memory dump 文件

# BenchmarkDotNet (如果使用)
# -------------------------------------------------------------------
BenchmarkDotNet.Artifacts/

# ~~ 文件结束 ~~ ]]>
有人试过从 WCF 迁移到 ASP.NET Core Web API 吗? tag:www.v2ex.com,2025-04-11:/t/1124744 2025-04-11T06:21:19Z 2025-04-11T09:01:53Z Patrick6 member/Patrick6 项目从.NET5.0 升级到 8.0,加起来 1.5 万行代码, Linux 下编译经常要半个小时,有的时候又几秒钟就能编译完, Windows 下一直非常正常,怎么排查? tag:www.v2ex.com,2025-03-25:/t/1121065 2025-03-25T16:10:17Z 2025-05-06T03:06:03Z drymonfidelia member/drymonfidelia 整个服务器上就一个 Docker ,里面运行这个服务
以前 .NET 5 的都是秒编译
现在经常要半个小时,有时甚至五六个小时编译不完
有时候又能 2 秒编译,不知道为什么
`docker system prune -a` 运行了好几遍,没效果



开 Debug 是因为刚才想试试是不是 Release 导致的编译缓慢才改的,并不是导致问题的原因 ]]>
分享一个使用 C#封装的 gRPC 组件 tag:www.v2ex.com,2025-03-15:/t/1118590 2025-03-15T01:54:06Z 2025-03-15T08:07:31Z jroger member/jroger 开发这个组件的原由:最开始接触的服务间通信是使用的 WCF,后来使用了 gRPC 后,因为不想定义 proto 文件,就在想有没有办法像用 WCF 一样使用 gRPC,经过摸索后,就有了现在这个组件。

如果你也有和我类似的想法,欢迎试用。

地址在这里

]]>
C# .NET 现在相对成熟的跨平台 UI 框架是否还是只有 Avalonia? MAUI 怎么样了 tag:www.v2ex.com,2025-02-24:/t/1113916 2025-02-24T10:29:32Z 2025-02-25T07:03:07Z drymonfidelia member/drymonfidelia /t/1015029
文本输入框和 Flutter 一样用起来很不 Native ,文本多的时候经常会变透明,有一些莫名其妙的问题
AI 几乎写不了,全都在胡言乱语 /t/1110486 ]]>
ASP .NET Core + EF Core + MySQL 这个统计查询在 3 亿条记录的表下每次查询都需要 2~4 分钟,优化的办法只有用触发器或是后台每小时定期统计吗? tag:www.v2ex.com,2025-01-13:/t/1104824 2025-01-13T13:47:06Z 2025-01-13T22:06:20Z drymonfidelia member/drymonfidelia 虽然后台慢不是不能用,但是销售一直在反映操作很慢让优化。销售后台时间选择器粒度只精确到天,不知道这个地方是不是可以做什么效果比较好的优化。

正常情况下日订单在五百万左右。这个页面需要显示每个 SKU 在不同阶段(状态)的订单的数量。有考虑过用 Redis 但是我们的 Redis 是单机的只用来缓存,经常 flushall 。再单独加一台 Redis 觉得不划算

return Ok(dbContext.Orders.Where(x => x.CreatedAt >= DateTimeOffset.FromUnixTimeMilliseconds(queryForm.StartDate) && x.CreatedAt <= DateTimeOffset.FromUnixTimeMilliseconds(queryForm.EndDate)) .Include(x => x.Sku).Where(x => x.Sku != null) .GroupBy(o => o.SkuId) .Select(g => new { SkuId = g.Key, SkuName = g.Select(o => o.Sku.TitleEng).FirstOrDefault(), Delivering = g.Count(o => o.Status == (int)OrderStatusEnum.Delivering), Cancelled = g.Count(o => o.Status == (int)OrderStatusEnum.Cancelled), InProcess = g.Count(o => o.Status == (int)OrderStatusEnum.InProcess), InReview = g.Count(o => o.ReviewTasks.Any(t => t.Pending && t.Result == false)), Total = g.Count() }) .ToList()); 

能想到的索引都已经加了

[Index(nameof(Status))] [Index(nameof(Input))] [Index(nameof(SkuId))] [Index(nameof(UserId))] [Index(nameof(CreatedAt))] [Index(nameof(UpdatedAt))] [Index(nameof(OrderTag))] [Index(nameof(SendPending))] [Index(nameof(OrderSource))] [Index(nameof(UserId), nameof(SkuId), nameof(FromMobileApp))] [Index(nameof(UserId), nameof(Status))] [Index(nameof(SkuId), nameof(Status))] [Index(nameof(Status), nameof(RiskyScore))] [Index(nameof(UserId), nameof(Input))] [Index(nameof(UserId), nameof(InputTailing))] public class Order : BaseEntity { ... } 
]]>
Avalonia UI 更新到 11 以后启动慢有办法优化吗? tag:www.v2ex.com,2024-12-24:/t/1100049 2024-12-24T19:16:28Z 2024-12-24T22:14:28Z drymonfidelia member/drymonfidelia 本来就不是很快,更新到 11 后简直和 Flutter 一样慢了。为了排除我写的代码的问题,我建了一个空项目,启动也要 4 秒,在 macOS 上是弹跳 3 次。

]]>
EF Core 这类较重的 ORM 框架适合塞进客户端吗?如果是用于本地 SQLite 数据库,有没有更好的选择? tag:www.v2ex.com,2024-12-23:/t/1099682 2024-12-23T08:03:23Z 2024-12-30T15:11:38Z drymonfidelia member/drymonfidelia Windows 普通用户,可否禁用系统自带.net 3.5/4.8,仅安装最新.net 8/9? tag:www.v2ex.com,2024-12-05:/t/1095210 2024-12-05T05:03:57Z 2024-12-13T12:02:43Z allplay member/allplay 可否在启用或关闭 Windows 功能中禁用自带的.net framework 3.5 4.8 。然后从微软官方下载最新的.net 8/9 运行时。
这样减少冗余、bug 。 ]]>
同一程序内的消息队列,这样用单例的简易实现比 redis 的 Pub-Sub 效率高吗?如果不实现 Unsubscribe,有内存泄漏风险吗? tag:www.v2ex.com,2024-11-22:/t/1091813 2024-11-22T07:01:34Z 2024-11-26T00:47:03Z drymonfidelia member/drymonfidelia using System; using System.Reactive.Linq; using System.Reactive.Subjects; public class BasicMessageBus { private static readonly BasicMessageBus _instance = new(); public static BasicMessageBus Inst => _instance; private readonly Subject<object> _messages = new(); public IObservable<T> Subscribe<T>() => _messages.OfType<T>(); public void Send(object message) => _messages.OnNext(message); } ]]> Avalonia 11 后要从 ItemsControl 调用母 UserControl 的命令这种常见操作就必须每次都写这么长一坨东西吗? tag:www.v2ex.com,2024-11-19:/t/1091008 2024-11-19T18:56:13Z 2024-11-20T00:52:01Z drymonfidelia member/drymonfidelia
然后发现"{Binding $parent[ItemsControl].DataContext.ParentCommand}" 这种写法不能用了,会报错 Unable to resolve property or method of name 'ParentCommand' on type 'System.Object'。GPT-4 和 Claude 都完全不懂这个变化,一直指导我排查别的东西,折腾了好久也没解决。

只好去 Discord 上问群友,群友说是 11 新加的 CompileBindings 导致的,默认开启,必须把 CompileBindings 关掉,或者每次调用 Parent Command 都写 Command="{Binding $parent[ItemsControl].((vm:ParentViewModel)DataContext).ParentCommand}" 这么长一大坨。(不写 .NET 的 v 友可以理解为每次从 for 循环里 call 一个循环外面的函数要写 89 个字符)从 list 调用母 vm 的 Command 可是一个非常常见的操作,本来写 $parent[ItemsControl].DataContext.ParentCommand 就已经很长很难看,现在还要再加一段。为什么就不解决一下呢? ]]>
.NET build 到 wasm 后怎么看错误代码在哪个 .cs 文件的哪个位置? DevTools 和那个 Debug URL 里都只能看到 e.Message tag:www.v2ex.com,2024-10-21:/t/1082187 2024-10-21T06:27:42Z 2024-10-25T19:08:38Z drymonfidelia member/drymonfidelia

在调试模式下也只有这一点错误信息,问题出在哪行代码和错误堆栈都没有打印,IDE 里也不能像桌面应用一样自动暂停下断点

]]>
macOS 单用户环境 dotnet 装在 ~/.dotnet/ 还是 /usr/local/share/dotnet/ 更好? Rider 默认是前者,官网下载的 .pkg 默认是后者 tag:www.v2ex.com,2024-10-21:/t/1082172 2024-10-21T05:56:18Z 2024-10-21T07:11:13Z drymonfidelia member/drymonfidelia Homebrew 社区维护的安装脚本经常有莫名其妙的问题,比起社区我还是更愿意相信大的商业公司 ]]> efcore 中, 使用 FromSql 查询时, 如何设置 where in 参数? tag:www.v2ex.com,2024-10-09:/t/1078596 2024-10-09T08:01:09Z 2024-10-09T14:25:15Z bthulu member/bthulu 像下面这样, 是查不出来的. 是有什么特殊姿势我不会的吗? google 了半天也没找出来怎么传递集合参数进去.

var ids = new List<string>() { "A001", "B001" }; appDbContext.RackTransfers.FromSql($"select * from RackTransfers where Id IN ({ids})"); 
]]>
有没有 .NET 大神帮忙看看困扰了好几个大神一年的内存泄露问题,优化了一年越变越严重,现在一小时崩一次 tag:www.v2ex.com,2024-09-26:/t/1076054 2024-09-26T09:00:02Z 2024-10-01T07:22:40Z drymonfidelia member/drymonfidelia /t/1037900
已经从 ASP.NET Core 5 升级到 6 了,之前升过 8 内存泄露更严重了,又退回 6
最早加每 5 分钟强制 GC 一次,缓解了几个月,又开始两天一崩
然后搞了双实例负载均衡,两台机器 4 小时重启一次,重启时间错开,缓解了几个月
最近请求量翻了两倍,然后变成了一小时一崩,这么频繁重启再接下去肯定会出现重启也解决不了问题的情况,只好再来求助
目前请求量是每天 6~9 千万(客户端大量轮询请求,随硬件分发无法更新,导致请求量比较大)
按照 https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/debug-memory-leak 的教程,运行 10 分钟后抓取 dump 的 heap statistics 如下
https://pastebin.com/BnxB8S0R

另外 analyze 的时候所有命令都提示 ERROR: The GC heap is not in a valid state for traversal. (Use -ignoreGCState to override.) 加上 -ignoreGCState 又不返回内容,不知道为什么,stackoverflow 上的几个方法都无效 ]]>
有用过 SQLSugar 的吗?能说说体验吗? tag:www.v2ex.com,2024-09-16:/t/1073286 2024-09-16T01:00:30Z 2024-09-21T09:22:59Z lizhien member/lizhien .net 菜鸟,只用过 dapper 和 efcore 看到这个 orm ,官网说的那么牛逼,可以说是.net 最牛逼的 orm 了,想在新项目里试试 但不知道实际体验如何,真有那么好用吗? 我看 v2 都是说的 efcore ,很少说 sqlsugar 的 有没有大佬能说一下这个 orm 吗?

]]>
.NET 大牛们,这次遇到了一个涉及知识盲区的 BUG,与 Redis 有关 tag:www.v2ex.com,2024-09-11:/t/1072092 2024-09-11T11:14:49Z 2024-09-11T13:25:40Z maymay5 member/maymay5
  • 问题场景:我的 webapi 与 Redis 读写操作有关的 API 全部会 500

  • 检查:Redis 服务一切正常

  • 修复方法:清空所有缓存

  • 无法理解的特殊现象:我有两个 webapi ,一个用的 db5 ,一个用的 db1 ,我猜测是 db5 出了问题,但是 db1 的 api 也一起挂掉了,然后我清空了 db5 ,所有服务全部正常了

  • 下面是小弟 debug 到的一段异常,我问了 GPT ,说这是和 缓存副本 相关的异常,可是我的系统并没有做负载均衡类的部署,所以请教各位大佬,这到底是怎么造成的?

  • fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1] An unhandled exception has occurred while executing the request. StackExchange.Redis.RedisCommandException: Command cannot be issued to a replica: DEL cache_4f4bc6e0-4278-d758-4312-3be96b11d34e at StackExchange.Redis.ConnectionMultiplexer.PrepareToPushMessageToBridge[T](Message message, ResultProcessor`1 processor, IResultBox`1 resultBox, ServerEndPoint& server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1967 at StackExchange.Redis.ConnectionMultiplexer.TryPushMessageToBridgeAsync[T](Message message, ResultProcessor`1 processor, IResultBox`1 resultBox, ServerEndPoint& server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2013 at StackExchange.Redis.ConnectionMultiplexer.ExecuteAsyncImpl[T](Message message, ResultProcessor`1 processor, Object state, ServerEndPoint server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2191 at StackExchange.Redis.RedisBase.ExecuteAsync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in /_/src/StackExchange.Redis/RedisBase.cs:line 54 at StackExchange.Redis.RedisDatabase.KeyDeleteAsync(RedisKey key, CommandFlags flags) in /_/src/StackExchange.Redis/RedisDatabase.cs:line 758 at aibotPro.Service.RedisService.DeleteAsync(String key) in /Users/mayday/Desktop/GitHub/AIBot-Pro/AIBot-Pro/aibotPro/aibotPro/Service/RedisService.cs:line 75 at aibotPro.Service.UsersService.GenerateCodeImage(String account, String key) in /Users/mayday/Desktop/GitHub/AIBot-Pro/AIBot-Pro/aibotPro/aibotPro/Service/UsersService.cs:line 151 at aibotPro.Controllers.UsersController.GenerateCodeImage(String key) in /Users/mayday/Desktop/GitHub/AIBot-Pro/AIBot-Pro/aibotPro/aibotPro/Controllers/UsersController.cs:line 388 at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task) fail: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[3] The view 'Error' was not found. Searched locations: /Views/Home/Error.cshtml, /Views/Shared/Error.cshtml fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[3] An exception was thrown attempting to execute the error handler. System.InvalidOperationException: The view 'Error' was not found. The following locations were searched: /Views/Home/Error.cshtml /Views/Shared/Error.cshtml at Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable`1 originalLocations) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result) at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi) 
    ]]>
    求助大佬们,干了件蠢事,我都不理解我为什么要用 Rider 去装 SDK,导致现在删不掉也找不到了 tag:www.v2ex.com,2024-08-19:/t/1066048 2024-08-19T02:54:50Z 2024-08-19T03:04:26Z maymay5 member/maymay5 终端找不到 SDK

    Rider 提示.net 8

    ]]>
    nuget 服务器有问题了,不会也是那个 CrowdStrike 出问题导致的吧 tag:www.v2ex.com,2024-07-19:/t/1058644 2024-07-19T09:19:00Z 2024-07-19T10:29:56Z zhangeric member/zhangeric 为什么我已经在 Visual Studio 中安装了.Net 8.0,但是命令行显示的版本仍然是 6.0.31? tag:www.v2ex.com,2024-06-19:/t/1050797 2024-06-19T03:05:10Z 2024-06-18T11:04:10Z huzhikuizainali member/huzhikuizainali 我当前用 Visual Studio 进行 C#代码调试,希望学习一下单元测试相关知识。今天刚刚安装了 Visual Studio ,并“单独”安装了.Net 8.0 (见下方截图)。但是安装成功以后我运行 dotnet --info 显示结果如下: 可以看到 Host:Version: 6.0.31 这与我刚刚安装好 Visual Studio ,没有单独安装.Net 8.0 时的情况是一样的。

    我之前使用 VS code 时是单独从微软网站上下载安装.Net 8.0 。安装以后运行 dotnet --info ,Host:Version: 当时显示的是 8.0 。 请问我如何才能将.Net 版本升级到 8.0 呢?

    global.json file: Not found Host: Version: 6.0.31 Architecture: x64 Commit: e2ca2f8a1c .NET SDKs installed: No SDKs were found. .NET runtimes installed: Microsoft.AspNetCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 6.0.31 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 6.0.31 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Download .NET: https://aka.ms/dotnet-download Learn about .NET Runtimes and SDKs: https://aka.ms/dotnet/runtimes-sdk-info 

    pkBekv9.png

    ]]>
    我使用 vscode,如何平稳的将.Net7.0 升级到.Net8.0? tag:www.v2ex.com,2024-06-12:/t/1049059 2024-06-12T15:04:58Z 2024-06-11T23:03:58Z huzhikuizainali member/huzhikuizainali 我现在使用 vscode 进行 c#代码调试。我现在使用的是.net core7.0 我想升级到 .net core8.0 。我找到如下微软的说明网页。但是网页内容有点疑问,不知道如何操作。

    1 、网页说:更新 global.json 文件。但是没有说这个文件在哪里?我在 CMD 中输入 dotnet --info 输出信息中提示

    Environment variables: Not set

    global.json file: Not found

    我问 gpt ,它说“如果项目根目录下没有 global.json 文件,你可以手动创建一个:”-------------问题是我有很多项目。难道每个项目下面都要新建一个 global.json 文件。那工作量可有点大!

    2 、网页上说:“更新目标框架将项目文件的目标框架名字对象 (TFM) 更新为 net8.0:”

    ----我对这句话的理解是更新项目下的 project 文件。也就是.csproj 文件。可是每个项目下都有好多.csproj 文件。难道都要更新?

    gpt 的回答是“确实,对于包含多个项目的解决方案,逐个手动更新每个项目的 .csproj 文件工作量较大。不过,可以通过编写脚本来批量更新这些文件,从而减少手动操作的工作量。以下是几种解决方案,可以帮助你简化这个过程:” 

    -----gpt 的回答不敢全信。以上升级过程存在很多疑问和不确定性。请问各位老师是否有具体的指导或者更简单升级方法。或者有相关详细升级步骤的视频分享么?如果我将当前的 7.0 彻底卸载,重新安装 8.0 是否会导致当前 build 的项目全都不可用,需要重新 build 。或者我还是要手动逐个更新 vscode 中的 solution 和 project 文件?

    https://learn.microsoft.com/zh-cn/aspnet/core/migration/70-80?view=aspnetcore-8.0&tabs=visual-studio-code#tabpanel_1_visual-studio-code

    ]]>
    我想重构我这个项目的前端,有什么好的建议? tag:www.v2ex.com,2024-06-05:/t/1047183 2024-06-05T19:02:43Z 2024-07-02T12:21:04Z maymay5 member/maymay5 项目地址: https://github.com/MayDay-wpf/AIBotPublic

    当前用的技术栈

    整理了我的代码后发现,我虽然用了 MVC 但是 view 这一层我完全没有使用 razor ,而是用 jquery 纯手搓 dom 字符串,这也许对于重构前端会有一定帮助

    但是现在有点选择困难,前端框架太多了,我既想轻量,又想组件丰富,还想拓展能力强,各位大佬们有什么建议?

    ]]>
    接了个小活,选 Windows 窗体应用还是 WPF 应用? tag:www.v2ex.com,2024-05-26:/t/1043993 2024-05-26T01:09:41Z 2024-06-28T10:46:45Z CatCode member/CatCode 只考虑 Windows 平台,有 Windows API 调用的需求。
    看了一下 UI 上要求显示/交互的内容,感觉 Win32 窗体那一套就完全够用了。要求要对 Hi-DPI 支持。
    于是定下了用 C# (.Net 8 LTS)做。
    目前在选 Windows 窗体应用 还是 WPF 应用 上犯了难。各位 V 友有什么高见? ]]>
    AlipaySDKNet.OpenAPI 这个包没多少代码,为什么大小是 14.1MB?里面塞了什么? tag:www.v2ex.com,2024-05-21:/t/1042728 2024-05-21T10:48:21Z 2024-06-27T11:51:41Z drymonfidelia member/drymonfidelia EF Core 不引入锁,高并发场景 ExecuteSqlRawAsync("UPDATE Users SET Balance = Balance + {0} WHERE UserId = {1}");后如何获取 Updated 后的值? tag:www.v2ex.com,2024-05-15:/t/1041031 2024-05-15T08:08:15Z 2024-06-15T02:41:12Z drymonfidelia member/drymonfidelia ASP .NET Core 5 内存占用线性增加, 1 小时内 100%把 128G 内存用完,如果运行 dotnet-gcdump 则能立即恢复正常水平,查了很多文档 gcdump 都是不会去触发 GC 的,但多次尝试都成功,求排查思路 tag:www.v2ex.com,2024-05-05:/t/1037900 2024-05-05T19:18:30Z 2024-05-06T08:48:09Z drymonfidelia member/drymonfidelia
    dotnet-dump 出来的数据不会看,翻文档学了很久操作 minidump 的命令,发现用 dumpheap -stat -min 850000 这条命令可以找出一个 StackExchange.Redis.RawResult[] 的 Count 和 TotalSize 很大,不知道是否有关系。由于内存 dump 里面有很多密钥之类敏感信息,脱敏几乎无法完成,不然就 gzip 压缩一下放出来求助了

    项目里有非常多 Subscribe 不同 Redis 频道(动态生成的名称)的操作,从不 Unsubscribe ,不知道是否有关。 ]]>
    为什么很多文章/工具都是针对.NET Core >3.1 而不是 3.0 的?这个个小版本改动非常大吗? tag:www.v2ex.com,2024-05-05:/t/1037892 2024-05-05T17:06:55Z 2024-05-05T22:24:25Z drymonfidelia member/drymonfidelia ASP.NET Core 在 Linux 下部分接口耗时长、并发性能差,除了逐步打印日志,还有什么方便、直观的办法查出是哪一步耗时长吗? tag:www.v2ex.com,2024-03-31:/t/1028558 2024-03-31T09:09:47Z 2024-03-31T11:48:14Z drymonfidelia member/drymonfidelia 系统大部分是 Ubuntu 22.04 ,也有 20.04 和 18.04 的,总共十几台机器,给不同客户使用
    大部分是裸机部署,也有部署在 Docker 里的 ]]>
    时隔半年,我又来吐槽 nuget 了 tag:www.v2ex.com,2024-03-26:/t/1027291 2024-03-26T16:07:38Z 2024-03-26T19:18:30Z 89ao member/89ao t/947377 )

    没错这东西真的用到吐了,最近感到最傻鸟的一个点就是:
    它提供了 Nuget list 的命令,用于列出仓库中所有的包列表;
    然后无论国内国外,官方私服,内网外网的哪个仓库,都无法在几十分钟之内结束;
    都是 3 秒刷一屏 3 秒刷一屏的往外吐结果
    那整个请求要跑多久?
    这个 http 连接要保持多久? server 端的 timeout 怎么配置?
    长时间不完成的连接对 server 的压力要有多大?

    请问半小时执行完一个 list 的命令,还执行它有什么意义?


    这里拿 yum list 来做个对比,3s 执行完😩,简单又轻松。

    窥一斑而知全豹,nuget 你不羞愧吗? ]]>
    visual studio code for .NET tag:www.v2ex.com,2024-03-11:/t/1022574 2024-03-11T07:16:29Z 2024-03-11T14:30:29Z gopher666 member/gopher666 2023 年我自己职业生涯中有个较大的变化,疫情结束之后,我来到了二线城市,花了好久才找到一份.NET 的工作。 入职面试的时候,面试官跟我提到了公司内.NET 后端的开发工具要转到 vscode 。

    开始尝试

    开始使用的时候用 c# for vscode,VSCode-solution-explorer,nuget package manager,C# XML Documentation Comments 等插件配合起来开发 dotnet6. 后来微软推出的 c# for vscode + c# dev kit 不断的升级,基本上取代了之前用的那些插件。 visual studio for MAC 上,微软后期也不在继续更新,这就意味着其他平台上.NET 开发工具的主力就会是 vscode 。 开始使用的时候先尝试了直接使用 dotnet cli 的一些基本命令,来管理项目和解决方案。

    dotnet new sln -o solution // 新建解决方案 dotnet new list //列出 templates dotnet new console -n conApp // 新建一个控制台程序 dotnet new classlib -n Lib -f net6.0 // 新建类库 dotnet sln add .\Lib\Lib.csproj 加入到解决方案 

    dotnet nuget

    dotnet nuget list source dotnet nuget add source 添加源 dotnet nuget remove source dotnet disable source dotnet enable source 

    当然我们经常用过命令来管理项目确实有写麻烦。 c# kit dev 给 dotnet 开发者提供了 solution explorer 。

    Change Cursor Style and Animation in VS Code

    "editor.cursorBlinking": "smooth" 

    Unit test

    目前 c# dev kit 还有一些存在的问题待修复。 比如我常用到 xunit 框架用来输出日志的 output ,还无法输出到控制台,无法看到自己打印的信息。 相关 issue. No output recorded after unit testing using xUnit 为了对代码进行测试覆盖,需要安装几个插件 首先代码中需要引入 Coverlet

    dotnet add package coverlet.collector 

    xunit 项目中使用

     dotnet test --collect:"XPlat Code Coverage" 

    这个命令可以配置过滤条件排除一些不想被统计的代码参考文档 需要添加一个配置文件 coverlet.runsettings

    <?xml version="1.0" encoding="utf-8" ?> <RunSettings> <DataCollectionRunSettings> <DataCollectors> <DataCollector friendlyName="XPlat code coverage"> <Configuration> <Format>json,cobertura,lcov,teamcity,opencover</Format> <Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*</Exclude> <!-- [Assembly-Filter]Type-Filter --> <Include>[coverlet.*]*,[*]Coverlet.Core*</Include> <!-- [Assembly-Filter]Type-Filter --> <ExcludeByAttribute>Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute> <ExcludeByFile>**/dir1/class1.cs,**/dir2/*.cs,**/dir3/**/*.cs,</ExcludeByFile> <!-- Globbing filter --> <IncludeDirectory>../dir1/,../dir2/,</IncludeDirectory> <SingleHit>false</SingleHit> <UseSourceLink>true</UseSourceLink> <IncludeTestAssembly>true</IncludeTestAssembly> <SkipAutoProps>true</SkipAutoProps> <DeterministicReport>false</DeterministicReport> <ExcludeAssembliesWithoutSources>MissingAll,MissingAny,None</ExcludeAssembliesWithoutSources> </Configuration> </DataCollector> </DataCollectors> </DataCollectionRunSettings> </RunSettings> 

    https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/VSTestIntegration.md 为了在 vscode 中可以展示对应文件的代码覆盖率,可以使用这个插件 Coverage Gutters https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters 为了生成对那个的代码测试报告,可以安装 RepotGenerator

    Run multiple dotnet project at once

    ** tasks.json **

    [ { "command": "dotnet", "args": [ "build", "${workspaceFolder}\\xxx.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile", "type": "process", "label": "dotnet: build APIGateway4" } ] 

    ** launch.json **

    [{ "name": ".NET8 Launch (APIGateway4)", "type": "coreclr", "request": "launch", "preLaunchTask": "dotnet: build APIGateway4", "program": "${workspaceFolder}\\APIGateway4.exe", "args": [], "cwd": "${workspaceFolder}\\src\\APIGateway\\APIGateway4", "stopAtEntry": false, "serverReadyAction": { "action": "openExternally", "pattern": "\\bNow listening on:\\s+( https?://\\S+)" }, "env": { "ASPNETCORE_ENVIRONMENT": "Development" } }], "compounds": [ { "name": ".NET8 Launch (ALL API Gateway)", "configurations": [ ".NET8 Launch (APIGateway)", ".NET8 Launch (APIGateway2)" ], "stopAll": false } ] 

    Add bracket pair colorization to your settings.json

     "editor.guides.bracketPairs": "active", "editor.bracketPairColorization.enabled": true, 

    集成 cmder

    按 Ctrl + , 打开 VS Code setting ,搜索 terminal profiles windows,或者 ctrl + shift +p 打开 vs code Command Pallet 搜索 编辑 settings.json

     "terminal.integrated.defaultProfile.windows": "Cmder", "terminal.integrated.profiles.windows": { "Cmder": { "name": "Cmder", "path": [ "${env:windir}\\Sysnative\\cmd.exe", "${env:windir}\\System32\\cmd.exe" ], "args": ["/k", "${env:cmder_root}\\vendor\\bin\\vscode_init.cmd"], "icon": "terminal-cmd", "color": "terminal.ansiGreen" }, }, 

    需要提前配置一下环境变量 CMDER_ROOT 指向 Cmder 的安装目录

    Hot keys

    Quick fix 失效了

    quick fix 按 ctrl + . 失效了,可以尝试修改成其他的快捷键 shift + ctrl + p 输入 Open Keyboard Shortcuts search quick fix 比如修改成 ctrl + shift + .

    体会

    总体感觉 vscode ,在微软更新了 c# + c# dev kit 之后,写 dotnet 的代码体验越来越好,给我的感觉是轻量和可定制化,希望 vscode for dotnet 越来越好。 ** 那么你有没有在使用 vscode 来开发 dotnet 呢? 可以与我一起讨论这个话题 **

    ]]>
    .NET 程序员的迷茫 tag:www.v2ex.com,2024-03-07:/t/1021513 2024-03-07T08:14:15Z 2024-03-09T11:56:50Z gopher666 member/gopher666 职位少的可怜,从一线到二线折腾了 3 个城市,一直干 B/S .NET 服务端,越干越迷茫,薪资还不高。 马上 35 了,怎么办呢?有没有其他的发展路线。

    ]]>
    vs2022 win10 关机后再开机如何恢复 tag:www.v2ex.com,2024-02-28:/t/1019001 2024-02-28T01:37:41Z 2024-02-28T02:22:39Z zgsi member/zgsi 需要配置什么吗?还是就这样 ]]> Avalonia 现在还是灵车吗?连官网文档都能出这么多 bug tag:www.v2ex.com,2024-02-08:/t/1015029 2024-02-08T05:37:15Z 2024-02-22T00:57:50Z drymonfidelia member/drymonfidelia 一年前刚学习这个框架的时候官网文档 Music Store App 这章节一半的图片 404 错误,昨天去看倒是已经解决了,又弄出了新的 bug ,文档的侧边栏折叠后无法展开 连官网文档都能出这么多 bug ,框架的稳定性不敢想

    ]]>
    MAUI 在 macOS 上有办法实现关闭窗口后不退出吗? tag:www.v2ex.com,2024-01-27:/t/1012074 2024-01-27T09:44:34Z 2024-01-27T10:41:34Z drymonfidelia member/drymonfidelia ClosedXML 有办法简单实现把 HTML 保留所有颜色和图片插入到一个单元格吗? 我想到的办法是用 AngleSharp 解析,但改了好几个版本效果还是很差 tag:www.v2ex.com,2024-01-19:/t/1010109 2024-01-19T11:41:16Z 2024-01-19T11:38:16Z drymonfidelia member/drymonfidelia 求助(附日志)ASP.NET Core 部署在 Ubuntu 22.04 8 核 32G 阿里云下每月固定出现一次服务器失联情况,具体时间随机,失联后系统盘 IO 爆表,重启可解决,应该从哪里开始排查?完全没思路,附日志 tag:www.v2ex.com,2023-12-04:/t/997407 2023-12-04T02:47:32Z 2023-12-08T14:24:52Z drymonfidelia member/drymonfidelia 半年前是每月本机 Redis 连接超时( StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 6???ms elapsed, timeout is 5000ms),程序大量使用了 Redis 缓存数据,日志里每隔几天就会出现这个错误,因为错误会自动重试,实际并没有影响到业务,因此一直没人管,不知道和每月固定服务挂掉一次是否有关),重启后就出现登录验证码 500 错误的问题,看日志找不到 dll ,见图: 我用 python 写了一个每 5 秒请求一次验证码接口,连续 2 次 500 错误则重启服务,稳定 3 个月后故障升级为每月服务器失联,失联期间日志没记录到任何错误,但客户从阿里云小程序看系统盘 IO 爆表: SSH 也连接不上。同一套系统以前部署在 Windows Server 下非常稳定,但因为一些非技术原因现在必须部署在 Linux 下。

    ]]>
    求助 C#有办法在自己程序内部实现一个跨线程的简易消息队列吗?现在这种轮询数据库的实现 CPU 占用率很高, 4C8G 阿 里 云占用一直在 100% tag:www.v2ex.com,2023-11-22:/t/994142 2023-11-22T04:58:21Z 2023-11-26T14:27:12Z drymonfidelia member/drymonfidelia 需求是几百个客户端不断给我们上报一些数据(加起来每分钟 2000 条左右)我们分类后上报给不同上游。上游的接口设计非常差劲(按照同一份文档),一次只能接受一条数据,有的上游一个请求 3 分钟才响应。上游的程序不是我们能控制的,我们也没权利要求他们修改。

    目前我的设计是一个独立 ASP.Net Core 程序接受数据存入数据库(因为有在线率要求,处理任务的程序需要经常重启更新,有的时候会更新坏掉),另一个程序每 2 秒查询一次数据库的新数据,按需要上报的上游分类好进入 5 个不同队列(不能接受数据的时候就分类,因为分类的逻辑也要经常改),另外启动的时候开 5 个线程在数据库里扫描这些队列,发现新的任务就开一个异步 Task 上报。不同上游能接受的并发不一样,Task 外面有个 semaphoreSlim.WaitAsync();防止把上游服务弄炸。这种实现 CPU 占用率很高,4C8G 阿 里 云占用一直在 100%,有没有人知道最佳实现是什么?

    ]]>
    请教一下 asp.net core 技术问题 tag:www.v2ex.com,2023-11-21:/t/993760 2023-11-21T03:17:02Z 2023-11-21T05:41:09Z uCharles member/uCharles 需求:有一个统一的 Web 网页(.net core 7.0 )要求在域内账户打开这个网页时自动获取到当前的域账户名。

    尝试: 1 、在添加了一些代码后,我自己在本地上运行可以获取到,但是发布到 IIS 上无法获取 2 、后来又按照微软官方文档尝试在 Program.cs 中添加一些代码后,在打开这个统一 Web 网页的时候需要使用域账户密码登录,登陆后的确能获取到域账户名称。

    求助:现在就是想,有没有一个办法可以不登录窗口从而进入网页直接获取当前域账户名,请各位大佬指点 之前没弄过 asp.net ,感觉无从下手

    ]]>
    .NET 8 发布正式版了 tag:www.v2ex.com,2023-11-14:/t/991958 2023-11-14T17:53:59Z 2023-11-16T01:34:45Z hez2010 member/hez2010 更新内容还是很巨量的,8.0 版本正好也是 LTS 带长期支持。

    主要更新:

    .NET 运行时和基础库: https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8

    ASP.NET Core (Web 开发): https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-8.0

    Entity Framework Core (ORM): https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew

    MAUI (跨平台 UI): https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-8

    C#: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12

    F#: (更新日志还没发于是先放个 blog) https://devblogs.microsoft.com/dotnet/announcing-fsharp-8

    官方 Blog 介绍:

    .NET 8: https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8

    ASP.NET Core 8: https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-dotnet-8

    Entity Framework Core 8: https://devblogs.microsoft.com/dotnet/announcing-ef8

    Aspire (云原生开发): https://devblogs.microsoft.com/dotnet/introducing-dotnet-aspire-simplifying-cloud-native-development-with-dotnet-8

    C# 12: https://devblogs.microsoft.com/dotnet/announcing-csharp-12

    F# 8: https://devblogs.microsoft.com/dotnet/announcing-fsharp-8

    MAUI: https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8

    性能改进:

    https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8

    https://devblogs.microsoft.com/dotnet/this-arm64-performance-in-dotnet-8

    https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui

    ]]>
    .net 的库作者是不是都在向 js 看齐? tag:www.v2ex.com,2023-11-09:/t/990376 2023-11-09T11:16:01Z 2023-11-10T10:24:36Z bthulu member/bthulu 一个项目, 非要拆成好几个项目, 恨不得一个 class 对应一个 dll 文件, 刷爆 nuget 排名

    说的就是你, serilog, asyncex.

    一个简单的工具类 tools, string 相关的起一个项目, int 相关的起一个项目, long 相关的起一个项目, 然后一股脑上传到 nuget 上面, 你想引入 tools, 瞬间就给你带入 toos.string, tools.int, tools.long, tools.double, tools.float, tools.bool, tools.common, tools.context.

    总之一句话, 不用 dll 文件把你的 publish 文件夹塞爆绝不罢休.

    它明明可以用一个 30kb 的 tools.dll, 它不, 它非要拆成 10 个 3kb 的 dll

    如果依赖的三方库稍微多一点, 那最后发布文件夹简直就跟 node_modules 一样臃肿.

    我觉着再这么下去, 总有一天发布文件夹内的文件会成千上万甚至几十万.

    ]]>
    .net 刚通电没有触发怎么用软件主动获取红外传感器的信号。 tag:www.v2ex.com,2023-09-27:/t/977527 2023-09-27T03:52:31Z 2023-09-27T04:59:15Z longmeier90 member/longmeier90 我用.net 开发了一个软件,从红外传感器连接电脑的端口(com3)获取高低电平信号来判断当前设备处在是左眼、右眼上,但是有一个弊端是只有触发它才主动发出信号。

    我有一个需求是,当软件初始化时需要主动获取红外传感器当前的信号(因为没有触发当前不会发出信号),判断设备处在左眼还是右眼。

    有没有开发过这方面的大佬,请多多指教。 ]]>
    看来 Windows Forms 依然活的好好的 tag:www.v2ex.com,2023-09-20:/t/975403 2023-09-20T01:17:55Z 2023-10-09T22:08:59Z gowl member/gowl What's new in Windows Forms in .NET 7.0 https://devblogs.microsoft.com/dotnet/winforms-enhancements-in-dotnet-7/

    ]]>
    .net 国内已经看不到希望了。 tag:www.v2ex.com,2023-08-25:/t/968383 2023-08-25T14:14:31Z 2023-08-29T08:09:52Z whevether member/whevether 连 vscode 换个皮改个名字都能被那群蛀虫忽悠走经费。.net 被忽悠进步了信创也是情理之中。 信创内容要求所有医疗等参与信创竞标的两年缓冲时间去改成 java,

    图片

    ]]>
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86