本文记录我写的博客和我收集的博客
技术交流群
这是我创建技术交流群,都不是开发新手友好,都是某项技术领域的群
dotnet 职业技术学院
Skype 群: https://join.skype.com/TiYcws3RHXOO
电报群: https://t.me/dotnet_campus
这是公开可加入的群
CPF xamarin MAUI UNO 国产 UOS 开发
群: 810052083
交流国产系统开发相关,以及 MAUI 和 Avalonia 和 UNO 和 xamarin 和 Mono 在这些神奇的系统上运行的问题,以及这些神奇的系统的系统环境问题
也可以聊聊 GTK 和 X11 系列的问题
Microsoft.Maui.Graphics
群:623209342
交流使用 MAUI 的 Graphics 进行渲染的技术,包括自绘平台以及图形绘制相关技术
WPF SharpDx Vortice
群:622808968
交流使用 SharpDx 或 Vortice 调用 DirectX 底层的技术群,包括 D2D 和图形绘制相关技术
dotnet UNO
群:724181515
专门用来交流 UnoPlatform/Uno 开发技术的群
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
本群非新手群,仅提供邀请加入。纯技术群
其他博客发布平台
以下平台都是我的博客发布平台
- 主站 :https://blog.lindexi.com/
- 使用 GitHub Page 搭建的博客
- 博客园: https://www.cnblogs.com/lindexi
- 作为主站的备份
- 靠自动同步更新
- 图片是 http 的,可能会看不到图片
- GitBook : https://uwp.gitbook.io/
- 作为主站的备份
- 靠自动同步更新
- 国内访问速度较差
- 腾讯云:https://cloud.tencent.com/developer/column/71201
- 靠自动同步更新
- 同步过来的图片自动转 https 链接,图片一般不丢
- CSDN :https://blog.csdn.net/lindexi_gd/
- 不推荐,大量博客都需要 vip 才能看,博客也很久同步不上去了
语言
dotnet C# 基础 为什么 GetHashCode 推荐只取只读属性或字段做哈希值
dotnet C# 如果在构造函数抛出异常 析构函数是否会执行
dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量
C# dotnet 在内存中的 double 的 NAN 和正负无穷二进制是如何存
C# 6.0 字符串 String Interpolation
C# 在 8.0 对比 string 和 string? 的类型
dotnet C# 使用 using 关键字释放 IDisposable 的结构体是否会装箱
dotnet
C# 8.0 文件长度 Bytes 字节转 KB 等单位字符串
dotnet 如何更改应用在任务管理器显示的进程名 AssemblyTitle 的值
dotnet 将控制台 Console.WriteLine 内容输出到文件
dotnet 使用 FileAccess 与 OpenOrCreate 对文件访问权限的影响
dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
dotnet 使用 TypeNameFormatter 库格式化输出反射泛型类型
dotnet C# 调用委托的 GetInvocationList 的对象分配
dotnet 使用 FormatterServices 的 GetUninitializedObject 方法在丢失 DLL 情况下能否执行
dotnet C# 反射扫描程序集所有类型会不会触发类型静态构造函数
dotnet 使用 ConfigureAwait.Fody 库设置默认的 await 同步上下文切换配置
Windows Community Toolkit 3.0 新功能
dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架
dotnet C# 如何使用 MemoryFailPoint 检查是否有足够的内存资源来执行操作
代码优化
教你如何编写好的代码,如何对代码进行优化,这是入门级的博客
团队协作下,要求代码质量,离不开代码审查,以下是一些代码审查套路
基础库
C# dotnet 提示找不到 CompositionContainer 类的解决方法
C# dotnet 使用 TaskCompletionSource 实现暂停功能
dotnet C# 基础二进制处理 二进制数组与结构体的互转
dotnet 使用 lz4net 压缩 Stream 或文件
dotnet 通过依赖注入的 Scoped 给工作流注入相同的上下文信息
dotnet 默认创建的 JsonContent 没有 Content Length 的内容头
dotnet 非泛型 类型 System.Collections.IEnumerable 不能与类型实参一起使用
dotnet 数组自动转基类数组提示 Co-variant array conversion 是什么问题
dotnet 警惕 ConcurrentDictionary 使用 FirstOrDefault 获取到非预期的首项
dotnet 修复找不到 System.ServiceProcess 定义
dotnet 特性 DynamicallyInvokable 是用来做什么的
dotnet 使用 Environment.FailFast 结束程序
dotnet 使用 GC.GetAllocatedBytesForCurrentThread 获取当前线程分配过的内存大小
dotnet 将任意时区的 DateTimeOffset 转换为中国时区时间文本
C# 在 构造函数添加 CallerMemberName 会怎样
dotnet 理解 IConfigurationProvider 的 GetChildKeys 方法用途
dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突
读 dotnet 源代码 为何 Thread.Sleep 半毫秒和一毫秒等待时间差距如此之大
.NET Framework
dotnet 获取用户设备安装了哪些 .NET 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 5
dotnet 5 的 bin 文件夹下的 ref 文件夹是做什么用的
dotnet 5 破坏性改动 WPF 和 WinForms 的 OutputType 输出类型重定向为 WinExe 类型
dotnet core 和 .NET 5 不支持 Prefer32Bit 首选 32 位的功能
dotnet 6
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 号
序列化
XML
dotnet core 进行 XML 序列化抛出 XmlSerializers dll 文件找不到
JSON
dotnet C# 如何让 Json 序列化数组时序列化继承类的属性
dotnet 使用 Newtonsoft.Json 输出枚举首字符小写
dotnet 6 在 System.Text.Json 使用 source generation 源代码生成提升 JSON 序列化性能
dotnet 6 修复在 System.Text.Json 使用 source generation 源代码生成提示 SYSLIB1032 错误
公共组件 CBB 建设
插件式开发
dotnet 6 通过 DOTNET_ROOT 让调起的应用的进程拿到共享的运行时文件夹
dotnet 使用 dnlib 检测插件程序集的 API 兼容性
构建和打包
迁移 dotnet 6 提示必须将目标平台设置为 Windows 平台
dotnet 新 sdk style 项目格式的一些命名空间和引用
dotnet 桌面端基于 AppHost 的配置式自动切换更新后的应用程序路径
PublishFolderCleaner 让你的 dotnet 应用发布文件夹更加整洁
dotnet 构建还原失败 NuGet.targets 错误可能原因
dotnet 解决使用本地不安全 http 的 NuGet 源 NU1803 警告或构建失败问题
dotnet 修复多框架 TargetFrameworks 包含不受支持平台导致构建失败
C# dotnet 本地代码构建没问题,但 CI 自动构建失败可能的原因
dotnet core 打包构建提示 MSB3024 可能的原因
解决 vs 出现Error MC3000 给定编码中的字符无效
msbuild 使用 ProduceOnlyReferenceAssembly 创建作为引用的仅公开成员程序集
解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题
dotnet 修复 ILLinkTasksAssembly 特性的值的计算结果无效
dotnet core 使用 CoreRT 将程序编译为 Native 程序
Inno Setup 安装包脚本 Run 的 Flags 标记
C# dotnet 解决 Path 获取文件名路径在 Windows 构建在 Linux 执行问题
dotnet 使用 Obsolete 特性标记成员过时保持库和框架的兼容性
Ubuntu 通过本机代理修复 NuGet 还原 error NU1301 失败
多线程和锁相关
dotnet 多线程禁止同时调用相同的方法 禁止方法重入调用 双检锁的设计
C# dotnet 的锁 SemaphoreSlim 和队列
dotnet 测试 SemaphoreSlim 的 Wait 是否保持进入等待的顺序先进先出
dotnet 里的那些锁 AutoResetEvent 用法
C# dotnet 使用 AsyncEx 库的 AsyncLock 异步锁
dotnet 测试 Mutex 的 WaitOne 是否保持进入等待的顺序先进先出
C# dotnet 高性能多线程工具 ExecuteOnceAwaiter 只执行一次的任务
dotnet 使用 SemaphoreSlim 可能的内存泄露
C# dotnet 高性能多线程工具 AsyncAutoResetEvent 异步等待使用方法和原理
C# 将 Begin 和 End 异步方法转 task 异步
C# dotnet 使用 TaskCompletionSource 让事件转异步方法
C# dotnet Thread.GetCurrentProcessorId 和 CurrentProcess.Id 的区别
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 教你写一个可以搞炸本机所有 WCF 应用的程序方法
性能优化
C# dotnet 使用 startIndex 提升 IndexOf 的性能
C# 7.2 通过 in 和 readonly struct 减少方法值复制提高性能
dotnet 使用 Interlocked 实现一个无锁的快速无序仅写集合
dotnet 性能优化 利用哈希思想优化大对象集合相等判断性能
dotnet C# 使用无捕获的委托可以获得编译器缓存减少对象创建
dotnet C# 使用 EqualityComparer 提升泛型值类型相等判断性能
dotnet 使用 ToUpperInvariant 替换 ToUpper 以避免初始化 icu 过慢
网络
dotnet 6 为什么网络请求不跟随系统网络代理变化而动态切换代理
dotnet 6 HttpClientHandler 和 SocketsHttpHandler 有什么差别
dotnet 是否应该对 HttpResponseMessage 调用 Dispose 进行释放
dotnet 6 使用 HttpWebRequest 进行 POST 文件将占用大量内存
dotnet 6 精细控制 HttpClient 网络请求超时
dotnet 6 在 Win7 系统证书链错误导致 HttpWebRequest 内存泄露
NewLife 的 RocketMQ 的生产者每次都是新实例将只由一个消费者消费
dotnet C# 如何不联网下快速获取一段url链接里面读取文件名
dotnet core 获取 MacAddress 地址方法
dotnet 通过 HttpClient 下载文件同时报告进度的方法
dotnet 开启 Fiddler 抓包将会让请求 HOST 头被更改
解决 System.Net.Sockets.SocketException 10106 无法加载或初始化请求的服务提供程序 无法联网
解决 System.Net.Sockets.SocketException 10045 参考的对象类型不支持尝试的操作 无法联网
dotnet core 不自动从 https 到 http 的 302 重定向
dotnet6 C# 一个国内还能用的 NTP 时间校准客户端的实现
文件读写
C# dotnet 使用 FileStream 随机文件读写
C# dotnet 使用判断文件夹存在的方法判断一个文件路径会怎样
dotnet 警惕判断文件是否存在因为检查网络资源造成超长等待
平台调用
dotnet 使用 CsWin32 库简化 Win32 函数调用逻辑
推荐官方开源 PInvoke 库 包含大量 win32 封装
dotnet C# 使用 Win32 函数获取用户下载文件夹的路径的方法
原理博客
探索 dotnet core 为何在 Windows7 系统需要补丁的原因
dotnet core 应用是如何跑起来的 通过AppHost理解运行过程
dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程
dotnet ConditionalWeakTable 的底层原理
dotnet core 黑科技·String.IndexOf 性能
设计规范
dotnet 为什么开源的运行时仓库代码减少使用 Linq 语句
工具方法
C# dotnet 获取某个字符所在 Unicode 字符平面映射
dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法
dotnet 通过 dotnetCampus.YamlToCsharp 将 YAML 多语言文件构建为代码
C# dotnet WeakLazy 弱引用的延迟初始化实现方法
dotnet C# 基于 INotifyPropertyChanged 实现一个 CLR 属性绑定辅助类
已知问题
dotnet 警惕使用 StackTrace 加获取方法标记 Attribute 特性在 Release 下被内联
dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
dotnet 使用 NamedPipeClientStream 连接一个不存在管道服务名将不断空跑 CPU 资源
dotnet C# 应用程序进程创建太多线程将会抛出 OutOfMemoryException 异常
dotnet 已知问题 使用 Directory.EnumerateXXX 方法枚举 C 盘根路径可能错误的问题
dotnet 6 已知问题 ManualResetEventSlim 的 Set 方法抛出空异常
dotnet 6 在 win7 系统 AES CFB 抛出不支持异常
dotnet 已知问题 错误标记 MethodImplOptions.InternalCall 特性参数将会在类型访问之前抛出 TypeLoadException 异常
dotnet 已知问题 警惕 StreamReader 的 EndOfStream 卡住线程
混淆
WMI
跨平台开发
dotnet 5 判断当前程序运行在 Windows 系统 Linux 系统的简单方法
dotnet core 安装在 Redhat6 RHEL 6 或 CentOS 6 的方法
dotnet 在 Linux 下的 GDI 库对 EMF 图片格式的支持
dotnet 测试在 Linux 系统上的 Environment.GetFolderPath 行为
dotnet 测试在 UOS Linux 上使用 Process Start 打开文件的行为
dotnet 记在 Linux 上某些文件的文件长度为 0 但是存在内容
dotnet C# 在 Linux 系统设置或获取音量以及变更音量收到通知
dotnet 解决 Avalonia 在 OpenKylin 麒麟系统运行找不到默认字体启动失败
修复 Debian 安装 dotnet 失败 depends on ca-certificates
VisualStudio 如何 SSH 远程调试 Linux 的 dotnet 应用的启动
UOS
dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法
UOS 开启 VisualStudio 远程调试 .NET 应用之旅
VisualStudio 如何 SSH 远程调试 Linux 的 dotnet 应用的启动
统信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 程序提示没有通过系统安全验证无法运行
在 UOS 统信安装 dotnet sdk 失败 提示 failed the verification
dotnet 在 UOS 统信系统上运行 UNO 程序输入时闪烁黑屏问题
dotnet 统信 UOS 运行 UNO FrameBuffer 应用错误 Failed to open FrameBuffer device
一步步教你在 Windows 上构建 dotnet 系应用的 UOS 软件安装包
Packaging.DebUOS 专门为 dotnet 应用制作 UOS 安装包
UNO
UNO UnoConf 2020 在线会议 了解全平台新开发框架 零距离接触官方开发者
使用 Uno Islands 在现有 WPF 里面嵌入 Uno 框架
UNO 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为
dotnet 如何将 Microsoft.Maui.Graphics 对接到 UNO 框架
dotnet 在 UOS 统信系统上运行 UNO 程序输入时闪烁黑屏问题
dotnet 统信 UOS 运行 UNO FrameBuffer 应用错误 Failed to open FrameBuffer device
从 Uno Platform 4 更新 Uno Platform 5 的迁移方法 腾讯云
UNO 新建基础库项目构建提示 UNOB0002 错误 腾讯云
UNO 已知问题 在后台线程触发 SKXamlCanvas 的 Invalidate 且在 PaintSurface 事件抛出异常将炸掉应用 腾讯云
UNO WinUI 已知问题 在 XAML 条件构建里将 win 平台加入 Ignorable 将构建失败
dotnet 如何访问到 UNO 框架里面的 internal 不公开成员
dotnet 解决 UNO 在 OpenKylin 麒麟系统运行找不到默认字体启动失败
通过日志判断 Uno Platform 是否在 X11 使用 OpenGL 渲染加速的方法
简单在 WinUI 仿造 WPF 的 ColumnDefinition SharedSizeGroup 共享列宽功能
Avalonia
dotnet 使用 Avalonia 开发 UOS 原生应用
dotnet 解决 Avalonia 在 OpenKylin 麒麟系统运行找不到默认字体启动失败
学习 Avalonia 框架笔记 如何创建一个全屏置顶的 X11 应用窗口 腾讯云
学习 Avalonia 框架笔记 设置 X11 窗口从最小化状态还原为正常状态
Avalonia 11.1 已知问题 IterationCount 为 Infinite 的动画播放出现异常
Avalonia 11.1 已知问题 应用启动时 PointToScreen 无法获取正确坐标
CPF
dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息
X11
dotnet X11 多次调用 XPutImage 是否能做到渲染同步
dotnet X11 简单使用 MIT-SHM 共享内存推送图片
dotnet X11 栈空间被回收导致调用 XPutShmImage 闪退
dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息
学习 Avalonia 框架笔记 如何创建一个全屏置顶的 X11 应用窗口 腾讯云
dotnet 理解 X11 的 24 位或 32 位色深窗口
dotnet 如何从 Gtk 3 的窗口到对应的 X11 窗口
学习 Avalonia 框架笔记 设置 X11 窗口从最小化状态还原为正常状态
dotnet X11 窗口 Destroy 之后是否可以再次 Map 显示
dotnet X11 调用 XRootWindow 是否耗时
数据库
dotnet 如何调试 SmartSql 的实际执行 SQL 语句
dotnet 关于 SmartSql 的 SQL 语句的属性替换前缀说明
dotnet core 使用 sqlite 部署到 Centos 服务器
dotnet 禁用 SQLite 的 SQLiteFunction 扫描程序集提升启动性能
SQLite 由于 mscoree.dll 损坏导致 BadImageFormatException 试图加载格式不正确的程序
WPF
记录 WPF 开发的杂烩: WPF 开发
入门的教程: 什么是WPF - The complete WPF tutorial
WPF Application Compatibility switches list
WPF 通过 Switch.MS.Internal.EnableWeakEventMemoryImprovements 开关开启弱事件内存优化
WPF 关于将 ManipulationDeltaEventArgs 的 Manipulators 属性返回值修改为 ReadOnlyCollection 类型的提议
dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架
WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用
WPF 在后台代码定义 ResourceDictionary 资源字典
WPF 修复 ContextMenu 在开启 PerMonitorV2 后所用 DPI 错误
WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式
WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法
WPF 的 DefaultEventAttribute 有什么作用
dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
WPF 使用 ManipulationProcessor2D 纯数学计算方式提供多点漫游元素功能
WPF 按钮 Button 的 IsEnabled 属性对 WindowChrome 的 IsHitTestVisibleInChrome 的影响
dotnet 使用 WpfAnalyzers 辅助分析 WPF 应用代码缺陷
WPF 后台代码做 TranslateTransform 的动画
WPF 形状的 StrokeThickness 属性对边框的影响
WPF 将 docx 的 Word 文件转换为 FlowDocument 显示
WPF 为何不要重写默认 string 字符串的 DataTemplate 数据模版
WPF 使用基于 Chromium 内核的 Microsoft Edge 封装的 WebView2 控件
WPF 使用 TranslatePoint 换算元素之间相对坐标
WPF 讲讲 Microsoft.NET.Sdk.WindowsDesktop 的原理
WPF Main thread gets a deadlock when stylus input thread is waiting for the window to close
WPF 从键盘事件 KeyEventArgs 里获取 Scan Code 的方法
wpf PreviewTextInput 在鼠标输入获得 \u0003
WPF 绑定命令在 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因
WPF 修改 ItemContainerStyle 鼠标移动到未选中项效果和选中项背景
WPF 自定义 TextBoxView 的 Margin 大小
WPF 异常 NativeWPFDLLLoader.LoadNativeWPFDLL
WPF How to get plain text from RichTextBox
WPF will break when an exception be throw in the StylusPlugIn
WPF 使用 Pandoc 把 Markdown 转 Docx
dotnet 简单方法在一个进程内同时跑起 WPF 和 ASP.NET Core 框架
WPF 启动性能优化 在 EnsureHandle 之前设置 WindowStyle 提升性能
WPF 应用开发
这是记录我用 WPF 开发的一些应用
WPF 使用快捷键方式制作简易的 Word 上的 Latex 输入法
WPF 触摸相关
我写了很多 WPF 触摸相关的博客,请参阅:
WPF dotnet core 如何开启 Pointer 消息的支持
WPF 如何确定应用程序开启了 Pointer 触摸消息的支持
dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件
WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能
WPF 触摸下如何给 StylusPointCollection 添加点
WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来
WPF 从裸 Win 32 的 WM_Pointer 消息获取触摸点绘制笔迹
控件
自定义控件
【收藏】 WPF教学 WPF做出这样丝滑的动画尽然如此简单? Magic Navigation Bar 导航栏 哔哩哔哩_bilibili
控件库
WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果
WPF HandyControl 已支持给任意控件通过按下移动抬起封装点击事件
WPF 用 AvalonEdit 开发简单的代码编辑器 支持高亮自动提示
布局
WPF 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为
WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大
XAML
XAML 给资源起个好名字 用 StaticResource 起一个别名
WPF 通过辅助方法在 csharp 代码写出 XAML 界面效果
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
WPF dotnet core 的 Blend SDK Behaviors 库
WPF 点击按钮时更改按钮样式界面效果的 XAML 实现方法
图片
WPF 从 DrawingVisual 转 BitmapImage 图片
wpf GifBitmapDecoder 解析 gif 格式
WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法
WPF 使用不安全代码快速从数组转 WriteableBitmap
文本
WPF 弹出 popup 里面的 TextBox 无法输入汉字
dotnet OpenXML WPF 解析实现 PPT 文本描边效果
WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本
WPF 字体 FontStyle 的 Italic 和 Oblique 的区别
WPF 解决 SelectionTextBrush 设置无效问题
线程
WPF 多线程下跨线程处理 ObservableCollection 数据
WPF 使用 Dispatcher 的 InvokeAsync 和 BeginInvoke 的异常处理差别
窗口
WPF 内部的5个窗口之 MediaContextNotificationWindow
WPF 设置 ShowInTaskbar 对窗口最小化的影响
Win32 使用 SetCurrentProcessExplicitAppUserModelID 关联多个进程 在任务栏合并 WPF 多进程窗口
用 SetWindowPos 方法设置一个停止响应的窗口将卡调用方
WPF 通过 SetWindowDisplayAffinity 配置禁止对窗口进行截图或录屏
[WPF 自定义控件] 使用WindowChrome自定义Window Style - dino.c - 博客园
WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome) - walterlv
渲染
更多请看 WPF 渲染相关
WPF 通过 DrawingContext DrawImage 绘制图片
WPF 如何判断两个 LinearGradientBrush 相等
WPF 在 DrawingContext 的 push 如何使用
WPF 调用 InvalidateVisual 不触发 OnRender 的原因
WPF 使用 Skia 绘制 WriteableBitmap 图片
WPF 如何获取有哪些 VisualBrush 用了某个控件
WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果
WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本
WPF 模拟 WPFMediaKit 的 D3D 配置用来测试4k性能
WPF 使用 Direct Manipulation 的方法
视频
[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 不带 TargetPlatformVersion 显示 Win10 的 Toast 通知的方法
WPF 基础 2D 图形学知识
WPF 基础 2D 图形学知识 判断点是否在任意几何内部方法
WPF 已知问题
WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流
WPF 已知问题 Popup 吃掉 PreviewMouseDown 事件
WPF 已知问题 Popup 失焦后导致 ListBox 无法用 MouseWheel 滚动问题和解决方法
WPF 将 StaticResource 和 ResourceDictionary 放在一起的魔幻行为
WPF 给 Pen 的 DashStyle 设置 0 0 的虚线数组将会让渲染线程消耗大量 CPU 资源
WPF 已知问题 包含 NaN 的 Geometry 几何可能导致渲染层抛出 UCEERR_RENDERTHREADFAILURE 异常
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 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移
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 双向绑定到非公开 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 远程桌面状态下启用渲染硬件加速 博客园
记 dotnet 8.0.4 修复的 WPF 的触摸模块安全问题
dotnet 9
dotnet 9 WPF 支持 Style 的 Setter 填充内容时可忽略 Value 标签
WPF在.NET9中的重大更新:Windows 11 主题 - mingupupup - 博客园
构建发布
WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目
WPF 基于 .NET 5 框架和 .NET 6 的 SDK 进行完全单文件发布
WPF 设置 IncludePackageReferencesDuringMarkupCompilation 属性导致分析器不工作
WPF 通过 dotnet core 发布单文件时 log4net 无法使用
WPF 项目文件不加 -windows 的引用 WPF 框架方式
打包 UWP 应用
WPF 调试
WPF 如何知道当前有多少个 DispatcherTimer 在运行
Windows 下的 WPF 开发 调试应用程序在什么时机加载了 Dll 模块
读 WPF 源代码
dotnet 读 WPF 源代码笔记 布局时 Arrange 如何影响元素渲染坐标
dotnet 读 WPF 源代码笔记 为什么自定义的 UserControl 用户控件不能跨程序集继承
dotnet 读 WPF 源代码笔记 WPF 是如何做到一套代码兼容多个 .NET Framework 版本
dotnet 读 WPF 源代码笔记 为什么加上 BooleanBoxes 类
WPF 从最底层源代码了解 AllowsTransparency 性能差的原因
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 源代码 · ScrollViewer
dotnet 读 WPF 源代码 Popup 的 StaysOpen 为 false 将会吃掉其他窗口的首次激活
dotnet 读 WPF 源代码 聊聊 DispatcherTimer 的实现
WPF 源代码 资源字典 ResourceDictionary 设置 Source 属性的逻辑
dotnet 读 WPF 源代码笔记 聊聊 HwndWrapper.GetGCMemMessage 调试消息
WPF 框架开发 ColumnDefinition 和 RowDefinition 的代码在哪
文本
dotnet 读 WPF 源代码笔记 简单聊聊文本布局换行逻辑
dotnet 读 WPF 源代码笔记 GlyphRun 的 DeviceFontName 的功能是什么
dotnet 读 WPF 源代码笔记 渲染层是如何将字符 GlyphRun 画出来的
WPF 框架开发
WPF 框架开发 更改 API 之后让 CI 重新创建 API 兼容检查基准
WPF 框架开发 加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员
WPF 框架开发 调试和开发 System.Xaml 的独立项目方法
WPF 框架开发 调试和开发 XAML 构建过程的 PresentationBuildTasks 方法
UWP
从零开始学习入门 Windows 10 应用程序 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 找不到资源
UWP how to get the touch width
win10 uwp 如何给 DropDownButton 一个很小的宽度
win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容
win10 uwp 不显示 SplashScreen 欢迎界面的方法
win10 uwp 使用 asp dotnet core 做图床服务器客户端
win10 uwp 读取保存WriteableBitmap 、BitmapImage
无法获得资源win10 uwp 解决 SerialDevice.FromIdAsync 返回空
win10 uwp 未给任务 GenerateAppxPackageRecipe 的必需参数 AppxManifestXml 赋值
win10 uwp 如何自定义 RichTextBlock 右键菜单
win10 uwp 渲染原理 DirectComposition 渲染
win10 uwp 客户端如何发送类到 asp dotnet core 作为参数
win10 uwp 在 xaml 让 TextBlock 换行
win10 uwp 进度条 WaveProgressControl
win10 uwp Window.Current.Dispatcher中Current为null
win10 uwp App-to-app communication 应用通信
win10 uwp 调用 Microsoft.Windows.Photos_8wekyb3d8bbwe 应用
win10 uwp 让焦点在点击在页面空白处时回到textbox中
win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock
win10 uwp ContentDialog 点确定不关闭
win10 UWP MessageDialog 和 ContentDialog
Win10 UWP Intro to controls and events
win10 uwp 修改CalendarDatePicker图标颜色
win10 uwp 使用 Microsoft.Graph 发送邮件
UWP 从文件 StorageFile 转 SoftwareBitmap 图片方法
win10 uwp 在 ItemsPanelTemplate 里面通过样式绑定 Orientation 显示方向
uwp ScrollViewer content out of panel when set the long width
win10 uwp 使用 ScaleTransform 放大某个元素
win10 uwp 使用 LayoutTransformer
win10 uwp release 因为 Entry Point Not Found 无法启动
win10 uwp 使用 Matrix3DProjection 进行 3d 投影
win10 uwp 在 Canvas 放一个超过大小的元素会不会被裁剪
win10 uwp 使用动画修改 Grid column 的宽度
win10 uwp 使用 Geometry resources 在 xaml
win10 uwp unix timestamp 时间戳 转 DateTime
Win10 使用 GHO 安装出现 UWP 软件打开闪退 应用商店无法安装软件
How to use code to exit the application in UWP
UWP How to custom RichTextBlock right click menu
UWP IRandomAccessStream 与 Stream 互转
win10 uwp Fluent Design System 实践
UWP WinUI3 传入 AddHandler 的 RoutedEventHandler 类型与事件所需不匹配将抛出参数异常
MVVM
win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199
构建部署
win10 uwp 使用 Azure DevOps 自动构建
win10 uwp 在 VisualStudio 部署失败,找不到 Windows Phone 可能的原因
WPF 打包为 UWP 应用构建失败 MSB3270 不匹配 AMD64 架构
win10 uwp 使用 msbuild 命令行编译 UWP 程序
修复 WPF 安装 WindowsAppSDK 库构建失败 NETSDK1082 和 NETSDK1112 找不到 win10-arm 失败
发布
加强版在国内分发 UWP 应用正确方式 通过win32安装UWP应用
win10 uwp 在 VisualStudio 打包测试完成自动上传到应用商店
win10 uwp 安装文件 appinstaller 格式
调试
应用开发
Win2D
win2d CanvasRenderTarget vs CanvasBitmap
win10 uwp win2d CanvasVirtualControl 与 CanvasAnimatedControl
win2d 通过 CanvasActiveLayer 画出透明度和裁剪
dotnet C# 从控制台开始 关联 Win2D 和 WinUI 3 应用
WinUI 3
WinUI 3 修复非打包应用运行提示缺少 Windows App Runtime 环境
dotnet WinUI 3 修复非打包应用运行提示 Microsoft.ui.xaml.dll 找不到
简单在 WinUI 仿造 WPF 的 ColumnDefinition SharedSizeGroup 共享列宽功能
dotnet C# 从控制台开始 关联 Win2D 和 WinUI 3 应用
WinForms
WinForms 使用 Image 的 FromFile 方法加载文件和使用 Bitmap 有什么不同
MAUI
dotnet Multi-platform App UI 多平台应用 UI 框架简介
dotnet 控制台 使用 Microsoft.Maui.Graphics 配合 Skia 进行绘图入门 博客园
Microsoft.Maui.Graphics.Skia 使用 DrawString 绘制文本的坐标问题
MAUI中使用Maui.Graphics.Controls绘制控件 - 痕迹g - 博客园
dotnet OpenXML 使用 MAUI 渲染 PPT 的面积图图表 博客园
MAUI 已知问题 PathFigureCollectionConverter 非线程安全
MAUI 框架开发
Xamarin
Xamarin iOS 部署应用提示 iOS code signing key 失败
Xamarin 构建提示 error APT2260 resource 找不到资源
Xamarin iOS 切换开发者账号之后的签名标识和预配配置文件更新方法
Xamarin 解决创建空白项目编译提示 linking references 找不到资源
Xamarin iOS 部署项目提示 Failed to register bundle identifier 失败
Xamarin XamlCTask 任务不支持 ValidateOnly 参数
Xamarin 使用 GTK 提示找不到 libglib-2.0-0.dll 找不到
Xamarin 从零开始部署 iOS 上的 Walterlv.CloudKeyboard 应用
Xamarin Forms 4.7 支持更简化的 Grid 行列布局写法
Xamarin Forms 构建 WPF 版项目失败提示 XamlC error XFC0000 错误
Mac 升级到 dotnet 5 构建 Xamarin 应用失败 error MSB4186 静态方法调用语法无效
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 虚拟现实 保龄球打砖块游戏开发
AI
SemanticKernel
dotnet SemanticKernel 入门 调用原生本机技能
dotnet SemanticKernel 入门 将技能导入框架
dotnet SemanticKernel 入门 自定义变量和技能
dotnet 简单控制台使用 KernelMemory 向量化文本嵌入生成和查询
dotnet 将本地的 Phi-3 模型与 SemanticKernel 进行对接
应用
SemanticKernel 将 LLM 自然语言函数和传统编程融合到一起
原理
dotnet 探究 SemanticKernel 的 planner 的原理 博客园
DirectML
dotnet 基于 DirectML 控制台运行 Phi-3 模型
ASP.NET Core
asp dotnet core 从零开始创建一个 WebApi 服务
asp dotnet core 基于 TestServer 做集成测试
ASP.NET Core 引用其他程序集项目里面的 Controller 控制器
ASP.NET Core 因为 Nginx 配置 Connection 为 Upgrade 导致 Kestrel 返回 400 错误
asp dotnet core 3.0 接口返回 json 使用 PascalCase 格式
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 dotnet core 从 Frp 获取用户真实 IP 地址
asp dotnet core 实现服务器发送事件 Server-Sent Events 简单方式
asp dotnet core 通过图片统计 csdn 用户访问
ASP.NET Core 写一个能够接收所有请求路径的测试服务
Blazor
.NET Core 用 Blazor 做 jmeter 系列视频
Blazor 的 NavLink 的 NavLinkMatch.Prefix 有啥作用
Blazor 的 NavLink 提示 RZ9986 不支持复杂内容
渲染
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 绘制 WriteableBitmap 图片
dotnet 控制台 使用 Microsoft.Maui.Graphics 配合 Skia 进行绘图入门
Microsoft.Maui.Graphics.Skia 使用 DrawString 绘制文本的坐标问题
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博客
Windows 核心编程笔记 Direct2D 比 GDI 快的一部分
Silk.NET
WPF 使用 Silk.NET 进行 DirectX 渲染入门
WPF 使用 Silk.NET 进行 Direct2D 渲染入门
OpenTK
OpenXML
使用 OpenXML 可以对 Office 文档进行底层的处理,相关博客比较多,请参阅:
Office 使用 OpenXML SDK 解析文档博客目录
调试
代码的调试方法,常用的套路和经验
入门的大博客: dotnet 代码调试方法
记因为 NVIDIA 显驱错误而让 WPF 应用启动闪退问题
WinDbg 加载 dotnet core 的 sos.dll 辅助调试方法
dotnet 使用 windbg 运行脚本方式自动批量调试处理 dump 文件
dotnet core 输出调试信息到 DebugView 软件
VisualStudio 使用 FastTunnel 辅助搭建远程调试环境
Windows
Windows 通过编辑注册表设置左右手使用习惯更改 Popup 弹出位置
安装 Sureface Hub 系统 Windows 10 team PPIPro 系统
如何在 Windows 10 中移除 Internet Explorer 浏览器
windows 10预览版升级win10 7月29 10240.16384
windows-10「设置」应用完整ms-settings快捷方式汇总.md
Windows 编程
Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式
用 SetWindowPos 方法设置一个停止响应的窗口将卡调用方
Windows 核心编程笔记 Direct2D 比 GDI 快的一部分
dotnet 判断程序当前使用管理员运行降低权使用普通权限运行
Win32 使用 CreateProcess 方法让任务管理器里的命令行不显示应用文件路径
剪贴板被占用导致应用使用剪贴板拷贝内容失败抛出 COMException 0x800401D0 错误
dotnet C# 使用 Win32 函数获取用户下载文件夹的路径的方法
Windows 设置应用禁用卸载 - 唐宋元明清2188 - 博客园
.NET 窗口/屏幕录制 - 唐宋元明清2188 - 博客园
dotnet C# 使用 SHFileOperation 调用 Win32 的文件复制对话框
WIC
dotnet 在 Windows 系统上使用 stakx 的 WIC 库
WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法
UIA
UI自动化 --- 微软UI Automation - NiueryDiary - 博客园
UI自动化 --- UI Automation 基础详解 - NiueryDiary - 博客园
测试
dotnet 如何在 dotnet test 单元测试控制台里输出日志内容
dotnet 集成测试 SmartSql 存在静态量导致多个主机启动提示 Alias 已存在
asp dotnet core 不正经的提升效率的单元测试方法
asp dotnet core 基于 TestServer 做集成测试
dotnet 使用 MSTestRunner 将单元测试制作为独立可执行文件
性能测试
dotnet C# 字典 Dictionary 和 Hashtable 的性能对比
dotnet 5 静态字段和属性的反射获取 没有想象中那么伤性能
C# 字典 Dictionary 的 TryGetValue 与先判断 ContainsKey 然后 Get 的性能对比
dotnet ConcurrentDictionary 的 GetOrAdd 性能比 TryGetValue 加 TryAdd 低
测试工具
GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性
测试框架
dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架
dotnet 如何在 Mock 模拟 Func 判断调用次数
Autofac 集成测试
Autofac 通过 PreserveExistingDefaults 解决单元测试 Fake 对象被覆盖
Autofac 集成测试 在 ConfigureContainer 之后进行 Mock 注入
打包构建
编译器
我写了很多关于 Roslyn 相关的博客,请参阅:
构建的基础知识
Roslyn 如何了解某个项目在 msbuild 中所有用到的属性以及构建过程
Roslyn 使用 Directory.Build.props 文件定义编译
Roslyn 使用 Directory.Build.props 管理多个项目配置
项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv
Roslyn 判断当前使用 dotnet core 编译器进行编译
分析器入门知识
Roslyn 入门:使用 Visual Studio 的语法可视化(Syntax Visualizer)窗格查看和了解代码的语法树 - walterlv
Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码 - walterlv
Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码(语法分析) - walterlv
Roslyn 基础知识
Roslyn NameSyntax 的 ToString 和 ToFullString 的区别
Roslyn 节点的 Span 和 FullSpan 有什么区别
Roslyn 分析器 EnforceExtendedAnalyzerRules 属性的作用
dotnet Roslyn 通过读取 suo 文件获取解决方案的启动项目
构建编排
理解 C# 项目 csproj 文件格式的本质和编译流程 - walterlv
如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task) - walterlv
Roslyn 如何使用 MSBuild MakeDir 创建文件夹
Roslyn 使用 Target 替换占位符方式生成 nuget 打包
Roslyn 在多开发框架让 msbuild 的 Target 仅运行一次
Roslyn 如何在 Target 引用 xaml 防止文件没有编译
Roslyn 禁止 sdk style csproj 默认引用 Compile 代码文件
Roslyn 使用 WriteLinesToFile 解决参数过长无法传入
定制构建
dotnet 通过引用 msbuild 程序集实现自己定制编译器
WPF 框架开发 调试和开发 XAML 构建过程的 PresentationBuildTasks 方法
Roslyn 应用
Roslyn MSBuild 在构建完成之后 将构建时间写入到输出文件
Roslyn 将这个文件放在你的项目文件夹,无论哪个控制台项目都会输出林德熙是逗比
已知问题
Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译
生成代码
大佬收藏的 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 项目文件的属性配置
Roslyn 分析器 读取 csproj 项目文件的 AdditionalFiles Item 的 Metadata 配置
尝试 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
visual studio 2015 warning MSB3246
Visual studio 创建项目失败vstemplate
VisualStudio can not get the correct struct object value in Locals windows
VisualStudio 外部工具配合 dotnet tool 制作复制文件名工具
VisualStudio 如何快速添加一个 Git Tag 推送
TotalCommander 设置 VisualStudio 开发者命令行
VisualStudio 命令行编译 build 通过 rebuild 不通过
msbuild 修改 VisualStudio 文件复制到输出目录的路径
dotnet 通过 DockerfileContext 解决项目放在里层文件夹导致 VisualStudio 构建失败
在 VisualStudio 给文件起一个带分号的文件名会怎样
VisualStudio 2019 尝试使用 C# 8.0 新的方式
VisualStudio 2017 项目格式 自动生成版本号
在 Windows Defender 设置文件夹白名单提升 VisualStudio 编译速度
使用 IncrediBuild 提升 VisualStudio 编译速度
安装visualStudio 出现 cant install Microsoft.TeamFoundation.OfficeIntegration.Resources
VisualStudio 禁用移动文件到文件夹自动修改命名空间功能
VisualStudio 2019 新创建项目添加 git 仓库
VisualStudio 2022 如何显示 dotnet 6 及以上版本的框架的代码注释为中文
VisualStudio 通过 EditorBrowsable 隐藏不开放的属性或方法
VisualStudio 通过配置 DefaultXamlRuntime 属性 让控制台项目里的 XAML 应用上智能提示
VisualStudio csproj 添加 ItemGroup 的 Service
VisualStudio 调试
Roslyn 让 VisualStudio 急速调试底层库方法
警惕 Visual Studio 属性求值副作用导致逻辑不符合预期
UOS 开启 VisualStudio 远程调试 .NET 应用之旅
VisualStudio 如何 SSH 远程调试 Linux 的 dotnet 应用的启动
VisualStudio 打断点调试和不打断点调试有什么区别
VisualStudio 在 DebuggerDisplay 的属性更改业务逻辑将会让调试和非调试下逻辑不同
VisualStudio 2019 调试项目使用 Portable PDB 提示不支持 PDB 格式
VisualStudio 解决首次调试 docker 的 vs2017u5 exists, deleting 太慢问题
VisualStudio 调试时会不断刷新 WPF 应用渲染
VisualStudio 2022 找不到内存 反汇编 寄存器调试工具 腾讯云
VisualStudio 插件收藏
VisualStudio 编码规范工具 2.6 修改当前文件编码
VisualStudio 扩展插件开发
CICD
如何给 CI CD 服务器搭建上 .NET 5 构建和运行环境
GitHub Action
dotnet 部署 github 的 Action 进行持续集成
dotnet 配置 github 自动打包上传 nuget 文件
dotnet 配合 GitHub 的 Action 做自动推 Tag 时打包 NuGet 包
dotnet 在 GitHub 的 Action 上部署自动代码编码规范机器人
GitHub Action 新上线 WPF .NET Core 自动构建模板
dotnet 基于 dotnet format 的 GitHub Action 自动代码格式化机器人
dotnet 部署 GitHub 的 Action Runner 制作自托管运行器
GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性
dotnet 通过 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 AOT 的 gitlab ruuner 的 Debian docker 镜像
dotnet 配置 Gitlab 的 CI 找不到 Runner 或找错的可能原因
dotnet tool 创建 GitLab 合并请求 Merge Requests 工具
杂项
Fiddler 插件开发 将插件放在独立子文件夹防止 DLL 冲突
NuGet
How to generate NuGet package with Git Tag version using GitHub Action
dotnet 用 ASP.NET Core 制作一个可以上传库文件的 NuGet 服务器
dotnet 用 NuGet 将自己的工具作为 dotnet tool 分发
dotnet 为什么每个项目都会输出一个 NuGet 包而不是一个包带所有项目
Roslyn 在 NuGet 包中放注释 xml 文件的方法
dotnet 在 NuGet 上搜寻好用的 dotnet tool 工具
dotnet 使用 SourceLink 将 NuGet 链接源代码到 GitHub 等仓库
Roslyn 使用 Target 替换占位符方式生成 nuget 打包
Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译
VisualStudio 使用新项目格式快速打出 Nuget 包
How to fix nuget Unrecognized license type MIT when pack
Roslyn 开发 NuGet 包的 Task 编译可能遇到的问题
VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库
VisualStudio 给项目添加特殊的 Nuget 的链接
修复 VisualStudio 构建时没有将 NuGet 的 PDB 符号文件拷贝到输出文件夹
Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包
Roslyn 通过 EmbedAllSources 将源代码嵌入到 PDB 符号文件中方便开发者调试
Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件
设计和经验
记将一个大型客户端应用项目迁移到 dotnet 6 的经验和决策
dotnet 日志上报的 TracerId 和 SessionId 的意义
程序猿修养
算法
为何 987654321/123456789 的值是 8.0000000729
开源项目
我收藏的一些开源项目,请看 开源项目
开源工具
开源库介绍
dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架
dotnet 使用 ConfigureAwait.Fody 库设置默认的 await 同步上下文切换配置
WPF 开源二维绘画小工具 GeometryToolDemo 项目
dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架
推荐一个使用 HardLink 硬链接减少重复文件占用磁盘空间的工具
dotnet C# 高性能配置文件读写库 dotnetCampus.Configurations 简介
WPF 适合入门阅读的开源项目 SeeGit 图形化 Git 历史记录
dotnet 让 C# 可以通过动态生成 HLSL 使用 DX12 的 GPU 并行计算库 ComputeSharp 的简介
WPF 开源二维绘画小工具 GeometryToolDemo 项目
dotnet 使用 Refasmer 从现有的 DLL 里面导出公开的成员组装出新的仅作为引用用途的程序集
dotnet 用 Microsoft.Diagnostics.Runtime 库写代码解析 DUMP 文件
dotnet 使用 AsyncQueue 创建高性能内存生产者消费者队列
dotnet Microsoft.Recognizers.Text 超强大的自然语言关键词提取库
使用 .NET Core 在 MAC 下提供 Excel 的 Power Query 功能
dotnet 使用 ClearScript 执行 VBScript 和 JS 代码 无需浏览器
dotnet 使用 System.CommandLine 写命令行程序
Pipelines.Sockets.Unofficial 一个纯托管实现对接 System.IO.Pipelines 的 Sockets 库
工具
dotnet tool
制作 dotnet 工具
dotnet tool 工具安装提示 Could not find a part of the path 安装失败
推荐工具
dotnet tool 自动找到项目里面重复的 NuGet 依赖项
dotnet 自动迁移 VS 2017 以前的 csproj 转为 dotnet core 的 SDK Style 风格工具
dotnet 入门到放弃 使用 .NET Core 卸载工具
dotnet serve 一句话开启文件服务器 通过 HTTP 将文件共享给其他设备
开发调试工具
MSBuild 输出日志可视化工具 MSBuild Structured Log Viewer 简介
修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败
Resharper
WPF 使用 Resharper 更改命名空间后生成文件引用找不到的命名空间
Sublime Text
dotnet core 添加 SublimeText 编译插件
在 SublimeText 使用 dotnet 编译 C# 项目
关闭 SublimeText 3.2.2 Build 3211 的拼写检查
GIT
git无法pull仓库refusing to merge unrelated histories
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 磁盘空间不足
在 windows 上运行的 podman 默认的挂载相对路径是什么
制作一个能构建 dotnet AOT 的 gitlab ruuner 的 Debian docker 镜像
Total Commander
Total Commander 使用 mklink 建立文件夹链接 将 C 盘文件迁移到其他盘
PowerShell
BAT
Latex
Latex 论文elsevier,手把手如何用Latex写论文
希沃白板
jekyll
其他工具
通过 frp 开启服务器打开本地的 ZeroNet 服务器外网访问
杂项
微软最具价值专家 MVP 如何获得 Resharper 的免费功能
安装 wordpress 出现 抱歉,我不能写入wp-config.php文件
上海展盟网络科技有限公司的 gamebox 组件注入进程导致软件崩溃
记联软 UniAccess 导致 NSIS 安装包启动进程失效
P2P 下载
原文链接: http://blog.lindexi.com/post/%E5%8D%9A%E5%AE%A2%E5%AF%BC%E8%88%AA
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。