lindexi

林德熙 - Windows 10 App Developer

林德熙

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

本文是我在读 WPF 源代码做的笔记。在 WPF 中的 AppDomainShutdownMonitor 类是一个不开放的类,这个类当前只是给 D3DImage 类使用。在 AppDomainShutdownMonitor 提供了在应用的进程或程序域关闭的时候,进行一次通知,当前是用来清理 D3DImage 类的资源

Roslyn 打包自定义的文件到 NuGet 包

在使用 sdk 格式的项目文件支持快速进行打包,但使用这个方式打包的时候将默认只带程序集输出文件,而没有带依赖的文件。本文告诉大家如何在打包的时候加上需要放在包里面的文件

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

本文提供了一个最简的方法,可以用到整个 WPF 框架里面所有 internal 内部权限的成员的方法。这是一个我自己定制的 WPF 框架,可以在此基础上构建属于自己的定制化的 WPF 框架

WPF 滑动修改音量控件

本文来分享一个简单的控件,滑动的时候显示音量控制条

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

本文来告诉大家我实际使用基准测试的在 .NET Core 3.1 的链表 LinkedList 和 Dictionary 字典的在元素增删的性能对比

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

本文是我在读 WPF 源代码做的笔记。在 WPF 中的启动界面,为了能让 WPF 的启动界面显示足够快,需要在应用的 WPF 主机还没有启动完成之前就显示出启动图,此时的启动图需要自己解析图片同时也需要自己创建显示窗口

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

本文是我在读 WPF 源代码做的笔记

dotnet 强签名下使用 InternalsVisibleToAttribute 给程序集加上友元

在 dotnet 里面,可以使用 InternalsVisibleToAttribute 特性,给程序集加上友元程序集,这样能让友元程序集访问到 internal 的程序。也就是说如果我有 A 和 B 两个程序集,我设置了 B 作为 A 的友元程序集 那么此时 B 程序集就能访问 A 程序集里面所有的 internal 成员。默认的友元设置只需要通过 InternalsVisibleToAttribute 特性写入友元程序集名就可以,但是如果程序集有强签名,就需要加上公钥

dotnet OpenXML 解析 WPS 不规范的 PPT 文件的 cNvPr 重复 id 问题

在收到了反馈说有一份课件,打开解析就发现替换的元素不对,原因是这个课件里面的 Slide Master 里面存在一个元素的 id 和某个页面的元素 id 是相同的,这不符合 ECMA 376 的规范。通过读取文档的内容,发现这是 WPS 制作出来的 PPT 文件。本文做一个存档,用来告诉大家有这个坑

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

在 WPF 里面,默认标题栏的交互相对复杂,如按钮没有设置 WindowChrome.IsHitTestVisibleInChrome 属性为 True 那按钮是拿不到点击事件的。本文来告诉大家按钮 Button 的 IsEnabled 属性对 WindowChrome 的 IsHitTestVisibleInChrome 的影响

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

我有一个应用,我期望他在任务管理器里面显示为 Doubi 这样大家就知道这是一个逗比进程。但是我更改了程序集名,也就是 exe 文件名都没有什么用,因为在任务管理器里面通过 AssemblyTitle 属性决定显示的进程名。本文来告诉大家如何更改 AssemblyTitle 的值

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

本文告诉大家在 dotnet 里面,客户端应用,如 WPF 应用对当前应用程序运行用户无写权限的文件进行访问的时候,调用 File.Open 方法的各个参数的影响

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

在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序。本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑。包括如何寻找 dotnet 运行时,如何加载运行时和框架然后跑起来业务端的 dll 文件的逻辑

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

在部署 iOS 应用的时候,如果是拉别人的代码,因为被使用了别人的签名,就会提示 Error: iOS code signing key ‘iPhone Developer: lindexi@icloud.com (F56JH45N57)’ not found in keychain. 部署失败。解决方法是替换为自己的账号

dotnet OpenXML 从文档生成创建文档的代码的库

本文和大家介绍 Serialize.OpenXml.CodeGen 这个支持从某个文档生成用于创建出这个文档的 C# 或 VB 代码的库。作用就是可以让小伙伴在拿到一份模版文件之后,可以通过 Serialize.OpenXml.CodeGen 生成能创建出这份文档的 C# 或 VB 的代码,用于在这份代码上面更改功能,做到创建定制 Docx 或 PPTX 或 Xlsx 文档的功能

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

在 Xamarin 中,使用文件存储或打开某个特定文件都是很常用的做法,而在跨平台中,每个平台都有自己的 IO 的坑。如何在 Xamarin.Froms 里面让用户可以选择打开哪个本文文件,需要照顾多个不同的平台的文件访问方式

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

基本上 Xamarin 和 WPF 的技术是相同的,但是有一些小细节和属性不同,本文记录一些不同的点,方便小伙伴将 WPF 项目迁移为 Xamarin 项目

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

如果将自己的应用放的路径比较深,那么构建安卓的时候可能因为路径超过长度失败

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

其实这是 VisualStudio 逗比的问题,尝试关闭 VisualStudio 然后干掉 Bin 和 Obj 文件夹,然后先开启安卓模拟器,然后重新构建就可以了。如果一次重新构建失败,那么再次右击重新生成就可以了

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

在新建一个 Xamarin 应用,编译时提示了 linking references 和一些诡异的文件无法访问,原因是文件路径问题和 NuGet 还原问题

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

其实这一篇和 Xamarin 开发几乎没有关系,这是苹果开发的一个坑。在原有开发者账号下的设备上,切换为另一个开发者账号,此时的部署也许会找错 预配配置 文件和证书。苹果:渣渣开发者,这是特性

Xamarin.Forms 按钮样式 圆角按钮

在 Xamarin 中可以通过 CornerRadius 设置按钮使用圆角

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

在创建默认的 Xamarin Forms WPF 应用,将和 UWP 应用的界面不相同,在 WPF 项目会显示顶部蓝色的一条,看起来不好看,那么可以如何干掉他

C# 写一个24点计算程序

我在和小伙伴玩 24 点这个游戏,但是我的计算速度比他慢,于是我就写了一个作弊的程序

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

我在写一个有趣的 WPF 软件可以通过 dll 反射重新生成代码,我需要了解dll里面每个属性是抽象的还是继承的还是虚属性

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

本文告诉大家如何使用 win32 方法创建一个全屏的窗口

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

小伙伴们都知道有 Tuple 但是很少有小伙伴只有原来从一个类转换为一个 Tuple 的方式如此简洁,在 C# 最新版本里面提供了一组语法糖,可以便捷给任意的类扩展转换为元组的能力

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

现在有很多函数计算服务,通过函数计算服务可以在服务上运行自己的代码,而不需要理会服务器的部署以及运行代码存在的并发问题。这些问题都会在云进行计算。使用阿里的函数计算服务可以使用 dotnet core 2.1 的框架,同时测试使用免费。本文告诉搭建如何在阿里的函数计算服务上运行自己的代码

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

本文只是告诉大家如何计算缩放之后的宽度和高度,不包含实际的图片缩放方法

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

在不联网情况下,从 url 获取文件名也就是只能靠 url 本身了,如果是 get 的链接很多链接后面都是带上了文件名,那么如何用最短的代码获取链接里面的文件名

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

如果我使用的是具体的数组而我的数组是基类数组,而我传入子类的元素进行 json 序列化,可能发现 Json.NET 序列化没有包含子类元素的属性。如果要包含子类的属性或字段,可以在序列化的类数组定义为 object 数组的方式

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

通过推送 Tag 才打 NuGet 包的方法的作用不仅仅是让打包方便,让打包这个动作可以完全在本地执行,无需关注其他系统的使用步骤。更重要的是可以强制每个可能被安装的 NuGet 包版本都能有一个和他对应的 Tag 号,原因是为了解决回退到某个版本发现有一个坑,这个坑是因为某个依赖库的版本问题,此时我期望最小改动,我虽然能拿到这个库的代码,但是我很难知道我这个版本安装的 NuGet 库对应依赖库的哪个 commit 的代码

从 DX 层面讲 WPF 渲染卡顿

这不是一篇深入底层的博客,很多细节还请看 DX 底层相关

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

每个团队都有适合各自的管理方法,本文仅记录我现在的团队所使用的项目管理方法。本文主要聊的是通过 gitlab 的里程碑以及 git 的分支管理项目的开发和送测的代码合并问题