lindexi

林德熙 - Windows 10 App Developer

林德熙

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

假定我有一个文件的路径,我将这个文件路径放在文件夹判断方法里面,请问此时返回的是存在还是不存在?答案是返回不存在

通过公开的自动构建发布开源项目的库的安全意义

这是比较有争议的内容,为什么我推荐开源项目的库应该采用开源的 CI 公开进行发布。本文主要来聊安全的问题,本文的观点没法完全让小伙伴信服,只能说是我自己的看法

讲师培训 多米诺原则

我饿了,然后我要开车

通过 cmd 批处理文件将 16 进制转 10 进制数字

我在用户的电脑上通过 spyxx 找到某个进程的 id 都是在 spyxx 使用 16 进制显示,而任务管理器使用 10 进制显示,用户的电脑没有计算器。我如何使用 bat 或 cmd 等批处理文件快速将十六进制的数字转换为十进制的数字

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

咱今天来聊聊一个毁灭世界的故事,哦,不,是一个使用 TaskCompletionSource 让偷核武器,哦,又说错了,是让事件转换为异步的方法,让咱可以在一个方法里面顺序写下毁灭世界的逻辑

WPF 使用 Resharper 更改命名空间后生成文件引用找不到的命名空间

在 Resharper 更改全部命名空间之后,在 xx.g.cs 文件里面的 using 用了一个之前的命名空间,但是代码里面没有地方使用,此时构建不通过,原因是 xaml 里面存在引用

WPF 设置 WS_EX_TRANSPARENT 触摸失效

调用 SetWindowLong 方法给 GWL_EXSTYLE 设置 WS_EX_TRANSPARENT 让窗口透明,此时应用程序只能收到鼠标消息但收不到触摸消息

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

使用 Gitlab 的 CI 但是任务没有执行,提示找不到 Runner 或者找错了 Runner 服务器,请看本文,从上到下看,是否有坑

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

我就好奇无穷大和 NAN 在 C# 的二进制是如何表示的

二阶熵

小伙伴都知道熵是代表某个系统的混乱程度,而熵值本身是没有啥可以进行衡量的。本文所说的二阶熵仅是一个定义,方便后续我的吹水,用来表示一个混乱的等级

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

在 dotnet 中,通过 dotnetCampus.ClrAttachedProperty 库,可以实现给任意对象附加任意属性。以及实现创建对象的附加属性定义,使用相同的附加属性定义才能访问相同的附加属性值。在使用过 WPF 的小伙伴一定对附加属性不陌生,在 WPF 框架中很强大的一个功能就是附加属性,而针对于 WPF 框架外的 dotnet 其实也能做到相同的设计,支持定义对象附加属性

git 统计两个 commit 之间相差的次数

本文告诉大家在一个连续的 commit 树中统计两个 commit 之间的差异的 commit 数量,也就是存在 A commit 存在而 B commit 不存在的 commit 的数量

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

在 C# 里面,可以使用 dotnet 的 TaskCompletionSource 方法自己实现一个异步任务,这个任务可以方便设置任务是否完成等做到让等待的过程继续或等待。根据这个功能可以解决在复杂的功能里面通过异步等待的方法实现暂停。做法就是等待一个异步任务,如果这个功能处于暂停,那么只需要让这个异步任务不结束,此时整个功能就会在等待,直到设置了异步任务完成

使用 C# 写脚本的优势和方法

现在很方便就可以将 C# 作为某个脚本使用,本文这里的脚本指的是直接执行源代码的方式。现在是 2020 现在的 C# 默认在 dotnet 的支持下,可以作为脚本使用,本文将告诉大家使用 C# 写脚本的优势和方法

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

在很土豪的微软免费给大家提供 GitHub 的构建服务器受到了小伙伴们的一堆好评之后,微软最近推出了 WPF 的 .NET Core 版本的模板,可以快速上手 WPF 项目的自动构建,支持自动进行单元测试和打包,同时输出打包的文件

Office OpenXml SDK 文本段落允许标点溢出边界属性

在进行 PPT 解析的时候,因为 PPT 是支持在文本框里面的文本段落设置允许标点溢出边界可以在符号超过了文本框的长度,不会换行,而是显示在文本框之外

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

在 WPF 中,如果想要使用代码控制,让某个窗口作为当前用户的输入的逻辑焦点的窗口,也就是在当前用户活动的窗口的最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口

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

本文告诉大家一个有趣的动画,在鼠标点击的时候,在点击所在的点显示一个圆圈,然后这个圆圈做动画变大,但是颜色变淡的效果。本文的控件可以让大家将对应的容器放在自己应用里面就能实现这个效果

WPF 升级 .NET Core 的理由

本文列举一些让 WPF 升级 .NET Core 的理由

C# dotnet 分割换行

我在写一个 UWP 文本阅读器,我需要提升性能,需要将文本按行绘制但是文本里面的换行分割规则有点坑,本文写了一个辅助的方法用于分割换行

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

在 WPF 中的布局模型里面,可以将每个元素都认为是矩形。而每个矩形都可以将自己的左上角作为原点建立坐标,不同的矩形之间的坐标原点不相同,当这些用矩形表达的元素进行系列的旋转和平移等之后,如何将以某个元素的矩形左上角为原点的坐标换算为另一个元素的矩形左上角为原点的坐标

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

在使用 .NET Core 3.0 和以上版本,可以使用新的 SDK 版本支持的 csproj 项目文件,这个 SDK 格式的项目文件可以支持 .NET Core 以及 .NET Framework 版本的 WPF 核心就是在 csproj 项目的第一句话。本文就来和大家聊这个 Microsoft.NET.Sdk.WindowsDesktop 的原理

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

在拿到一个 Stream 如何优雅将这个 Stream 保存到代码

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

今天在少珺小伙伴的协助下,使用了 gitlab 的 runner 给全组的项目做自动的构建。为什么需要使用 Gitlab 的 Runner 做自动构建,原因是之前是用的是 Jenkins 而新建一个底层库项目想要接入自动构建等,需要来回在 Gitlab 和 Jenkins 上配置,大概步骤差不多有 20 步,同时还有一堆 Jenkins 的坑。另外服务器是共有的,有其他组的小伙伴安装了诡异的工具让我的打包不断炸掉。于是我就和头像大人商量使用虚拟机环境的方法,我在空闲的服务器上安装了 VirtualBox 虚拟机,然后在虚拟机部署 Runner 接着在项目接入,这样就可以确定打包的环境,同时迁移服务器也比较方便

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

其实 dotnet 是全栈的首选,原因是因为可以开发的方向太多,比如大本营PC端,以及后台。还有移动端,包括 IOS 和安卓端。现在还能用来写前端,本文就来告诉大家如何在前端使用现有的C#代码,通过 WebAssembly 使用 C# 的代码支持完全静态的网页,也就是不需要任何后台的存在。同时使用 C# 编写的 WebAssembly 可以省去 js 编译时间,同时使用二进制的本地指令,运行效率也有极大的提升。兼顾了开发的友好以及更高的性能

二进制数据差异算法 用于减小OTA内容

在当前客户端软件的更新功能,需要在每次客户端升级的时候,下载更新的内容。而客户端下载内容的多少将会决定用户的下载时长以及服务器流量费用。所以我在不断找一个算法,让客户端更新的时候下载的内容更少。在弱网环境,上传和下载的速度受限,在保证每次数据同步的完整下,让每次传输的内容更少也是我最近研究的内容

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

在 WPF 中,使用 ResourceDictionary 本身不会受到创建线程同步影响,意味着可以在任意的线程创建 ResourceDictionary 资源字典,然后在任意线程使用。但是此时的读写需要有时间上的差距,否则将会多线程读写不安全。在 ResourceDictionary 有一个 CanBeAccessedAcrossThreads 属性用来决定在进行读写的时候是否加上锁,但这个属性是内部的,需要通过黑科技更改才能用上

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

在 WPF 的 XAML 中,如果将某个元素初始的时候设置 Visibility 为 Collapsed 的值,那么意味着这个元素将不会参与布局,就和不存在是一样的。那么这个元素是否会被创建在内存中?是会创建的

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

今天是 2020.11.13 我在 CI 服务器上更新 dotnet 到 dotnet 5 以及 VS 到 16.8.1 最新版本,但是我在刚刚不得不回滚了环境…… 因为构建不通过

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

在 dotnet 里面,可以使用 Interlocked 进行原子命令更改 int 等的值,利用这个特性可以在一个固定足够长长度的数组里面,让多线程无锁等待写入值。因为没有锁的存在,无法保证读取时的安全,因此这样的集合只能被设计为只写的集合,只有在业务上完成了所有的写之后,才能作为可读的集合取出来

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

在将原本的 dotnet framework 版本的 WPF 项目迁到 dotnet core 版本,在进行单元测试,发现在 XmlSerializer 抛出了 System.Private.CoreLib.XmlSerializers.dll 找不到的异常,其实这个只是在 XmlSerializer 的内部异常,可以忽略

dotnet OpenXML SDK 形状的翻转与旋转

在 OpenXML 的 PPT 元素,形状的翻转与旋转是有逻辑关系,本文来和大家聊聊形状的翻转和形状的旋转的关系

dotnet 使用 AsyncQueue 创建高性能内存生产者消费者队列

在本机相同进程中创建生产者消费者队列,可以解决很多线程安全以及高性能需求问题。本文告诉大家如何通过在 GitHub 完全开源的 AsyncWorkerCollection 库的 AsyncQueue 类创建在内存中的高性能低资源占用的生产者消费者队列

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

在 WPF 使用 Skia 做渲染工具,如果绘制的中文都是方块,也许是字体的问题。字体的问题是 Skia 没有找到字体,本文告诉大家如何修复