本文记录我写的博客和我收集的博客

技术交流群

这是我创建技术交流群,都不是开发新手友好,都是某项技术领域的群

dotnet 职业技术学院

Skype 群: https://join.skype.com/TiYcws3RHXOO

电报群: https://t.me/dotnet_campus

这是公开可加入的群

xamarin MAUI 国产 UOS 开发

群: 810052083

交流国产系统开发相关,以及 MAUI 和 Avalonia 和 UNO 和 xamarin 和 Mono 在这些神奇的系统上运行的问题,以及这些神奇的系统的系统环境问题

Microsoft.Maui.Graphics

群:623209342

交流使用 MAUI 的 Graphics 进行渲染的技术,包括自绘平台以及图形绘制相关技术

WPF SharpDx Vortice

群:622808968

交流使用 SharpDx 或 Vortice 调用 DirectX 底层的技术群,包括 D2D 和图形绘制相关技术

SkiaSharp

群: 788018852

交流 SkiaSharp 相关技术

OpenTK

群:789025426

交流使用 OpenTK 调用渲染层的群

OpenXML Office 开发

群:688921958

交流 Office 开发和 OpenXML 相关技术的群,此群非新手群

Windows 定制

群:729474199

聊 OEM 定制开发,以及各种奇奇怪怪的 Win32 API 的使用方法。非 Windows 使用方法群,非编程新手友好群

Roslyn

群:629370288

聊聊 Roslyn 和编译定制,预编译,定制构建过程的群

SemanticKernel

群: 623349574

聊聊 AI 应用

UWP WPF 开发交流群

群:XXXXXXXXXX

本群非新手群,仅提供邀请加入。纯技术群

语言

C# 高级面试题

C# 很少人知道的科技

dotnet C# 基础 为什么 GetHashCode 推荐只取只读属性或字段做哈希值

C# 里面很少人知道但很好用的 Tuple 转换

C# await 高级用法

C# 字符串首字符大写

dotnet C# 多次对一个对象调用构造函数会发生什么

dotnet C# 给结构体字段赋值非线程安全

dotnet C# 只创建对象不调用构造函数方法

dotnet C# 如果在构造函数抛出异常 析构函数是否会执行

dotnet C# 在 finally 抛异常会发生什么

dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量

为何 C# 的指针不是可空类型

C# dotnet 在内存中的 double 的 NAN 和正负无穷二进制是如何存

C# await 高级用法

C# 局部函数与事件

C# 6.0 字符串 String Interpolation

C# 7.0

C# 7.0 使用下划线忽略使用的变量

dotnet 修复 C# 8.0 语法编译失败

C# 在 8.0 对比 string 和 string? 的类型

C# const 和 readonly 有什么区别

C# 强转空会不会出现异常

dotnet C# 警惕可空结构体的方法内部赋值无效

dotnet

考古 dotnet 的不同版本

dotnet 运行时获取某类型的对象占用内存大小

C# 8.0 文件长度 Bytes 字节转 KB 等单位字符串

dotnet 如何更改应用在任务管理器显示的进程名 AssemblyTitle 的值

dotnet 将控制台 Console.WriteLine 内容输出到文件

dotnet 使用 FileAccess 与 OpenOrCreate 对文件访问权限的影响

dotnet 控制台读写 Sqlite 提示 no such table 找不到文件

C# dotnet 编写 curl 的用户名和密码逻辑

dotnet C# 代码获取系统日志

dotnet 使用 TypeNameFormatter 库格式化输出反射泛型类型

dotnet 忽略输出文件夹的正则表达式

dotnet C# 调用委托的 GetInvocationList 的对象分配

dotnet 使用 FormatterServices 的 GetUninitializedObject 方法在丢失 DLL 情况下能否执行

dotnet C# 全局 Windows 鼠标钩子

dotnet C# 反射扫描程序集所有类型会不会触发类型静态构造函数

C# 写一个24点计算程序

C# 反射判断属性是抽象继承

C# 纯控制台创建一个全屏窗口

dotnet C# 使用阿里函数计算服务

dotnet C# 图片等比限制最大和最小大小缩放算法

dotnet 使用 ConfigureAwait.Fody 库设置默认的 await 同步上下文切换配置

Windows Community Toolkit 3.0 新功能

dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架

C# 获取 PC 序列号

C# 大端小端转换

dotnet C# 如何使用 MemoryFailPoint 检查是否有足够的内存资源来执行操作

dotnet C# 获取当前设备可移动磁盘

dotnet 写一个支持层层继承属性的对象

让 dotnet 命令行输出作为英文的方法

.NET 官方图标

MSIL 静态类在 IL 定义上和非静态类的差别

代码优化

教你如何编写好的代码,如何对代码进行优化,这是入门级的博客

dotnet 代码优化 聊聊逻辑圈复杂度

团队协作下,要求代码质量,离不开代码审查,以下是一些代码审查套路

dotnet 一些代码审查套路

基础库

dotnet 使用完全对象引用相等判断

C# dotnet 提示找不到 CompositionContainer 类的解决方法

C# dotnet 使用 TaskCompletionSource 实现暂停功能

dotnet C# 基础二进制处理 二进制数组与结构体的互转

C# dotnet TypeForwarding 的用法

dotnet 使用 GZipStream 压缩字符串

dotnet 使用 lz4net 压缩 Stream 或文件

dotnet 判断其他进程未响应

dotnet 通过依赖注入的 Scoped 给工作流注入相同的上下文信息

dotnet 找不到 PostAsJsonAsync 方法

dotnet 定制 ILogger 实现

dotnet 获取程序所在路径的方法

dotnet 列表 Linq 的 Take 用法

C# 枚举转字符串

创建不带BOM 的UTF8

dotnet 字典类找不到 TryAdd 方法

dotnet 非泛型 类型 System.Collections.IEnumerable 不能与类型实参一起使用

dotnet 数组自动转基类数组提示 Co-variant array conversion 是什么问题

C# Find vs FirstOrDefault

dotnet 警惕 ConcurrentDictionary 使用 FirstOrDefault 获取到非预期的首项

dotnet core 用值初始化整个数组

dotnet 修复找不到 System.ServiceProcess 定义

dotnet 命名管道名字长度限制

dotnet 特性 DynamicallyInvokable 是用来做什么的

dotnet 使用 Environment.FailFast 结束程序

dotnet 使用 GC.GetAllocatedBytesForCurrentThread 获取当前线程分配过的内存大小

dotnet 将任意时区的 DateTimeOffset 转换为中国时区时间文本

C# 在 构造函数添加 CallerMemberName 会怎样

C# double 好用的扩展

dotnet 理解 IConfigurationProvider 的 GetChildKeys 方法用途

dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突

.NET Framework

dotnet 获取用户设备安装了哪些 .NET Framework 框架

dotnet Framework 源代码 类库的意思

WPF dotnet 使用本机映像 native 优化 dotnet framework 二进制文件

dotnet 启动进程传入不存在的文件夹作为工作目录行为变更

.NET Framework 与 .NET Core 差别

dotnet core 和 dotnet Framework 启动可执行文件的差别

升级到 dotnet core 之后 HandleProcessCorruptedStateExceptions 无法接住异常

dotnet core 2

dotnet core 2 使用 DispatchProxy 做动态代理 AOP 入门

dotnet core 2.1 使用阶梯编译

dotnet core 使用 GBK 编码

dotnet 5

如何使用 dotnet 5 预览版

刚刚我从服务器回滚了 dotnet 5 的环境

dotnet 5 从 IL 层面分析协变返回类型新特性

dotnet 5 的 bin 文件夹下的 ref 文件夹是做什么用的

dotnet 5 破坏性改动 WPF 和 WinForms 的 OutputType 输出类型重定向为 WinExe 类型

dotnet core 和 .NET 5 不支持 Prefer32Bit 首选 32 位的功能

dotnet 6

dotnet 6 使用 Obfuscar 进行代码混淆

dotnet 6 使用 string.Create 提升字符串创建和拼接性能

dotnet 6 通过 DOTNET_ROOT 让调起的应用的进程拿到共享的运行时文件夹

dotnet 6 推荐一个可代替 .NET Remoting 的 IPC 库

dotnet 6 使用 File.Exists 判断管道是否存在将让下次连接失败

dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能

dotnet 6 使用 DependentHandle 关联对象生命周期

dotnet 6 使用 CreateSymbolicLink 创建文件夹符号链接

dotnet 6 修复找不到 EnumeratorToEnumVariantMarshaler 问题

dotnet 7

聊聊 dotnet 7 对 bool 与字符串互转的底层性能优化

dotnet 8

dotnet 8 破坏性改动 在 AssemblyInformationalVersionAttribute 添加上 git 的 commit 号

序列化

dotnet 使用 MessagePack 序列化对象

XML

dotnet C# 序列化 XML 时进行自动格式化

dotnet core 进行 XML 序列化抛出 XmlSerializers dll 文件找不到

C# 序列类为 xml 可以使用的特性大全

JSON

C# json 转 xml 字符串

dotnet C# 如何让 Json 序列化数组时序列化继承类的属性

dotnet 手动解决 json 解析中不合法字符串

dotnet 使用 Newtonsoft.Json 输出枚举首字符小写

dotnet 6 在 System.Text.Json 使用 source generation 源代码生成提升 JSON 序列化性能

dotnet 6 修复在 System.Text.Json 使用 source generation 源代码生成提示 SYSLIB1032 错误

公共组件 CBB 建设

创建CBB心得

听龙华讲公共组件 CBB 建设笔记

开源公共组件仓库的更新日志应该如何写

dotnet 根据基线包版本实现库版本兼容

dotnet CBB 为什么决定推送 Tag 才能打包

C# 如何写出一个不能被其他程序集继承的抽象类

C# 在基类定义好方法让子类继承接口就能实现

插件式开发

dotnet 6 通过 DOTNET_ROOT 让调起的应用的进程拿到共享的运行时文件夹

dotnet 使用 dnlib 检测插件程序集的 API 兼容性

构建和打包

MSBuild 常用参数

如何通过命令行 msbuild 编译项目

迁移 dotnet 6 提示必须将目标平台设置为 Windows 平台

dotnet 新 sdk style 项目格式的一些命名空间和引用

dotnet 新 sdk style 项目格式 文件冲突

修复 dotnet Core 缺SDK编译失败

dotnet 桌面端基于 AppHost 的配置式自动切换更新后的应用程序路径

PublishFolderCleaner 让你的 dotnet 应用发布文件夹更加整洁

dotnet core 发布只有一个 exe 的方法

dotnet 构建还原失败 NuGet.targets 错误可能原因

dotnet 6 引用 NAudio 的旧版本构建不通过

C# dotnet 本地代码构建没问题,但 CI 自动构建失败可能的原因

dotnet core 打包构建提示 MSB3024 可能的原因

dotnet 构建 SourceRoot items must include at least one top-level item when DeterministicSourcePaths is true 失败

解决 vs 出现Error MC3000 给定编码中的字符无效

msbuild 使用 ProduceOnlyReferenceAssembly 创建作为引用的仅公开成员程序集

解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题

dotnet 修复 ILLinkTasksAssembly 特性的值的计算结果无效

dotnet 新项目格式与对应框架预定义的宏

C# 极限压缩 dotnet core 控制台发布文件

C# 将dll打包到程序中

dotnet core 使用 CoreRT 将程序编译为 Native 程序

dotnet 启动 JIT 多核心编译提升启动性能

Inno Setup 安装包脚本 Run 的 Flags 标记

C# dotnet 解决 Path 获取文件名路径在 Windows 构建在 Linux 执行问题

dotnet 使用 Obsolete 特性标记成员过时保持库和框架的兼容性

Ubuntu 通过本机代理修复 NuGet 还原 error NU1301 失败

dotnet core 发布只带必要的依赖文件

dotnet 6 命令行 cmd 设置输出英文解决中文乱码

多线程和锁相关

dotnet 多线程禁止同时调用相同的方法 禁止方法重入调用 双检锁的设计

C# dotnet 的锁 SemaphoreSlim 和队列

dotnet 测试 SemaphoreSlim 的 Wait 是否保持进入等待的顺序先进先出

dotnet 里的那些锁 AutoResetEvent 用法

C# dotnet 使用 AsyncEx 库的 AsyncLock 异步锁

dotnet 测试 Mutex 的 WaitOne 是否保持进入等待的顺序先进先出

C# dotnet 自己实现一个线程同步上下文

C# dotnet 高性能多线程工具 ExecuteOnceAwaiter 只执行一次的任务

dotnet 使用 SemaphoreSlim 可能的内存泄露

C# dotnet 高性能多线程工具 AsyncAutoResetEvent 异步等待使用方法和原理

C# dotnet 线程不安全的弱引用缓存

C# 将 Begin 和 End 异步方法转 task 异步

C# dotnet 使用 TaskCompletionSource 让事件转异步方法

dotnet 线程静态字段

dotnet 谨慎在静态构造函数里使用锁

C# dotnet Thread.GetCurrentProcessorId 和 CurrentProcess.Id 的区别

dotnet 判断特定进程存在方法

dotnet 获取当前进程方法

dotnet C# 多线程集合的 Linq 获取值同时写入集合将会抛出异常

C# Task.Run 和 Task.Factory.StartNew 区别

dotnet 警惕 Task 的 ContinueWith 带上 OnlyOnFaulted 参数抛出取消异常

dotnet 使用 TaskTupleAwaiter 同时等待多个任务简化代码写法

dotnet 的 TaskCompletionSource 的 TrySetResult 是线程安全

dotnet 记 TaskCompletionSource 的 SetException 可能将异常记录到 UnobservedTaskException 的问题

多进程

dotnet 6 创建进程 Process.Start 时设置 UseShellExecute 在 Windows 下对性能的影响

多进程通讯

dotnet 6 推荐一个可代替 .NET Remoting 的 IPC 库

dotnet 推荐一个使用 Json 直接路由通讯的 IPC 库

dotnet 用 MVC 的方式打开 IPC 命名管道

dotnet 教你写一个可以搞炸本机所有 WCF 应用的程序方法

dot net core 使用 IPC 进程通信

性能优化

C# dotnet 从后向前删除列表元素提升性能的原理

C# dotnet 使用 startIndex 提升 IndexOf 的性能

C# 7.2 通过 in 和 readonly struct 减少方法值复制提高性能

C# Span 入门

dotnet ValueTask 简单入门

dotnet 使用 Interlocked 实现一个无锁的快速无序仅写集合

dotnet 性能优化 利用哈希思想优化大对象集合相等判断性能

dotnet C# 使用无捕获的委托可以获得编译器缓存减少对象创建

dotnet C# 使用 EqualityComparer 提升泛型值类型相等判断性能

dotnet 对指针转换为结构体多个不同方法的性能分析

dotnet 使用 ToUpperInvariant 替换 ToUpper 以避免初始化 icu 过慢

网络

dotnet 6 为什么网络请求不跟随系统网络代理变化而动态切换代理

dotnet 6 HttpClientHandler 和 SocketsHttpHandler 有什么差别

dotnet 是否应该对 HttpResponseMessage 调用 Dispose 进行释放

dotnet 6 使用 HttpWebRequest 进行 POST 文件将占用大量内存

dotnet 6 使用 HttpClient 的超时机制

dotnet 6 精细控制 HttpClient 网络请求超时

dotnet 6 在 Win7 系统证书链错误导致 HttpWebRequest 内存泄露

NewLife 的 RocketMQ 的生产者每次都是新实例将只由一个消费者消费

dotnet C# 如何不联网下快速获取一段url链接里面读取文件名

C# dotnet core 局域网组播方法

C# dotnet 获取整个局域网的 ip 地址

dotnet C# 获取本机外网 IP 地址

dotnet core 获取 MacAddress 地址方法

dotnet 通过 HttpClient 下载文件同时报告进度的方法

关于多个 Cookie 的分隔符这件事

dotnet 开启 Fiddler 抓包将会让请求 HOST 头被更改

解决 System.Net.Sockets.SocketException 10106 无法加载或初始化请求的服务提供程序 无法联网

解决 System.Net.Sockets.SocketException 10045 参考的对象类型不支持尝试的操作 无法联网

dotnet core 不自动从 https 到 http 的 302 重定向

dotnet6 C# 一个国内还能用的 NTP 时间校准客户端的实现

文件读写

dotnet 文件读写务必注意事项

C# 简单读取文件

C# dotnet 使用 FileStream 随机文件读写

C# dotnet 使用判断文件夹存在的方法判断一个文件路径会怎样

C# 不能用于文件名的字符

C# dotnet 将 Stream 保存到文件的方法

dotnet 删除文件夹方法

dotnet 将文件删除到回收站

dotnet 删除只读文件

C# 相对路径转绝对路径

dotnet 警惕判断文件是否存在因为检查网络资源造成超长等待

C# 判断文件编码

C#判断文件属于文本或二进制

平台调用

dotnet 使用 CsWin32 库简化 Win32 函数调用逻辑

推荐官方开源 PInvoke 库 包含大量 win32 封装

原理博客

探索 dotnet core 为何在 Windows7 系统需要补丁的原因

dotnet core 应用是如何跑起来的 通过AppHost理解运行过程

读书笔记 dotnet 的字符串在内存是如何存放

dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程

C# CLR 聊聊对象的内存布局 一个空对象占用多少内存

读书笔记 dotnet 什么时候进行垃圾回收

dotnet ConditionalWeakTable 的底层原理

读书笔记 dotnet 大对象堆和小对象堆

dotnet core 黑科技·String.IndexOf 性能

dotnet 5 从 IL 层面分析协变返回类型新特性

C# 代码占用的空间

C# ValueTuple 原理

设计规范

dotnet core 编程规范

dotnet 设计规范 · 数组定义

dotnet 设计规范 · 抽象定义

dotnet 设计规范 · 抽象类

dotnet 设计规范 · 结构体定义

dotnet 方法名 To 和 As 有什么不同

C# 为什么不建议对任意的 IEnumerable 反转

dotnet 为什么开源的运行时仓库代码减少使用 Linq 语句

工具方法

dotnet 找到博客中引用已失败的链接地址

C# dotnet 获取某个字符所在 Unicode 字符平面映射

用 C# 写脚本 如何输出文件夹内所有文件名

dotnet 进行二进制差分压缩文件

C# dotnet 创建对象附加属性定义 支持附加任意类型

C# dotnet 分割换行

dotnet 通过 dotnetCampus.YamlToCsharp 将 YAML 多语言文件构建为代码

C# dotnet 一个看上去还能用的二进制序列化帮助类

C# dotnet WeakLazy 弱引用的延迟初始化实现方法

dotnet 动态代理魔法书

C# 解析 sln 文件

C# 金额转中文大写

dotnet 不申请额外数组空间合并多个只读数组列表

如何使用 C# 爬虫获得专栏博客更新排行

dotnet 枚举当前设备wifi热点

dotnet 对 DateTime 排序

dotnet 获取本机 IP 地址方法

dot net double 数组转 float 数组

C# 从 short 转 byte 方法

C# 16 进制字符串转 int

C# 对 byte 数组进行模式搜索

C# 快速释放内存的大数组

C# 复制列表

C# 大端小端转换

dotnet C# 基于 INotifyPropertyChanged 实现一个 CLR 属性绑定辅助类

dotnet C# 实现 GetHashCode 的方法

已知问题

dotnet 警惕 C# 的 is var 写法

dotnet 警惕使用 StackTrace 加获取方法标记 Attribute 特性在 Release 下被内联

dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放

dotnet 使用 NamedPipeClientStream 连接一个不存在管道服务名将不断空跑 CPU 资源

dotnet C# 应用程序进程创建太多线程将会抛出 OutOfMemoryException 异常

dotnet 已知问题 使用 Directory.EnumerateXXX 方法枚举 C 盘根路径可能错误的问题

dotnet 6 已知问题 ManualResetEventSlim 的 Set 方法抛出空异常

dotnet 警惕 async void 线程顶层异常

dotnet 6 在 win7 系统 AES CFB 抛出不支持异常

dotnet 已知问题 错误标记 MethodImplOptions.InternalCall 特性参数将会在类型访问之前抛出 TypeLoadException 异常

混淆

C#判断文件是否被混淆

dotnet 6 使用 Obfuscar 进行代码混淆

WMI

dotnet 通过 WMI 获取指定进程的输入命令行

dotnet 通过 WMI 获取设备厂商

dotnet 通过 WMI 获取系统补丁

dotnet 通过 WMI 获取系统安装的驱动

dotnet 通过 WMI 获取系统启动的服务

dotnet 通过 WMI 获取系统信息

dotnet 通过 WMI 拿到显卡信息

dotnet 通过 WMI 获取系统安装软件

PowerShell 通过 WMI 获取系统服务

PowerShell 通过 WMI 获取系统安装软件

PowerShell 通过 WMI 获取系统信息

PowerShell 使用 WMI 获取信息

PowerShell 通过 WMI 获取系统安装的驱动

PowerShell 通过 WMI 获取设备厂商

PowerShell 通过 WMI 获取补丁

PowerShell 拿到显卡信息

跨平台开发

dotnet 5 判断当前程序运行在 Windows 系统 Linux 系统的简单方法

dotnet core 安装在 Redhat6 RHEL 6 或 CentOS 6 的方法

dotnet 在 Linux 下的 GDI 库对 EMF 图片格式的支持

dotnet 使用 XWT 构建跨平台客户端 入门篇

dotnet 测试在 Linux 系统上的 Environment.GetFolderPath 行为

dotnet 测试在 UOS Linux 上使用 Process Start 打开文件的行为

UOS

dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法

统信UOS系统部署.Net Core 5.0 - 火冰·瓶 - 博客园

Uos NetCoreSdk环境部署_uos生态适配的博客-CSDN博客_netcore部署环境

dotnet 在 UOS 国产系统上安装 Mono 开发工具的方法

dotnet 在 UOS 国产系统上安装 MonoDevelop 开发工具

dotnet 在 UOS 国产系统上使用 MonoDevelop 进行拖控件开发 GTK 应用

dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用

dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

dotnet 使用 Avalonia 开发 UOS 原生应用

dotnet 在国产 UOS 系统利用 dotnet tool 工具做文件传输

在 UOS 统信运行 dotnet 程序提示没有通过系统安全验证无法运行

dotnet 在 UOS 统信系统上运行 UNO 程序输入时闪烁黑屏问题

dotnet 统信 UOS 运行 UNO FrameBuffer 应用错误 Failed to open FrameBuffer device

一步步教你在 Windows 上构建 dotnet 系应用的 UOS 软件安装包 腾讯云开发者社区

Packaging.DebUOS 专门为 dotnet 应用制作 UOS 安装包

UNO

UNO UnoConf 2020 在线会议 了解全平台新开发框架 零距离接触官方开发者

从 WPF 搬迁到 UOS 下的 UNO 的笔记 腾讯云

使用 Uno Islands 在现有 WPF 里面嵌入 Uno 框架

UNO 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为

dotnet 如何将 Microsoft.Maui.Graphics 对接到 UNO 框架

dotnet 修复 Uno 中文乱码

dotnet 在 UOS 统信系统上运行 UNO 程序输入时闪烁黑屏问题

dotnet 统信 UOS 运行 UNO FrameBuffer 应用错误 Failed to open FrameBuffer device

dotnet UNO 如何在调试下输出界面层级结构

UNO.Skia.Gtk 设置窗口尺寸变化方法

UNO 设置平台进入全屏窗口模式的方法

从 Uno Platform 4 更新 Uno Platform 5 的迁移方法 腾讯云

UNO 新建基础库项目构建提示 UNOB0002 错误 腾讯云

UNO 已知问题 在后台线程触发 SKXamlCanvas 的 Invalidate 且在 PaintSurface 事件抛出异常将炸掉应用 腾讯云

UNO WinUI 已知问题 在 XAML 条件构建里将 win 平台加入 Ignorable 将构建失败

数据库

dotnet core 使用 ef 迁移常见问题

dotnet 如何调试 SmartSql 的实际执行 SQL 语句

dotnet 关于 SmartSql 的 SQL 语句的属性替换前缀说明

dotnet core 使用 sqlite 部署到 Centos 服务器

dotnet 禁用 SQLite 的 SQLiteFunction 扫描程序集提升启动性能

WPF

记录 WPF 开发的杂烩: WPF 开发

入门的教程: 什么是WPF - The complete WPF tutorial

WPF Application Compatibility switches list

WPF 通过 Switch.MS.Internal.EnableWeakEventMemoryImprovements 开关开启弱事件内存优化

WPF 使用 MAUI 的自绘制逻辑 博客园

WPF 切换主题使用 luna 复古版本

WPF 关于将 ManipulationDeltaEventArgs 的 Manipulators 属性返回值修改为 ReadOnlyCollection 类型的提议

dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架

wpf 单例

WPF 旋转太极

WPF 引用第三方库的控件在设计器加上设计时数据和属性

WPF 制作一个占用文件的测试工具

WPF 使用 MyScript 的 IInk 做手写识别

WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用

WPF 获取 MediaContext 的方法

WPF 在后台代码定义 ResourceDictionary 资源字典

WPF 启动屏幕键盘

WPF 修改屏幕亮度

WPF 附加属性提供某个元素拥有拖拽窗口的功能

WPF 获取屏幕某个点的颜色

WPF shows that some windows in multithreading will be locked in the PenThreadWorker constructor when the application starts

WPF 绑定密码

wpf 绑定 TextLength

WPF 修复 ContextMenu 在开启 PerMonitorV2 后所用 DPI 错误

WPF 使用RPC调用其他进程

WPF 从零开始开发 dotnet Remoting 程序

WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式

为何 WPF 对 vcruntime140 有引用

WPF 画布工具栏的可扩展设计

WPF 给任意控件通过按下移动抬起封装点击事件

WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法

WPF 鼠标光标大全

WPF 如何找到资源文件路径包含 # 号的文件

dotnet C# 获取一个可用的端口的方法

WPF 的 DefaultEventAttribute 有什么作用

dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用

WPF 列表控件数据源绑定多个数据集合方法

WPF 使用 ManipulationProcessor2D 纯数学计算方式提供多点漫游元素功能

WPF 使用 XmlDataProvider 提供数据

WPF 按钮 Button 的 IsEnabled 属性对 WindowChrome 的 IsHitTestVisibleInChrome 的影响

WPF 如何在静态资源定义字体大小

WPF 给应用程序添加水印

dotnet 使用 WpfAnalyzers 辅助分析 WPF 应用代码缺陷

WPF 列表右键菜单比较符合 MVVM 的命令绑定方法

WPF 下拉框选项做鼠标 Hover 预览效果

WPF 给 Grid 的辅助方法 添加行列名称绑定

WPF 后台代码做 TranslateTransform 的动画

WPF 给类库设置设计时使用的资源字典

WPF 形状的 StrokeThickness 属性对边框的影响

WPF 获取进程启动到当前现在的时间

WPF 将 docx 的 Word 文件转换为 FlowDocument 显示

WPF 为何不要重写默认 string 字符串的 DataTemplate 数据模版

WPF 漂亮的现代化控件 新 ModernWPF 界面库

WPF 使用基于 Chromium 内核的 Microsoft Edge 封装的 WebView2 控件

WPF 动画实战 点击时显示圆圈淡出效果

WPF 使用 TranslatePoint 换算元素之间相对坐标

WPF 讲讲 Microsoft.NET.Sdk.WindowsDesktop 的原理

WPF 设置元素为 Collapsed 是否会创建此元素

WPF 设置窗口不跟随触摸惯性拖动抖动

WPF 设置管理员权限启动

WPF 延迟加载

WPF Main thread gets a deadlock when stylus input thread is waiting for the window to close

WPF 开发自动开机启动程序

WPF 隐藏系统窗口菜单

wpf 绑定 DataGridTextColumn

wpf DoEvents

wpf PreviewTextInput 在鼠标输入获得 \u0003

WPF 运行时迁移 EF Core 数据库

WPF 轻量级 MVVM 框架入门 2.1.2

WPF 绑定命令在 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因

WPF 如何在绑定失败异常

WPF 元素裁剪 Clip 属性

WPF 托盘显示

WPF 如何判断一个控件在滚动条的里面是用户可见

WPF 绑定的默认模式

WPF 封装 dotnet remoting 调用其他进程

WPF 列表自动换行

WPF 如何建立自己的 3d gis 程序

WPF 在绑定表达式添加计算

WPF 修改 ItemContainerStyle 鼠标移动到未选中项效果和选中项背景

WPF 获取下载内容长度

WPF 拖动滚动

WPF 自定义 TextBoxView 的 Margin 大小

WPF 开发自动删除软件

WPF 鼠标移动到列表上 显示列表图标

WPF 省市县3级联动

WPF 好看的矢量图标

WPF 可获得焦点属性

WPF 判断USB插拔

WPF 修改按钮按下的颜色

WPF 读取硬件序列号

WPF 资源冻结

WPF 异常 NativeWPFDLLLoader.LoadNativeWPFDLL

WPF 只允许打开一个实例

WPF 使用 RawInput 接收裸数据

WPF How to get plain text from RichTextBox

WPF will break when an exception be throw in the StylusPlugIn

WPF 使用 Pandoc 把 Markdown 转 Docx

WPF 使用 Edge 浏览器

dotnet 简单方法在一个进程内同时跑起 WPF 和 ASP.NET Core 框架

WPF 从 RGB 字符串转纯色颜色画刷的方法

WPF 探索任务管理器的进程分组逻辑

WPF 性能测试

WPF 启动性能优化 在 EnsureHandle 之前设置 WindowStyle 提升性能

WPF 应用开发

这是记录我用 WPF 开发的一些应用

WPF 制作一个加密文件夹应用

WPF 简单实现一个支持删除自身的应用

WPF 触摸相关

我写了很多 WPF 触摸相关的博客,请参阅:

WPF 触摸相关

WPF dotnet core 如何开启 Pointer 消息的支持

WPF 如何确定应用程序开启了 Pointer 触摸消息的支持

WPF 开启 ScrollViewer 的触摸滚动

WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能

WPF 触摸下如何给 StylusPointCollection 添加点

WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来

控件

WPF checkbox文字下掉

WPF popup置顶

WPF 如何给 Grid 的某一行添加背景色

WPF 让 TextBox 支持水平滚动

WPF 控件 Content 的内容不显示下划线字符串

WPF 在image控件用鼠标拖拽出矩形

WPF 使用 ItemsPanel 修改方向

WPF ListBox 的选择

WPF 解决 ListView 的滚动条不显示

自定义控件

WPF 控件继承树

WPF 自定义控件入门 可重写的各个方法或属性的意义

WPF 自定义控件入门 Focusable 与焦点

WPF 手绘对称图形控件

WPF 滑动修改音量控件

【收藏】 WPF教学 WPF做出这样丝滑的动画尽然如此简单? Magic Navigation Bar 导航栏 哔哩哔哩_bilibili

控件库

WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果

WPF HandyControl 已支持给任意控件通过按下移动抬起封装点击事件

WPF 用 AvalonEdit 开发简单的代码编辑器 支持高亮自动提示

布局

WPF 布局 在有限空间内让两个元素尽可能撑开的例子

WPF 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为

WPF 等距布局

WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大

WrapPanel改进 - 老板娘的神秘商店 - 博客园

XAML

XAML 给资源起个好名字 用 StaticResource 起一个别名

WPF 在 XAML 写 C# 代码

WPF 通过辅助方法在 csharp 代码写出 XAML 界面效果

WPF 使用 Behavior 库辅助获取动态资源变更事件

dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容

WPF dotnet core 的 Blend SDK Behaviors 库

xaml 添加 region

WPF 点击按钮时更改按钮样式界面效果的 XAML 实现方法

图片

WPF 从文件创建图片的方法

WPF 从 DrawingVisual 转 BitmapImage 图片

WPF 修改图片颜色

WPF 通过位处理合并图片

WPF 图片移除视觉树内存泄漏

gif 格式

WPF 一个性能比较好的 gif 解析库

wpf 如何使用 Magick.NET 播放 gif 图片

wpf GifBitmapDecoder 解析 gif 格式

WPF 播放 gif

WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法

WPF 创建空白图片

WPF 使用不安全代码快速从数组转 WriteableBitmap

WPF 通过 EXIF 设置和读取图片的旋转信息

文本

WPF 文字描边

WPF 弹出 popup 里面的 TextBox 无法输入汉字

WPF 拼音输入法

WPF 获得当前输入法语言区域

WPF 设置输入只能英文

C# TextBlock 上标

dotnet OpenXML WPF 解析实现 PPT 文本描边效果

dotnet 解析 TTF 字体文件格式

WPF 从文件加载字体

WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本

WPF 获取本机所有字体拿到每个字符的宽度和高度

WPF 自定义文本框输入法 IME 跟随光标

文本库 聊聊行首光标的行为

dotnet C# 如何正确获取藏文的字数

WPF 字体 FontStyle 的 Italic 和 Oblique 的区别

线程

WPF 如何跨线程重新抛出异常

WPF 设置资源字典多线程安全读写方法

WPF 简单判断主线程界面是否卡顿的方法

WPF 多线程下跨线程处理 ObservableCollection 数据

WPF 跨线程 UI 的方法

wpf 使用 Dispatcher.Invoke 冻结窗口

WPF 使用 Dispatcher 的 InvokeAsync 和 BeginInvoke 的异常处理差别

窗口

WPF 一个空的 WPF 程序有多少个窗口

WPF 内部的5个窗口之 MediaContextNotificationWindow

WPF 获取应用的所有窗口

WPF 解决弹出模态窗口关闭后,主窗口不在最前

WPF 让窗口激活作为前台最上层窗口的方法

WPF 两个 Topmost 的窗口如何设置谁在最上方

WPF 获取某个窗口的所有子窗口

WPF 设置 ShowInTaskbar 对窗口最小化的影响

WPF 制作支持点击穿透的高性能的透明背景异形窗口

Win32 使用 SetCurrentProcessExplicitAppUserModelID 关联多个进程 在任务栏合并 WPF 多进程窗口

WPF 稳定的全屏化窗口方法

用 SetWindowPos 方法设置一个停止响应的窗口将卡调用方

WPF 全屏透明窗口

WPF 添加窗口消息钩子方法

WPF 在 Alt+Tab 隐藏窗口

WPF 获取全局所有窗口的创建显示事件 监控窗口打开

渲染

更多请看 WPF 渲染相关

WPF 如何画出1像素的线

WPF 解决 ViewBox 不显示线的问题

WPF 通过 DrawingContext DrawImage 绘制图片

WPF 如何在 WriteableBitmap 写文字

WPF 如何给定两个点画出一条波浪线

WPF DrawingVisual

WPF 如何判断两个 LinearGradientBrush 相等

WPF 在 DrawingContext 的 push 如何使用

WPF 设置纯软件渲染

WPF 笔刷绑定不上可能的原因

WPF 调用 InvalidateVisual 不触发 OnRender 的原因

WPF 解决 Skia 因为找不到字体而绘制不出中文字符

WPF 使用 Skia 绘制 WriteableBitmap 图片

WPF 如何获取有哪些 VisualBrush 用了某个控件

dotnet 在 WPF 里显示数学 π 的颜色

WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果

WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本

WPF 模拟 WPFMediaKit 的 D3D 配置用来测试4k性能

WPF 使用 Direct Manipulation 的方法

WPF 使用 Composition API 做高性能渲染

WPF 渲染级别

WPF 使用 Win2d 渲染

WPF 动画性能测试应用 一千个半透明矩形做动画

视频

WPF 使用 VideoDrawing 播放视频

[WPF] MediaElement播放HDR视频泛黄、颜色显示不正确应该如何解决? - 王_先_生 - 博客园

WinRT

WPF 不安装 WindowsAppSDK 使用 WinRT 功能的方法

修复 WPF 安装 WindowsAppSDK 库构建失败 NETSDK1082 和 NETSDK1112 找不到 win10-arm 失败

WPF 使用 Win10 的 WinRT 自带 Windows.Media.Ocr 实现图片转文本

WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能

UWP WinRT 使用系统自带的分词库对字符串文本进行分词

WPF 基础 2D 图形学知识

WPF 基础 2D 图形学知识

WPF 基础 2D 图形学知识 判断点是否在线段上

WPF 基础 2D 图形学知识 判断点是否在任意几何内部方法

WPF 基础 2D 图形学知识 求向量旋转角度

C# 判断两条直线距离

C# 已知点和向量,求距离的点

WPF 如何计算矩形内一个坐标相对另一个矩形的坐标

WPF 已知问题

WPF 已知问题 窗口在屏幕外创建将不会刷新渲染

WPF 已知问题 全屏透明窗口弹出子窗口会闪烁

WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流

wpf VisualBrush 已知问题

WPF 已知问题 Popup 吃掉 PreviewMouseDown 事件

WPF 已知问题 Popup 失焦后导致 ListBox 无法用 MouseWheel 滚动问题和解决方法

WPF 已知问题 资源字典树引用与资源寻找的坑

WPF 将 StaticResource 和 ResourceDictionary 放在一起的魔幻行为

WPF 被输入法带崩进程

WPF 加载诡异的字体无法布局

WPF 给 Pen 的 DashStyle 设置 0 0 的虚线数组将会让渲染线程消耗大量 CPU 资源

WPF 已知问题 包含 NaN 的 Geometry 几何可能导致渲染层抛出 UCEERR_RENDERTHREADFAILURE 异常

WPF 全屏窗口将让 Chrome 97 视频停止播放

WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常

WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等

WPF 类型的构造函数执行符合指定的绑定约束的调用时引发了异常

win7 无法启动 WPF 程序 D3Dcompiler_47.dll 丢失

WPF 使用 RenderTargetBitmap 快速截图出现 COMException 提示

WPF 新建用户控件提示 Error MC3000 首个 xaml 字符不合法

WPF 在窗口的 Deactivated 使用 Mouse 的 Capture 将会让进程失去交互

WPF 将控件放入到 UserControl 里获取 HwndSource 为空的情况

WPF 解决 PathTooLongException 路径太长

WPF 设置 WS_EX_TRANSPARENT 触摸失效

WPF 解决 StylusPlugIn 点击穿透问题

WPF 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移

WPF 网络 request 的 read 方法不会返回

WPF 光标初始化的时候 temp 文件夹满了无法创建

WPF 拖动时出现 Invalid FORMATETC structure

WPF Process.Start 出现 Win32Exception 异常

WPF 已知问题 InputEventArgs 的 Timestamp 属性是静态的导致事件之间相互影响

WPF Frame 的 DataContext 不能被 Page 继承

WPF DelegateCommand 出现Specified cast is not valid

WPF 使用 VisualBrush 在 4k 加 200 DPI 设备上某些文本不渲染看不见问题

记 Win8.1 某应用渲染抛出 OutOfMemoryException 异常及修复方法

WPF 界面打不开提示 System.ArithmeticException Overflow or underflow in the arithmetic operation 异常

WPF 警惕使用 Dispatcher.InvokeShutdown 方法退出应用 将不触发 Application.Exit 事件

WPF 已知问题 传入错误数据给到 WriteableBitmap 可能导致渲染线程锁住

WPF 已知问题 Separator 无法应用 ContextMenu 定义的默认样式

WPF 已知问题 清空 CollectionView 的 SortDescriptions 可能抛出空异常

WPF 已知问题 在 ObservableCollection 的 CollectionChanged 修改集合内容将让 UI 显示错误

WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续的 Click 事件

WPF 已知问题 在 WIC 层处理异常图片时 可能由于出现未处理异常导致进程退出

已知驱动问题

记因为 NVIDIA 显驱错误而让 WPF 应用启动闪退问题

WPF 的 WriteableBitmap 在 Intel 11 代 Iris Xe Graphics 核显设备上停止渲染 腾讯云

WPF 的 Viewport3D 等 3D 模块在带 Intel UHD 770 设备上抛出渲染异常 腾讯云

记 Intel 的 31.0.101.5186 版本驱动带崩 WPF 程序

各版本已知问题和新功能

以下的版本记录的是新功能加入的版本,以及发现问题的版本。有些问题会延续多个版本,不代表新版本就没有对应的问题,具体问题修复版本请参阅具体的博客

dotnet core 3.1

WPF 升级 .NET Core 的理由

WPF 双向绑定到非公开 set 方法属性在 NET 45 和 NET Core 行为的不同

从 dotnet core 3.0 的特性让 WPF 布局失效讨论 API 兼容

WPF 在 .NET Core 3.1.19 版本 触摸笔迹偏移问题

WPF 在 .NET Core 3.1.19 版本没有跟随 DPI 缩放文本过小问题

dotnet core 3.1 将 UWP 控件嵌入到 WPF 应用 收到 UIA 消息主线程卡住

dotnet 5

WPF 从 dotnet core 3 到 dotnet 5 的变更

dotnet 5 让 WPF 调用 WindowsRuntime 方法

dotnet 6

WPF 已知问题 dotnet 6 设置 InvariantGlobalization 之后将丢失默认绑定转换导致 XAML 抛出异常

WPF dotnet 6 开启 PM v2 的 DPI 感知 导致触摸线程访问 UI 属性抛异常

WPF 修复引用库报错 所使用的 PresentationFramework 6.0.2 高于所引用的标识为 6.0.0 程序集

dotnet 7

dotnet 7 WPF 破坏性改动 按下 F3 让 DataGrid 自动排序

dotnet 7 已知问题 WPF 的 TreeView 开启虚拟化之后只显示首项

dotnet 8

dotnet 8 WPF 支持在 RDP 远程桌面状态下启用渲染硬件加速 博客园

构建发布

WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目

WPF 编译为 AnyCPU 和 x86 有什么区别

WPF 通过 ReadyToRun 提升性能

WPF 基于 .NET 5 框架和 .NET 6 的 SDK 进行完全单文件发布

WPF 修复 dotnet 6 与源代码包冲突

WPF 设置 IncludePackageReferencesDuringMarkupCompilation 属性导致分析器不工作

WPF 通过 dotnet core 发布单文件时 log4net 无法使用

WPF 程序生成类库错误

WPF 项目文件不加 -windows 的引用 WPF 框架方式

打包 UWP 应用

WPF 判断当前应用被打包为 UWP 而运行

WPF 引用 UWP 控件 不打包为 MSIX 分发的方法

WPF 调试

WPF 依赖属性绑定不上调试方法

WPF 如何调试 binding

WPF 调试因为对象不同而绑定失效问题

WPF 基于 WER 注册应用崩溃无响应回调和重启方法

WPF 调试 获得追踪输出

WPF 判断调用方法堆栈

WPF 某个界面或控件在界面找不到看不到可能的原因

WPF 获取是哪个进程占用了文件

WPF 如何知道当前有多少个 DispatcherTimer 在运行

Windows 下的 WPF 开发 调试应用程序在什么时机加载了 Dll 模块

WPF 如何在应用程序调试启动

读 WPF 源代码

WPF 源代码 从零开始写一个 UI 框架

dotnet 读 WPF 源代码笔记 布局时 Arrange 如何影响元素渲染坐标

dotnet 读 WPF 源代码笔记 为什么自定义的 UserControl 用户控件不能跨程序集继承

dotnet 读 WPF 源代码笔记 WPF 是如何做到一套代码兼容多个 .NET Framework 版本

dotnet 读 WPF 源代码笔记 为什么加上 BooleanBoxes 类

WPF 从最底层源代码了解 AllowsTransparency 性能差的原因

dotnet 读 WPF 源代码笔记 渲染收集是如何触发

dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程

dotnet 读 WPF 源代码笔记 提升调试效率的 NamedObject 类型

dotnet 读 WPF 源代码笔记 插入触摸设备的初始化获取设备信息

dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 用户设备上不存在 Arial 字体将导致应用闪退

dotnet 读 WPF 源代码笔记 WriteableBitmap 的渲染和更新是如何实现

dotnet 读 WPF 源代码笔记 创建 SolidColorBrush 性能没有想象那么差

dotnet 读 WPF 源代码笔记 默认的 Main 函数是在哪创建的

dotnet 读 WPF 源代码笔记 为什么设置了SplashScreen会让Application.Current.Activated事件不触发

dotnet 读 WPF 源代码笔记 SafeMILHandleMemoryPressure 的作用

dotnet 读 WPF 源代码笔记 为什么默认的笔迹触摸点的压感是 0.5 的值

dotnet 读 WPF 源代码笔记 Stroke 类可能存在的内存泄露

dotnet 读 WPF 源代码笔记 XAML 创建对象的方法

dotnet 读 WPF 源代码笔记 使用 Win32 方法修改窗口的坐标和大小对窗口依赖属性的影响

dotnet 读 WPF 源代码笔记 AppDomainShutdownMonitor 的设计

dotnet 读 WPF 源代码笔记 启动欢迎界面 SplashScreen 的原理

dotnet 读 WPF 源代码笔记 wpfgfx_cor3.dll 是什么文件

dotnet 读 WPF 源代码笔记 WIC 多媒体图片处理通过 WindowsCodecs.dll 实现功能

dotnet Framework 源代码 · Ink

dotnet Framework 源代码 · ScrollViewer

dotnet 读 WPF 源代码 Popup 的 StaysOpen 为 false 将会吃掉其他窗口的首次激活

dotnet 读 WPF 源代码 聊聊 DispatcherTimer 的实现

WPF 源代码 资源字典 ResourceDictionary 设置 Source 属性的逻辑

dotnet 读 WPF 源代码笔记 聊聊 HwndWrapper.GetGCMemMessage 调试消息

WPF 冷知识 定义依赖属性的最大数量是 65534 个

WPF UncommonField 类型是什么

WPF 框架开发 ColumnDefinition 和 RowDefinition 的代码在哪

文本

dotnet 读 WPF 源代码笔记 简单聊聊文本布局换行逻辑

dotnet 读 WPF 源代码笔记 GlyphRun 的 DeviceFontName 的功能是什么

dotnet 读 WPF 源代码笔记 渲染层是如何将字符 GlyphRun 画出来的

WPF 框架开发

手把手教你如何构建 WPF 官方开源框架源代码

手把手教你构建 WPF 框架的私有版本

WPF 框架全构建环境虚拟机硬盘分享

WPF 最简方法使用自己定制的 WPF 框架

WPF 框架开发 WPF 的构建在哪使用到 Perl 工具

WPF 框架开发 更改 API 之后让 CI 重新创建 API 兼容检查基准

WPF 框架开发 加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员

WPF 框架开发 调试和开发 System.Xaml 的独立项目方法

WPF 框架开发 调试和开发 XAML 构建过程的 PresentationBuildTasks 方法

UWP

从零开始学习入门 Windows 10 应用程序 UWP 开发

win10 uwp 入门

win10 uwp 如何开始写 uwp 程序

UWP 开发中,需要知道的1000个问题

UWP 和 WPF 对比

win10 uwp 选择文本转语音的机器人

win10 uwp 颜色转换

win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序

win10 uwp 如何判断一个控件在滚动条的里面是用户可见

win10 uwp 列表模板选择器 win10 UWP Controls by function

win10 uwp 提示 Cannot find a Resource with the Name Key 找不到资源

win10 uwp 通过命令行脚本开启旁加载

win10 uwp 访问解决方案文件

win10 uwp 录制任意应用屏幕

win10 uwp 非ui线程访问 ui

win10 uwp 睡眠唤醒

win10 uwp 收集 DUMP 文件

本文说如何显示SVG

UWP how to get the touch width

win10 uwp listView 绑定前一项

win10 uwp 字符文本转语音声音文件方法

win10 uwp 捕获后台线程异常

如何在 UWP 使用 wpf 的 Trigger

win10 uwp 从 Unity 创建

win32 嵌入第三方 UWP 应用做开放平台

win10 uwp 如何给 DropDownButton 一个很小的宽度

win10 uwp 使用 OCR 光学字符识别

win10 uwp 相机的分辨率设置方法

win10 uwp 如何修改 Flyout 的宽度或高度

win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容

UWP 写入图片 Exif 信息

win10 uwp 不显示 SplashScreen 欢迎界面的方法

win10 UWP 等级控件

win10 uwp 通知列表

win10 uwp 使用 asp dotnet core 做图床服务器客户端

win10 uwp 显示SVG

win10 uwp 求两个矩形相连的几何

win10 uwp 获取窗口的坐标和宽度高度

UWP 分享用那个图标

win10 uwp 如何使用DataTemplate

win10 uwp 打包第三方字体到应用

win10 uwp 右击浮出窗在点击位置

win10 uwp 读取保存WriteableBitmap 、BitmapImage

win10 uwp 资源字典

win10 UWP 序列化

win10 uwp 如何打包Nuget给其他人

win10 UWP 动画

win10 uwp 依赖属性

win10 uwp x:Bind 无法获得资源

win10 uwp 好看的时间选择控件

win10 uwp 读取文本GBK错误

win10 UWP 使用 MD5算法

win10 uwp 在笔迹开始书写拿到书写移动事件

win10 uwp 处理用户点击关闭按钮

win10 uwp 解决 SerialDevice.FromIdAsync 返回空

win10 uwp 未给任务 GenerateAppxPackageRecipe 的必需参数 AppxManifestXml 赋值

win10 uwp 开发 CSDN 访问量统计 源代码

win10 uwp 应用放到桌面

win10 uwp 自定义标记扩展

win10 uwp 如何将像素数组转 png 文件

win10 uwp 如何自定义 RichTextBlock 右键菜单

win10 uwp 鼠标移动到图片上切换图片

win10 uwp 渲染原理 DirectComposition 渲染

win10 uwp 客户端如何发送类到 asp dotnet core 作为参数

win10 uwp 禁用 ScrollViewer 交互

win10 uwp 在 xaml 让 TextBlock 换行

win10 uwp 异步转同步

win10 uwp 自定义控件入门

win10 UWP 剪贴板 Clipboard

win10 UWP 标题栏后退

win10 uwp 验证输入 自定义用户控件

win10 uwp 重启软件

win10 uwp 退出程序

win10 uwp 进度条 WaveProgressControl

win10 uwp 进度条 Marquez

win10 uwp 读写XML

win10 uwp 萤火虫效果

win10 uwp 获得缩略图

win10 uwp 获得元素绝对坐标

win10 uwp 获取文件夹出错

win10 uwp 自定义控件初始化

win10 uwp 绘图 Line 控件使用

win10 uwp 绑定 OneWay 无法使用

win10 uwp 线程池

win10 uwp 禁止编译器优化代码

win10 uwp 气泡

win10 uwp 毛玻璃

win10 uwp 横向 AppBarButton

win10 uwp 按下等待按钮

win10 uwp 拖动控件

win10 uwp 打开文件管理器选择文件

win10 uwp 如何让一个集合按照需要的顺序进行排序

win10 uwp 如何在DataTemplate绑定方法

win10 uwp 如何判断一个对象被移除

win10 uwp 如何创建修改保存位图

win10 uwp dataGrid

win10 uwp Window.Current.Dispatcher中Current为null

win10 uwp App-to-app communication 应用通信

win10 uwp 调用 Microsoft.Windows.Photos_8wekyb3d8bbwe 应用

win10 UWP 全屏

win10 uwp 使用油墨输入

win10 uwp 设置 HttpClient 浏览器标识

win10 uwp 音频

win10 uwp 读写csv

win10 uwp 设置启动窗口大小 获取窗口大小

win10 uwp 让焦点在点击在页面空白处时回到textbox中

win10 uwp 获得Slider拖动结束的值

win10 uwp 获取按钮鼠标左键按下

win10 uwp 获取指定的文件 AQS

win10 uwp 自定义控件 SplitViewItem

win10 uwp 网络编程

win10 uwp 绑定静态属性

win10 uwp 绑定密码

win10 uwp 简单MasterDetail

win10 uwp 活动磁贴

win10 uwp 模拟网页输入

win10 uwp 改变鼠标

win10 uwp 手动锁Bitlocker

win10 uwp 异步进度条

win10 uwp 如何让WebView标识win10手机

win10 uwp 如何让 Page 继承泛型类

win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock

win10 uwp 圆角按钮

win10 uwp 判断文件存在

win10 uwp 分治法

win10 uwp 从Type使用构造

win10 uwp 从StorageFile获取文件大小

win10 uwp 上传Nuget 让别人用我们的库

win10 uwp iot

win10 uwp InkCanvas控件数据绑定

win10 uwp HttpClient post错误

win10 uwp ContentDialog 点确定不关闭

win10 uwp BadgeLogo 颜色

win10 UWP 应用设置

win10 UWP 单元测试

win10 UWP MessageDialog 和 ContentDialog

win10 UWP Hmac

win 10 UWP 标签

Win10 UWP Intro to controls and events

win10 uwp 参考

win10 uwp 修改CalendarDatePicker图标颜色

win10 uwp 关联文件

win10 uwp 发布旁加载自动更新

win10 uwp 在 Grid 接收键盘消息

win10 uwp 切换主题

win10 uwp 使用 Microsoft.Graph 发送邮件

win10 uwp 动画移动滑动条的滑块

UWP 从文件 StorageFile 转 SoftwareBitmap 图片方法

win10 uwp 修改图片质量压缩图片

win10 uwp 在 ItemsPanelTemplate 里面通过样式绑定 Orientation 显示方向

uwp ScrollViewer content out of panel when set the long width

win10 uwp 使用 ScaleTransform 放大某个元素

win10 uwp 一张图说明水平对齐和垂直对齐

win10 uwp 使用 LayoutTransformer

win10 uwp 去掉 Flyout 边框

win10 uwp release 因为 Entry Point Not Found 无法启动

win10 uwp 使用 Matrix3DProjection 进行 3d 投影

控件

三种方式设置特定设备UWP XAML view

win10 uwp 在 Canvas 放一个超过大小的元素会不会被裁剪

win10 uwp 后台获取资源

win10 uwp 反射

win10 uwp 修改Pivot Header 颜色

win10 uwp 使用资源在后台创建控件

win10 uwp 使用动画修改 Grid column 的宽度

win10 uwp 使用 Geometry resources 在 xaml

win10 uwp slider 隐藏显示数值

win10 uwp ping

win10 uwp json

win10 uwp httpClient 登陆CSDN

win10 uwp MetroLog 入门

win10 uwp MVVM 语义耦合

win10 uwp DataContext

win10 uwp ApplicationView

win10 sdk 是否向下兼容

win10 UWP 访问网页

win10 UWP 用Path画图

win10 UWP 圆形等待

win10 UWP 发邮件

win10 UWP 修改密码框文字水平

win10 UWP button

win10 UWP ListView

win10 uwp xaml 兼容多个版本条件编译

win10 uwp url encode

win10 uwp 使用 Border 布局

win10 uwp xaml 绑定接口

win10 uwp 动态修改ListView元素布局

win10 uwp 图标制作器

win10 uwp 右击选择 GridViewItem

win10 uwp 判断设备类型

win10 uwp unix timestamp 时间戳 转 DateTime

win10 uwp hashcash

win10 UWP 显示地图

win10 UWP 你写我读

win10 UWP 九幽登录

win10 UWP 九幽数据分析

win10 UWP Markdown 含源代码

win10 UWP ListView 模仿开始菜单

win10 UWP 蜘蛛网效果

Win10 使用 GHO 安装出现 UWP 软件打开闪退 应用商店无法安装软件

UWP WPF 解决 xaml 设计显示异常

win10 uwp 隐私声明

win10 uwp 随着数字变化颜色控件

win10 uwp 车表盘 径向规

win10 uwp 获得焦点改变

win10 uwp 标题栏

win10 uwp 打电话

win10 uwp 截图 获取屏幕显示界面保存图片

UWP 转换 IBuffer 和其他类型

How to use code to exit the application in UWP

UWP How to custom RichTextBlock right click menu

UWP IRandomAccessStream 与 Stream 互转

win10 uwp 弹起键盘不隐藏界面元素

win10 uwp 应用转后台清理内存

win10 uwp 布局

win10 uwp 存放网络图片到本地

win10 uwp 切换主题

win10 uwp 兴趣线

win10 uwp 保存用户选择文件夹

win10 uwp 九幽图床

win10 uwp Markdown

win10 uwp 用广告赚钱

win10 uwp Fluent Design System 实践

win10 uwp smms图床

UWP WinUI3 传入 AddHandler 的 RoutedEventHandler 类型与事件所需不匹配将抛出参数异常

MVVM

win10 UWP MvvmLight入门

win10 uwp MVVM入门

win10 uwp MVVM 轻量框架

win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199

构建部署

win10 uwp 发布的时候 ILC 编译不通过

win10 uwp 使用 AppCenter 自动构建

win10 uwp 使用 Azure DevOps 自动构建

win10 uwp 在 VisualStudio 部署失败,找不到 Windows Phone 可能的原因

UWP 打包 win32 应用 添加防火墙例外

WPF 打包为 UWP 应用构建失败 MSB3270 不匹配 AMD64 架构

win10 uwp 使用 msbuild 命令行编译 UWP 程序

修复 WPF 安装 WindowsAppSDK 库构建失败 NETSDK1082 和 NETSDK1112 找不到 win10-arm 失败

发布

如何在国内发布 UWP 应用

加强版在国内分发 UWP 应用正确方式 通过win32安装UWP应用

UWP 上架失败因为没有添加隐私策略

win10 uwp 在 VisualStudio 打包测试完成自动上传到应用商店

win10 uwp 应用包上传失败无效的软件包系列名称

win10 uwp 安装文件 appinstaller 格式

调试

win10 uwp 调试软件启动

win10 uwp 隐藏实时可视化

win10 uwp 无法附加到CoreCLR

win10 uwp 使用 WinDbg 调试

应用开发

俄罗斯方块

win10 uwp 商业游戏

win10 uwp 商业游戏 1.1.5

win10 uwp 商业游戏 1.2.1

win10 uwp 装机必备应用 含源代码

win10 UWP RSS阅读器

win10 uwp csdn 博客阅读器

私密密码本 2.1 源代码

Win2D

win10 uwp win2d 入门 看这一篇就够了

win10 uwp win2d 离屏渲染

win2d CanvasRenderTarget vs CanvasBitmap

win10 uwp win2d 使用 Path 绘制界面

win10 uwp win2d CanvasVirtualControl 与 CanvasAnimatedControl

win10 uwp 通过 win2d 画出笔迹

win10 uwp 通过 Win2d 完全控制笔迹绘制逻辑

win10 uwp win2d 特效

win2d 通过 CanvasActiveLayer 画出透明度和裁剪

win2d 图片水印

win2d CanvasCommandList 使用方法

win2d 画出好看的图形

win2d 渐变颜色

WinUI 3

C# 从控制台创建 WinUI 3 应用

WinUI 3 修复非打包应用运行提示缺少 Windows App Runtime 环境

WinForms

WinForms 使用 Image 的 FromFile 方法加载文件和使用 Bitmap 有什么不同

WinForms 下的高性能笔迹方法

Winforms 可能遇到的 1000 个问题

C# winforms 输入颜色转换颜色名

MAUI

dotnet Multi-platform App UI 多平台应用 UI 框架简介

MAUI 自定义绘图入门

WPF 使用 MAUI 的自绘制逻辑 博客园

dotnet 控制台 使用 Microsoft.Maui.Graphics 配合 Skia 进行绘图入门 博客园

Microsoft.Maui.Graphics.Skia 使用 DrawString 绘制文本的坐标问题

MAUI中使用Maui.Graphics.Controls绘制控件 - 痕迹g - 博客园

dotnet OpenXML 使用 MAUI 渲染 PPT 的面积图图表 博客园

MAUI 已知问题 PathFigureCollectionConverter 非线程安全

MAUI 框架开发

MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里

读 MAUI 源代码 理解可绑定对象和可绑定属性的存储机制

Xamarin

Xamarin.Forms 选取文件 让用户选择本地文件

Xamarin iOS 部署应用提示 iOS code signing key 失败

Xamarin 和 WPF 的控件和属性的替换

Xamarin 构建安卓失败 因为路径太长

Xamarin 构建提示 error APT2260 resource 找不到资源

Xamarin iOS 切换开发者账号之后的签名标识和预配配置文件更新方法

Xamarin.Forms 按钮样式 圆角按钮

Xamarin 解决创建空白项目编译提示 linking references 找不到资源

Xamarin Forms WPF 干掉默认的窗口导航条

Xamarin iOS 部署版本大于手机的系统版本

Xamarin iOS 部署项目提示 Failed to register bundle identifier 失败

Xamarin XamlCTask 任务不支持 ValidateOnly 参数

Xamarin 使用 GTK 提示找不到 libglib-2.0-0.dll 找不到

Xamarin 从零开始部署 iOS 上的 Walterlv.CloudKeyboard 应用

Xamarin Forms 进度条控件

Xamarin Forms 4.7 支持更简化的 Grid 行列布局写法

Xamarin Forms 构建 WPF 版项目失败提示 XamlC error XFC0000 错误

WPF 从零手动创建承载 Xamarin Forms 项目

Mac 升级到 dotnet 5 构建 Xamarin 应用失败 error MSB4186 静态方法调用语法无效

Unity3D

Unity3d 入门 控制相机移动

Unity3D 用对象创建对象

Unity3D 判断点击命中物体对象和命中环境

Unity3d 修改编辑界面控制图标大小 修改相机图标显示大小

Unity3d 连续按键处理和单次按键处理

Unity3d 制作一个立体旋转相册

Unity3D 2019 设置的 Playmode tint 有何作用

Unity3d 2019.3 通过 Ctrl 键让移动是固定步距

Unity 2019.3 将 RenderTexture 绑定到相机和物体作出镜子效果

VR

Unity3D OpenVR SteamVR 在头盔视觉前面常驻文本

Unity3D OpenVR SteamVR 点击菜单切换场景

Unity3D OpenVR SteamVR 获取输入动作按键 交互设备数据方法

Unity3D OpenVR SteamVR Input Action 动作

Unity3D OpenVR 虚拟现实 保龄球打砖块游戏开发

SemanticKernel

dotnet SemanticKernel 入门 开篇

dotnet SemanticKernel 入门 调用原生本机技能

dotnet SemanticKernel 入门 将技能导入框架

dotnet SemanticKernel 入门 注入日志

dotnet SemanticKernel 入门 自定义变量和技能

应用

SemanticKernel 将 LLM 自然语言函数和传统编程融合到一起

原理

dotnet 探究 SemanticKernel 的 planner 的原理 博客园

ASP.NET Core

asp dotnet core 从零开始创建一个 WebApi 服务

dotnet 三句命令行创建运行一个 web 服务程序

asp dotnet core 限制接口只能本机访问的方法

asp dotnet core 基于 TestServer 做集成测试

ASP.NET Core 引用其他程序集项目里面的 Controller 控制器

ASP.NET Core 将文件夹内容输出为压缩包文件方法

ASP.NET Core 因为 Nginx 配置 Connection 为 Upgrade 导致 Kestrel 返回 400 错误

ASP.NET Core 警惕可空类型开启之后模型校验失败

asp dotnet core 3.0 接口返回 json 使用 PascalCase 格式

asp dotnet core 不正经的提升效率的单元测试方法

asp dotnet core 记一次应用拒绝响应调试 开启线程等待同步用光线程池

asp dotnet core 提供大文件下载的测试

[ASP.NET Core 解决控制台输出日志内容前面40m等乱码字符

asp dotnet core 提示 Cannot access a disposed object 解决方法

WPF 和 ASP.NET Core 通过 elastic APM 上报信息

当 ASP.NET Core 链接找不到时可能的原因

asp dotnet core 从 Frp 获取用户真实 IP 地址

asp dotnet core 实现服务器发送事件 Server-Sent Events 简单方式

asp dotnet core 通过图片统计 csdn 用户访问

asp dotnet core 简单开发P2P中央服务器

asp dotnet core 支持客户端上传文件

ASP.NET Core 6 浅析环境变量与配置的优先级

asp dotnet core 图片在浏览器没访问可能原因

ASP.NET Core 开启后台任务

ASP.NET Core 写一个能够接收所有请求路径的测试服务

dotnet 给MatterMost订阅RSS博客

Blazor

.NET Core 用 Blazor 做 jmeter 系列视频

dotnet Blazor 用 C# 控制界面行为

Blazor 获取当前的 Url 链接

Blazor 的 NavLink 的 NavLinkMatch.Prefix 有啥作用

Blazor 的 NavLink 提示 RZ9986 不支持复杂内容

Blazor 如何使用代码跳转链接

dotnet 将C#编译为wasm让前端html使用

渲染

SharpDx

渲染部分,关于 SharpDx 使用,包括入门级教程,请参阅:

现在 SharpDx 已经不维护了,如果还需要在 C# 使用 Dx 相关技术,可以使用 SharpDx 的代替项目 列出的替代项目

Vortice

由于 SharpDx 已经不维护了,可使用 Vortice 替换,以下是 Vortice 的博客

更多关于 DirectX 相关,请参阅 DirectX 官方博客: DirectX Landing Page - DirectX Developer Blog

Skia

dotnet 修复在 Linux 上使用 SkiaSharp 提示找不到 liblibSkiaSharp 库

WPF 解决 Skia 因为找不到字体而绘制不出中文字符

WPF 使用 Skia 绘制 WriteableBitmap 图片

WPF 自己封装 Skia 差量绘制控件

WPF 使用 Skia 解析绘制 SVG 图片

dotnet 控制台 使用 Microsoft.Maui.Graphics 配合 Skia 进行绘图入门

Microsoft.Maui.Graphics.Skia 使用 DrawString 绘制文本的坐标问题

SkiaSharp 渲染输出 SVG 文件

SkiaSharp跨平台绘图研究1-WPF桌面应用 - SunnyTrudeau - 博客园

SkiaSharp跨平台绘图研究2-Xamarin.Forms移动应用 - SunnyTrudeau - 博客园

SkiaSharp跨平台绘图研究3-Asp.Net Core网站 - SunnyTrudeau - 博客园

SkiaSharp跨平台绘图研究4-在PDF上绘图 - SunnyTrudeau - 博客园

SkiaSharp跨平台绘图研究5-Blazor WebAssembly网页绘图 - SunnyTrudeau - 博客园

Docker环境下使用SkiaSharp的2种方式 - 从零开始-DotNET技术 - 博客园

WPF 渲染相关

我写了一些关于 WPF 底层渲染和渲染定制以及 WPF 与其他渲染库对接的博客,请参阅: WPF 底层渲染_lindexi_gd的博客-CSDN博客

WPF 渲染原理

WPF 使用 SharpDx 渲染博客导航

从 DX 层面讲 WPF 渲染卡顿

Windows 核心编程笔记 Direct2D 比 GDI 快的一部分

WPF 使用 SharpDX 在 D3DImage 显示

Silk.NET

WPF 使用 Silk.NET 进行 DirectX 渲染入门

WPF 使用 Silk.NET 进行 Direct2D 渲染入门

使用 Silk.NET 创建 OpenGL 空窗口项目例子

OpenTK

OpenTK 入门 初始化窗口

OpenTK 入门 Vsync 垂直同步对刷新率的影响

OpenXML

使用 OpenXML 可以对 Office 文档进行底层的处理,相关博客比较多,请参阅:

Office 使用 OpenXML SDK 解析文档博客目录

调试

代码的调试方法,常用的套路和经验

入门的大博客: dotnet 代码调试方法

dotnet 调试应用启动闪退的方法

记因为 NVIDIA 显驱错误而让 WPF 应用启动闪退问题

记一次调试资源管理器未响应经验

VisualStudio 调试内存泄漏方法

VisualStudio 开启仅我代码调试

WinDbg 加载 dotnet core 的 sos.dll 辅助调试方法

WinDbg 设置在加载到某个 DLL 进入断点

优雅调试 REST API 的工具

调试时限制程序使用 CPU 核心数模拟低端设备

断点调试 Windows 源代码

在 Windows 下那些好用的调试软件

调试 ms 源代码

dotnet 如何调试某个文件是哪个代码创建

dotnet core 输出调试信息到 DebugView 软件

VisualStudio 使用 FastTunnel 辅助搭建远程调试环境

Windows

Windows 通过编辑注册表设置左右手使用习惯更改 Popup 弹出位置

win10 安装Mpi

影子系统让 C++ 程序无法运行

安装 Sureface Hub 系统 Windows 10 team PPIPro 系统

如何在 Windows 10 中移除 Internet Explorer 浏览器

恢复 U 盘隐藏文件夹

国内好用的 DNS 列表

windows 10预览版升级win10 7月29 10240.16384

windows-10「设置」应用完整ms-settings快捷方式汇总.md

win10 本地适配器不支持重要的低能耗控制器状态

win10 使用 SMB v1

windows 应用程序在关机时的退出代号

win7 升级到 win10 补丁

Windows 10 16251 添加的 api

解决 Win10 UWP 无法使用 ss 连接

微软各版本系统不再维护时间

如何让 USB 设备不显示安全删除硬件弹出选项

手机1520 win8.1升级win10

Windows 对全屏应用的优化

使用 DISM 安全清理 C 盘 WinSxS 文件夹空间

Windows 编程

win10 17025 触摸bug

Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式

用 SetWindowPos 方法设置一个停止响应的窗口将卡调用方

Windows 的 Pen 协议

XP 源代码 如何在清空回收站时修改回收站图标

Windows 核心编程笔记 Direct2D 比 GDI 快的一部分

如何让软件以 System 权限运行

dotnet 删除自身程序的方法

dotnet 判断程序当前使用管理员运行降低权使用普通权限运行

C# 通过编程的方法在桌面创建回收站快捷方式

dotnet core 导出 COM 组件

C# 判断系统版本

Win32 使用 CreateProcess 方法让任务管理器里的命令行不显示应用文件路径

如何替换一个 exe 的图标

win 消息

剪贴板被占用导致应用使用剪贴板拷贝内容失败抛出 COMException 0x800401D0 错误

C# 息屏操作出现闪屏 - 唐宋元明清2188 - 博客园

WIC

dotnet 在 Windows 系统上使用 stakx 的 WIC 库

dotnet win32 使用 WIC 获取系统编解码器

WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法

WPF 对接 Vortice 调用 WIC 加载图片

UIA

UI自动化 — 微软UI Automation - NiueryDiary - 博客园

UI自动化 — UI Automation 基础详解 - NiueryDiary - 博客园

测试

dotnet 单元测试注入文件读写

dotnet 如何在 dotnet test 单元测试控制台里输出日志内容

dotnet 单元测试 Mock 让一个对象继承多个接口

win10 UWP 单元测试

dotnet 集成测试 SmartSql 存在静态量导致多个主机启动提示 Alias 已存在

asp dotnet core 提供大文件下载的测试

asp dotnet core 不正经的提升效率的单元测试方法

asp dotnet core 基于 TestServer 做集成测试

dotnet 使用 MSTestRunner 将单元测试制作为独立可执行文件

性能测试

C# 标准性能测试

C# 标准性能测试高级用法

dotnet 6 数组拷贝性能对比

dotnet C# 字典 Dictionary 和 Hashtable 的性能对比

dotnet 5 静态字段和属性的反射获取 没有想象中那么伤性能

dotnet C# 链表和字典的性能对比

C# 程序集数量对软件启动性能的影响

C# 直接创建多个类和使用反射创建类的性能

C# 性能分析 反射 VS 配置文件 VS 预编译

C# 程序内的类数量对程序启动的影响

C# 配置文件存储 各种序列化算法性能比较

C# 字典 Dictionary 的 TryGetValue 与先判断 ContainsKey 然后 Get 的性能对比

dotnet ConcurrentDictionary 的 GetOrAdd 性能比 TryGetValue 加 TryAdd 低

WPF 动画性能测试应用 一千个半透明矩形做动画

测试工具

C# 自动翻页 PPT 测试脚本

WPF 制作一个占用文件的测试工具

GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性

测试框架

dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架

dotnet 如何在 Mock 模拟 Func 判断调用次数

Moq基础 判断方法被执行

Autofac 集成测试

Autofac 通过 PreserveExistingDefaults 解决单元测试 Fake 对象被覆盖

Autofac 集成测试 在 ConfigureContainer 之后进行 Mock 注入

打包构建

编译器

我写了很多关于 Roslyn 相关的博客,请参阅:

手把手教你写 Roslyn 修改编译博客导航

高度定制编译器: dotnet 通过引用 msbuild 程序集实现自己定制编译器

Roslyn MSBuild 在构建完成之后 将构建时间写入到输出文件

生成代码

大佬收藏的 Source Generators 列表: amis92/csharp-source-generators: A list of C# Source Generators (not necessarily awesome) and associated resources: articles, talks, demos.

IIncrementalGenerator 增量 Source Generator 生成代码入门 读取 csproj 项目文件的属性配置

尝试 IIncrementalGenerator 进行增量 Source Generator 生成代码

为 IIncrementalGenerator 增量 Source Generator 源代码生成项目添加单元测试

dotnet 使用 IndentedTextWriter 辅助生成代码时生成带缩进的内容

IIncrementalGenerator 增量 Source Generator 生成代码入门 获取引用程序集的所有类型

IIncrementalGenerator 增量 Source Generator 生成代码入门 判断程序集之间的 InternalsVisibleTo 关系

IIncrementalGenerator 增量 Source Generator 生成代码入门 获取项目默认命名空间

IIncrementalGenerator 增量 Source Generator 生成代码入门 读取解析 ValueTuple 的定义

IIncrementalGenerator 增量 Source Generator 生成代码入门 判断程序集的引用关系

使用 ForAttributeWithMetadataName 提高 IIncrementalGenerator 增量 Source Generator 源代码生成开发效率和性能

将 Source Generator 生成的源代码保存到本地文件

IIncrementalGenerator 增量 Source Generator 生成代码应用 将构建时间写入源代码

dotnet 用 SourceGenerator 源代码生成技术实现中文编程语言 博客园

生成代码例子

使用 Source Generator 在编译你的 .NET 项目时自动生成代码 - walterlv

VisualStudio

VisualStudio 好用插件集合

VisualStudio 各版本 msbuild 路径

visual studio 2015 warning MSB3246

Visual studio 创建项目失败vstemplate

Visual Studio 自定义项目模板

Visual studio C# 代码使用 NotNull

从以前的项目格式迁移到 VS2017 新项目格式

msbuild Roslyn 行为详解

VisualStudio 调试时会不断刷新 WPF 应用渲染

VisualStudio 在 DebuggerDisplay 的属性更改业务逻辑将会让调试和非调试下逻辑不同

VisualStudio can not get the correct struct object value in Locals windows

VisualStudio 自定义外部命令

VisualStudio 外部工具配合 dotnet tool 制作复制文件名工具

VisualStudio 2019 调试项目使用 Portable PDB 提示不支持 PDB 格式

VisualStudio 解决首次调试 docker 的 vs2017u5 exists, deleting 太慢问题

VisualStudio 如何快速添加一个 Git Tag 推送

TotalCommander 设置 VisualStudio 开发者命令行

VisualStudio 调试内存泄漏方法

VisualStudio 命令行编译 build 通过 rebuild 不通过

msbuild 修改 VisualStudio 文件复制到输出目录的路径

dotnet 通过 DockerfileContext 解决项目放在里层文件夹导致 VisualStudio 构建失败

在 VisualStudio 给文件起一个带分号的文件名会怎样

VisualStudio 开发文件自定义工具单文件生成工具

VisualStudio 2019 新特性

VisualStudio 2019 尝试使用 C# 8.0 新的方式

VisualStudio 通过外部调试方法快速调试库代码

VisualStudio 2017 项目格式 自动生成版本号

在 Windows Defender 设置文件夹白名单提升 VisualStudio 编译速度

使用 IncrediBuild 提升 VisualStudio 编译速度

安装visualStudio 出现 cant install Microsoft.TeamFoundation.OfficeIntegration.Resources

一段能让 VisualStudio 炸掉的代码

visualStudio 无法登陆

VisualStudio 断点调试详解

VisualStudio 禁用移动文件到文件夹自动修改命名空间功能

VisualStudio 解决方案筛选器 slnf 文件

VisualStudio 使用多个环境进行调试

VisualStudio 使用三个方法启动最新 C# 功能

VisualStudio 2019 如何离线下载

VisualStudio 配置多进程调试快捷键启动项目

VisualStudio 2019 新创建项目添加 git 仓库

VisualStudio 2022 找不到内存 反汇编 寄存器调试工具 腾讯云

VisualStudio 2022 如何显示 dotnet 6 及以上版本的框架的代码注释为中文

VisualStudio 快速设置启动项目

VisualStudio 开启仅我代码调试

VisualStudio 合并代码文件

VisualStudio 修改配色

Roslyn 让 VisualStudio 急速调试底层库方法

git 使用 VisualStudio 比较分支更改

visual Studio 无法调试,提示程序跟踪已退出

WPF 使用 VisualStudio 2017 项目文件

VisualStudio 编码规范工具 2.6 修改当前文件编码

VisualStudio 安装 Python 开发

VisualStudio 通过 EditorBrowsable 隐藏不开放的属性或方法

VisualStudio 插件 翻译注释

VisualStudio 过滤输出窗口文本

VisualStudio 通过配置 DefaultXamlRuntime 属性 让控制台项目里的 XAML 应用上智能提示

VisualStudio csproj 添加 ItemGroup 的 Service

VisualStudio 扩展开发

VisualStudio 扩展开发 获得输出窗口内容

VisualStudio 扩展开发 添加输出窗口

VisualStudio 扩展开发 添加菜单

CICD

如何给 CI CD 服务器搭建上 .NET 5 构建和运行环境

GitHub Action

dotnet 部署 github 的 Action 进行持续集成

dotnet 配置 github 自动打包上传 nuget 文件

dotnet 配合 GitHub 的 Action 做自动推 Tag 时打包 NuGet 包

Github 给仓库上传 NuGet 库

dotnet 在 GitHub 的 Action 上部署自动代码编码规范机器人

在 GitHub 仓库添加 NuGet 版本图标和构建图标

GitHub Action 新上线 WPF .NET Core 自动构建模板

dotnet 基于 dotnet format 的 GitHub Action 自动代码格式化机器人

github 设置自动删除合并的分支

dotnet 部署 GitHub 的 Action Runner 制作自托管运行器

GitHub 如何过滤某个作者的 MR 内容

Github 添加 Action 编译图标

GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性

dotnet 通过 GitHub 的 Action 辅助下载国外资源文件的离线下载方法

GitHub 的 Action 如何禁用

GitHub 的 Action 判断仅在主仓库才执行脚本

dotnet 修复 GitHub Action 构建过程提示 NETSDK1127 错误 腾讯云

Gitlab

dotnet 配置 Gitlab 的 Runner 做 CI 自动构建

dotnet 配合 Gitlab 做自动推 Tag 时打包 NuGet 包

dotnet 将自动代码格式化机器人带入团队 GitLab 平台

如何让 Gitlab 的 Runner 在构建时拉取 Git Submodules 仓库

修复 GitLab 的 CI Runner 提示找不到 pwsh 执行文件

ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具

dotnet 配置 Gitlab 的 CI 找不到 Runner 或找错的可能原因

在 Gitlab 开启 MatterMost 机器人

dotnet tool 创建 GitLab 合并请求 Merge Requests 工具

从 gitlab 配置管理聊聊团队项目管理

杂项

开源项目使用 appveyor 自动构建

Fiddler 插件开发 将插件放在独立子文件夹防止 DLL 冲突

NuGet

dotnet 打包 NuGet 的配置属性大全整理

How to generate NuGet package with Git Tag version using GitHub Action

dotnet 用 ASP.NET Core 制作一个可以上传库文件的 NuGet 服务器

dotnet 用 NuGet 将自己的工具作为 dotnet tool 分发

Roslyn 打包 NuGet 包添加改动日志

dotnet 为什么每个项目都会输出一个 NuGet 包而不是一个包带所有项目

Roslyn 在 NuGet 包中放注释 xml 文件的方法

NuGet 更新库新版本的缓存问题

dotnet 在 NuGet 上搜寻好用的 dotnet tool 工具

NuGet 如何设置图标

dotnet 为什么每个项目都会输出一个 NuGet 包而不是一个包带所有项目

dotnet 使用 SourceLink 将 NuGet 链接源代码到 GitHub 等仓库

NuGet 命令行上传找不到 snupkg 文件

Roslyn 使用 Target 替换占位符方式生成 nuget 打包

Roslyn 通过 NuGet 库修改应用程序入口函数

Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译

Roslyn 通过 Nuget 管理公司配置

VisualStudio 使用新项目格式快速打出 Nuget 包

获取 Nuget 版本号

如何移动 nuget 缓存文件夹

Github 给仓库上传 NuGet 库

How to fix nuget Unrecognized license type MIT when pack

Roslyn 开发 NuGet 包的 Task 编译可能遇到的问题

NuGet 符号服务器

VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库

VisualStudio 给项目添加特殊的 Nuget 的链接

Nuget 通过 dotnet 命令行发布

Roslyn 通过 nuget 统一管理信息

修复 VisualStudio 构建时没有将 NuGet 的 PDB 符号文件拷贝到输出文件夹

设计和经验

记将一个大型客户端应用项目迁移到 dotnet 6 的经验和决策

浅谈 Windows 桌面端触摸架构演进

创建CBB心得

框架设计的想法

使用 IOC 控制反转和 DI 依赖注入的意义

dotnet 一些代码审查套路

命令行参数使用 json 有哪些坑

读书笔记 为什么要有R5G6B5颜色格式

程序猿修养 给属性一个单位

GitHub 开源项目如何参与

聊聊 2020 的 dotnet 各大开源项目仓库的情况

编程思想 定义过滤的方式解耦

从零开始用 dotnet 做全栈开发

软件设计 白话依赖注入

开源公共组件仓库的更新日志应该如何写

为什么使用 GUID 做文件名不是好主意

关于技术规划的想法

听龙华讲公共组件 CBB 建设笔记

我写的逗比代码

dotnet 文档应用的撤销重做设计

搭建一个自动化分析 DUMP 平台

dotnet 双缓存数据结构设计 下载库的文件写入缓存框架

通过公开的自动构建发布开源项目的库的安全意义

使用 C# 写脚本的优势和方法

dotnet 开发的单代码仓库和多代码仓库的优劣

白板类应用的模式交互设计方案

白板类应用的业务事件分发模式

应用商店的战略地位

WPF 画布工具栏的可扩展设计

C# 谁改了我的代码

C# 设计模式 责任链

从人工思维加上二阶熵猜测世界存在意志思维

如何参与 .NET 的开发和设计

dotnet 日志上报的 TracerId 和 SessionId 的意义

程序猿修养

程序猿修养 从安装 dotnet 开始

程序猿修养 使用 NuGet 发射卫星只需要三步

程序猿修养 日志应该如何写

算法

PTA 6-2 多项式求值

不使用数据结构反转栈

C# 搜索算法

求点集的外接矩形

图论加法

卷积神经网络全面解析

二进制数据差异算法 用于减小OTA内容

分形和图论网络

dotnet 从零开始写一个人工智能 从一个神经元开始

dotnet 从零开始写一个人工智能

生成密码

圆和线

用状态机的思想解析字符串

图论 Warshall 和Floyd 矩阵传递闭包

C# dotnet 一个还看的过去的 B 树实现

为何 987654321/123456789 的值是 8.0000000729

开源项目

我收藏的一些开源项目,请看 开源项目

开源工具

支持 dotnet 6 的 dnSpy 神器版本

WPF 推荐一个剪贴板内容查看工具

开源库介绍

dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架

dotnet 使用 ConfigureAwait.Fody 库设置默认的 await 同步上下文切换配置

SourceYard 制作源代码包

dotnet 用 MVC 的方式打开 IPC 命名管道

WPF 开源二维绘画小工具 GeometryToolDemo 项目

dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架

WPF 将 SVG 转 XAML 的工具

用于辅助做二分调试的构建每个 commit 的工具

推荐一个使用 HardLink 硬链接减少重复文件占用磁盘空间的工具

dotnet C# 高性能配置文件读写库 dotnetCampus.Configurations 简介

使用 FastTunnel 做内网穿透远程计算机桌面服务器

苏州 开源自主的 dotnet 生态

WPF 适合入门阅读的开源项目 SeeGit 图形化 Git 历史记录

dotnet 让 C# 可以通过动态生成 HLSL 使用 DX12 的 GPU 并行计算库 ComputeSharp 的简介

dotnet 用 MVC 的方式打开 IPC 命名管道

WPF 开源二维绘画小工具 GeometryToolDemo 项目

dotnet tool 文件编码规范命令行工具

dotnet 使用 Refasmer 从现有的 DLL 里面导出公开的成员组装出新的仅作为引用用途的程序集

dotnet 用 Microsoft.Diagnostics.Runtime 库写代码解析 DUMP 文件

dotnet 使用 AsyncQueue 创建高性能内存生产者消费者队列

dotnet Microsoft.Recognizers.Text 超强大的自然语言关键词提取库

dotnet 给任意对象附加任意属性的库

C#命令行解析工具

使用 .NET Core 在 MAC 下提供 Excel 的 Power Query 功能

dotnet 使用 ClearScript 执行 VBScript 和 JS 代码 无需浏览器

使用 Pandoc 把 Markdown 转 Docx

dotnet 使用 System.CommandLine 写命令行程序

dotnet 控制台 Hangfire 后台定时任务

Pipelines.Sockets.Unofficial 一个纯托管实现对接 System.IO.Pipelines 的 Sockets 库

工具

高效率工具

dotnet tool

制作 dotnet 工具

dotnet 手工打一个 dotnet tool 包

制作的 dotnet tool 运行失败提示依赖缺失

dotnet tool 安装失败因为对应的库不仅包含工具

dotnet tool 工具安装提示 Could not find a part of the path 安装失败

推荐工具

一些好用的 dotnet tool 工具

dotnet tool 文件编码规范命令行工具

dotnet tool 自动找到项目里面重复的 NuGet 依赖项

dotnet tool 判断博客文档链接是否可用的工具

dotnet 自动迁移 VS 2017 以前的 csproj 转为 dotnet core 的 SDK Style 风格工具

dotnet 获取进程命令行参数的工具

dotnet 入门到放弃 使用 .NET Core 卸载工具

dotnet serve 一句话开启文件服务器 通过 HTTP 将文件共享给其他设备

dotnet 用 gcdump 调试应用程序内存占用

开发调试工具

一些好用的开发者工具

MSBuild 输出日志可视化工具 MSBuild Structured Log Viewer 简介

让 snoop 支持 .NET Core WPF 调试

dotnet 使用 Infer# 自动分析代码缺陷

修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败

dotnet format 忽略生成代码的格式化

支持 dotnet 6 的 dnSpy 神器版本

用于辅助做二分调试的构建每个 commit 的工具

dotnet OpenXML 解压缩文档为文件夹工具

docfx 做一个和微软一样的文档平台

WPF 将 SVG 转 XAML 的工具

使用 SizeBench 分析 Exe 文件体积

Resharper

WPF 使用 Resharper 更改命名空间后生成文件引用找不到的命名空间

resharper 跳转到源代码

解决 VS 跳转定义和 Resharper 重复

使用 Resharper 特性

使用 Resharper 快速做适配器

resharper 自定义代码片

Resharper 去掉注释拼写

Resharper 如何把类里的类移动到其他文件

Sublime Text

Sublime Text 安装中文、英文字体

Sublime Text 好用的插件

sublime Text 正则替换

添加右键使用 SublimeText 打开

dotnet core 添加 SublimeText 编译插件

在 SublimeText 使用 dotnet 编译 C# 项目

SublimeText 快速打开当前文件的文件夹

SublimeText 粘贴图片保存到本地

SublimeText 配置跳转回上个光标坐标

关闭 SublimeText 3.2.2 Build 3211 的拼写检查

GIT

git 需要知道的1000个问题

git 通过 SublimeMerge 处理冲突

git 上传当前分支

git 统计两个 commit 之间相差的次数

dotnet 更新本地所有 Git 仓库的工具

自动更新所有 Git 仓库

如何删除错误提交的 git 大文件

git 合并两个仓库

git无法pull仓库refusing to merge unrelated histories

git 修改commit日期为之前的日期

git镜像仓库

git 分支改名

git 提交添加 emoij 文字

git push 错误 hook declined

git rebase 合并多个提交

git cannot lock ref

3分钟教你搭建 gitea 在 Centos 服务器

Azure

Azure 无服务器 Function 函数计算服务 dotnet core 3.1 创建和部署入门

Azure 函数服务部署失败 因为函数应用设置 v3 但主机是 v2 版本

WPF 基于 Azure 的认知服务 情绪分析 语言检测 关键短语提取

Docker

dotnet 执行 docker 容器 error MSB4018 CreateAppHost 任务意外失败可能原因

dotnet 基于 debian 创建一个 docker 的 sdk 镜像

dotnet 制作 docker 提示 Insufficient space in download directory 磁盘空间不足

Total Commander

Total Commander 显示文件包含文件名扩展

Total Commander 使用 mklink 建立文件夹链接 将 C 盘文件迁移到其他盘

PowerShell

PowerShell 通过 WMI 获取系统服务

PowerShell 通过 WMI 获取系统安装软件

PowerShell 通过 WMI 获取系统信息

PowerShell 使用 WMI 获取信息

PowerShell 通过 WMI 获取系统安装的驱动

PowerShell 通过 WMI 获取设备厂商

PowerShell 通过 WMI 获取补丁

PowerShell 拿到显卡信息

PowerShell 实现 curl 的用户名和密码逻辑

dotnet core 使用 PowerShell 脚本

PowerShell 拿到最近的10个系统日志

BAT

BAT 脚本判断当前系统是 x86 还是 x64 系统

通过 cmd 批处理文件将 16 进制转 10 进制数字

如何在 CMD 启动的软件传入带空格的路径

cmd 如何跨驱动器移动文件夹

Latex

Latex 论文elsevier,手把手如何用Latex写论文

Latex 公式速查

Latex 去掉行号

希沃白板

希沃白板如何在公式里面输入绝对值符号

拼音输入法 快速输入带音调的字符

希沃白板如何解决手机端播放课件内视频出现黑屏闪退

希沃白板断网环境免登陆编辑课件

jekyll

在 windows 安装 Jekyll

jekyll 在博客添加流程图

jekyll 如何加密博客 防止抓取

jekyll 添加 Valine 评论

其他工具

让 AE 输出 MPEG

MobaXterm 使用代理

matlab 画图

使用 ahk 让普通键盘变为Dvorak键盘

AutoHotKey 用打码的快捷键

使用 RetroShare 分享资源

如何使用 Telegram

如何安装 btsync

安装 aria2

安装 pip

通过 frp 开启服务器打开本地的 ZeroNet 服务器外网访问

贡献自己的服务器搭建tor中转

通过命令行使用微信

杂项

非技术 基于 VR 虚拟世界开展虚拟资产的玩法

非技术 技能知识和资讯

非技术 在线教育与电信行业的发展

非技术 做事情的急和快的差别

逗比面试官成长路线 如何让被面试者觉得糟心

讲师培训 多米诺原则

程序员笑话

程序员壁纸

微软技术支持联系方式

微软最具价值专家 MVP 如何获得 Resharper 的免费功能

用 sim 卡加密保护资金

安装 wordpress 出现 抱歉,我不能写入wp-config.php文件

如何写毕业论文 表格

一粒在时空轮回的粒子会发生什么

一个好的程序员

破解360doc复制

云之幻 UWP 视频教程

微软框架下载

硬件分配

自动机

用自动机的思想说明光速

文件传输

大文件的存储和备份

代码段

二阶熵

2019 德熙 腾讯云 云社区年度最佳作者奖

上海展盟网络科技有限公司的 gamebox 组件注入进程导致软件崩溃

记联软 UniAccess 导致 NSIS 安装包启动进程失效

中国最新手机号段划分情况

用自动机的思想说明时间断片是无法感知的

dotnet 世界猜测 随机数的小测试

P2P 下载

微软的 P2P 下载方式

完整的 P2P 应用需要包含哪些功能

在 P2P 文件分享应用以文件或文件段为单位的优缺


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/%E5%8D%9A%E5%AE%A2%E5%AF%BC%E8%88%AA.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

微软最具价值专家


无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利