lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

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

本文记录在 dotnet 下,启动进程,传入不存在的文件夹作为进程的工作目录,分别在 .NET Framework 和 .NET Core 的行为

WPF Application Compatibility switches list

This is a list of all System.AppContext base application compatibility switches present in WPF today, along with their defaults and related documentation.

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

这是一个用于本机多进程进行 IPC 通讯的库,此库的顶层 API 是采用 ASP.NET Core 的 MVC 框架,其底层通讯不是传统的走网络的方式,而是通过 dotnetCampus.Ipc 开源项目提供的基于 NamedPipeStream 命名管道的方式进行通讯。相当于替换掉 ASP.NET Core 的底层通讯方式,从走网络换成命名管道的方式。本库的优势是可以使用设计非常好的 ASP.NET Core 的 MVC 框架作为顶层调用 API 层,底层通讯采用可提升传输性能的命名管道,如此可以做到不走网络通讯从而极大减少网络端口占用问题和减少用户端网络环境带来的问题

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

本文来告诉大家在 WPF 开发中,发现有某个按钮或某个控件,某个预期的界面,没有在窗口或者没有在界面里面看到或者找到可能的原因和调试的方法

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

我在迁移一个古老的项目为 .NET 6 框架,但是 VS 提示 error NETSDK1136 如果使用 Windows 窗体或 WPF,或者引用使用 Windows 窗体或 WPF 的项目或包,则必须将目标平台设置为 Windows 平台。但是我不想让此项目绑定到 Windows 平台上,不在 TargetFramework 上修改为 net6.0-windows 框架

dotnet C# 根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法

本文来告诉大家如何根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法

dotnet 使用 Infer# 自动分析代码缺陷

本文告诉大家如何使用 Infer# 开源库配合 GitHub 的 Action 实现自动分析代码缺陷,如找到可空引用或线程安全等问题

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

需要知道 WPF 是一个 UI 框架,作为一个 UI 框架,最主要的就是交互。一个 UI 框架再简单也需要有渲染显示和处理用户输入的功能。 如果直接告诉大家 WPF 里面有哪些类,这些类的功能是什么,如何通过这些类实现 UI 框架。我估计没有几位伙伴会听下去,要么就是讲的类太简单,看过去我也就知道了,要么就是这个类可能我一直都不会用到他,即使可能会用到也早就忘了。 本文不会直接告诉大家 WPF 的源代码是如何写的,而是从零开始,一起来写一个 UI 框架,在写的过程就会了解到为什么 WPF 可以这样写,为什么需要这样写,和 WPF 这样写的好处。 本文适合 WPF 的开发者,同样也适合其他语言希望自己写一个 UI 框架的伙伴。

dotnet OpenXML 文本 BodyProperties 的 FontScale 与文本字号缩放

本文来告诉大家,在 OpenXML 的 BodyProperties 的 NormalAutoFit 的 FontScale 属性缩放文本框的文本字号的方法

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

本文记录 WPF 在 .NET Framework 4.5 和 .NET Core 3.0 或更高版本对使用 Binding 下的 TwoWay 双向绑定模式绑定到非公开的 set 属性上的行为变更

WPF 客户端开发需要知道的触摸失效问题

在说 WPF 开发的时候,如果开发的应用是触摸应用,那么熟悉的小伙伴会说到触摸失效问题。从分类上触摸失效有系统的触摸失效,应用程序的触摸失效,同时触摸失效指的不是触摸没反应,本文详细告诉大家什么是触摸失效

修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败

本文告诉大家如何修复使用 SmartAssembly 7.5 混淆 .NET 6 应用时提示 Unable to load runtime config file 失败

WPF 从文件加载字体

本文告诉大家从文件加载字体的方法。在 wpf 使用 FontFamily 显示指定的 ttf 文件来显示字体

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

本文来安利大家一个支持使用中文做用例名的 WPF 界面 UI 单元测试框架

VisualStudio 各版本 msbuild 路径

本文收藏各个版本的 MSBuild 文件默认所在的路径

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

在 dotnet 的输出路径里面,可以看到有一个有趣的可执行文件,这个可执行文件是如何在框架发布和独立发布的时候,找到 dotnet 程序的运行时的,这个可执行文件里面包含了哪些内容

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

引入 WpfAnalyzers 代码分析工具,相当于给团队加入一个免费的代码审查工具人,可以帮忙在日常开发找到很多代码缺陷。加入 WpfAnalyzers 代码分析工具,可以减少代码编写里的低级缺陷,提升开发质量

dotnet OpenXML 文本 BodyProperties 的属性作用

本文收集 a:bodyPr 文本框属性 BodyProperties 的属性的作用

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

本文是使用 WPF 做个 PowerPoint 系列的博客,本文来告诉大家如何解析 PPT 里面的文本描边效果,在 WPF 应用中绘制出来,实现像素级相同

SharpDx 的代替项目

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

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

本文告诉大家我在测试 WPFMediaKit 的 D3D 配置性能影响在 4k 分辨率设备下采用高清摄像头的性能

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

本文告诉大家如何使用 Silk.NET 创建 OpenGL 空窗口项目。在 dotnet 基金会下,开源维护 Silk.NET 仓库,此仓库提供了渲染相关的封装逻辑,包括 DX 和 OpenGL 等等的封装,利用此封装可以用来代替原有的 SharpDx 等库。这是一个全新写的项目,使用上了 dotnet 和 C# 很多新的特性,相对来说也很活跃,我准备开始入坑这个项目

SharpDx D3D9 的颜色 Format 和 WPF 的 PixelFormat 转换方法

本文告诉大家在 DirectX 9 的颜色格式 Format 和 WPF 的 PixelFormat 转换方法

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

本文告诉大家使用 dotnet 5 提供的 System.OperatingSystem 类的方法进行快速且简单判断当前程序所运行在的系统

WPF 使用 SharpDX 在 D3DImage 显示

本文告诉大家如何使用 SharpDX 在 D3DImage 显示。在上一篇WPF 使用 SharpDX只是使用窗口,也就是无法使用其它的 WPF 控件。所以这一篇就来告诉大家如何使用 WPF 控件和使用 SharpDX 。

dotnet format 忽略生成代码的格式化

我给团队引入了自动格式化代码机器人,这个机器人有点傻,会将生成的代码也进行格式化,每次都会我的代码生成工具打架。为了让这两个机器人和好,我探索了让 dotnet format 忽略对生成代码进行自动格式化的方法

wpf 单例

本文告诉大家如何做一个 wpf 单例程序。单例就是用户只能运行这个程序一次,也就是内存只有存在这个程序一个。

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

本文告诉大家,如何解决 csproj 项目文件放入到里层的文件夹,不放在 sln 所在文件夹的第一层子文件夹,导致 VisualStudio 2022 在构建 docker 映像提示找不到文件的问题

WPF 旋转太极

旋转的太极包含了这个世界的秘密,无论用啥录屏软件或者视频制作软件,都不好做出我期望的效果,于是我自己用代码写了一次,可以自己控制所有的逻辑。本文告诉大家如何使用 WPF 写一个旋转的太极

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

我在尝试写一个显示本机 WIFI 热点的账号和密码的控件,要求此控件在有限的空间内显示。但是尽可能显示出热点的账号和密码。而热点的账号和密码是用户配置的,也许长度很长。我的需求是在假如账号的长度较短的时候,将剩余的空间尽可能给到密码的显示。反过来,在密码长度比较短的时候,将剩余的空间给到账号的显示。如果两者的长度都比较长,那么同时限制两者的最大尺寸

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

本文告诉大家在使用 NAudio 的旧版本导致构建不通过问题,解决方法是升级到 1.10 或以上版本

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

本文告诉大家如何在 VisualStudio 2022 的 XAML 设计器中,在设计时给第三方控件加上设计用的属性和数据的方法

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

本文来告诉大家如何根据 基线包版本 的功能来实现自动在构建过程中,告诉开发者,当前版本是否存在不兼容旧版本的变更。其不兼容变更包括二进制中断变更和 API 不兼容变更和源代码中断变更。可以让库开发者花更少的精力在测试兼容性上

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

给团队带入一个 代码格式化机器人 能提升团队的幸福度,让团队的成员安心写代码,不用关注代码格式化问题,将格式代码这个粗活交给机器人去做。同时也能减少在代码审查里撕格式化问题的时间,让更多的时间投入到更有价值的工作上 本文来告诉大家如何给团队的 GitLab 平台上带入一个自动代码格式化机器人的方法

dotnet OpenXML 聊聊 PPT 文本行距行高计算公式

在 Office 的 PPT 里面,将根据储存文档的行距以及字号,计算出渲染出来的每一行的文本行高。本文将根据 Office 2016 和 M365 两个版本,加上 QQ 截图测量,通过魔法的计算方式加上逗比的算法,从而拿到对应关系公式。也许对于 Word 来说,也是相同的规则,但本文仅仅只聊 PPT 的部分