自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

walterlv - 吕毅

欢迎访问 https://blog.walterlv.com/ 热爱设计,不止是程序,更是艺术!

原创 推荐 .NET/C# 开发者安装的几款代码分析插件或对应的代码分析 NuGet 包

如果你使用的是旧版本的 Visual Studio,那么默认的代码分析规则集是“最小建议规则集”。基于这个,写出来的代码其实只能说是能跑通过而已。随着 Roslyn 的发布,带来了越来越多更强大的代码分析器,可以为编写高质量的代码带来更多的帮助。 作为 .NET/C# 开发者,强烈建议安装本文推荐...

2019-12-30 08:49:39

阅读数 34

评论数 0

原创 在 WPF 程序中应用 Windows 10 真•亚克力效果

从 Windows 10 (1803) 开始,Win32 应用也可以有 API 来实现原生的亚克力效果了。不过相比于 UWP 来说,可定制性会差很多。 本文介绍如何在 WPF 程序中应用 Windows 10 真•亚克力效果。(而不是一些流行的项目里面自己绘制的亚克力效果。) 本文内容API如何...

2019-12-30 08:48:51

阅读数 34

评论数 0

原创 在 MSBuild 编译过程中操作文件和文件夹(检查存在/创建文件夹/读写文件/移动文件/复制文件/删除文件夹)

本文整理 MSBuild 在编译过程中对文件和文件夹处理的各种自带的编译任务(Task)。 本文内容`Exists` 检查文件存在`MakeDir` 创建文件夹`Move` 移动文件`Copy` 复制文件`Delete` 删除文件`ReadLinesFromFile` 读取文件`WriteLin...

2019-12-30 08:45:39

阅读数 38

评论数 0

原创 屏幕边缘上有趣的 1 个像素,看不见、摸不到

如果你的屏幕分辨率是 1920×1080,那么一个全屏的窗口程序尺寸是多少呢?想都不用想,是 1920×1080。 那么输入设备输入的坐标是多少呢?是 X∈[0, 1919] ?还是 X∈[1, 1920] ?还是 X∈[0, 1920] ? 本文内容鼠标输入与触摸输入有趣的 1 像素防踩坑秘籍...

2019-12-30 08:44:21

阅读数 33

评论数 0

原创 如何将一个 .NET 对象序列化为 HTTP GET 的请求字符串

HTTP GET 请求时携带的参数直接在 URL 中,形式如 ?key1=value&key2=value&key3=value。如果是 POST 请求时,我们可以使用一些库序列化为 json 格式作为 BODY 发送,那么 GET 请求呢?有可以直接将其序列化为 HTTP GET...

2019-12-30 08:42:57

阅读数 23

评论数 0

原创 如何在 MSBuild 中正确使用 % 来引用每一个项(Item)中的元数据

MSBuild 中写在 <ItemGroup /> 中的每一项是一个 Item,Item 除了可以使用 Include/Update/Remove 来增删之外,还可以定义其他的元数据(Metadata)。 使用 % 可以引用 Item 的元数据,本文将介绍如何正确使用 % 来引用每一个...

2019-12-30 08:42:20

阅读数 11

评论数 0

原创 使用 MSBuild Target 复制文件的时候如何保持文件夹结构不变

使用 MSBuild 中的 Copy 这个编译目标可以在 .NET 项目编译期间复制一些文件。不过使用默认的参数复制的时候文件夹结构会丢失,所有的文件会保留在同一级文件夹下。 那么如何在复制文件的时候保持文件夹结构与原文件夹结构一样呢? 本文内容CopyRecursiveDir Copy 下面是...

2019-12-30 08:40:06

阅读数 15

评论数 0

原创 一个简单的方法:截取子类名称中不包含基类后缀的部分

基类是 MenuItem,子类是 WalterlvMenuItem、FooMenuItem。基类是 Configuration,子类是 WalterlvConfiguration、ExtensionConfiguration。在代码中,我们可能会为了能够一眼看清类之间的继承(从属)关系而在子类名称...

2019-12-30 08:35:36

阅读数 6

评论数 0

原创 C# 8.0 的可空引用类型,不止是加个问号哦!你还有很多种不同的可空玩法

C# 8.0 引入了可空引用类型,你可以通过 ? 为字段、属性、方法参数、返回值等添加是否可为 null 的特性。 但是如果你真的在把你原有的旧项目迁移到可空类型的时候,你就会发现情况远比你想象当中复杂,因为你写的代码可能只在部分情况下可空,部分情况下不可空;或者传入空时才可为空,传入非空时则不可...

2019-12-30 08:35:07

阅读数 31

评论数 0

原创 Windows 系统的默认字体是什么?应用的默认字体是什么?

作为中文应用的开发者,我们多半会认为系统的默认字体是“微软雅黑”。然而如果真的产生了这种误解,则很容易在开发本地化应用的时候踩坑。 于是本文带你了解 Windows 系统的默认字体。 本文内容Windows 10/8.1/8/7/VistaWindows XP 及更早系统 Windows 10/...

2019-12-30 08:33:21

阅读数 26

评论数 0

原创 可集成到文件管理器,一句 PowerShell 脚本发布某个版本的所有 NuGet 包

要发布 NuGet 包,只需要执行命令 nuget push xxx.nupkg 即可,或者去 nuget.org 点鼠标上传。 不过,如果你有很多的 NuGet 包并且经常需要推送的话,也可以集成到 Directory Opus 或者 Total Commander 中。 本文内容NuGet ...

2019-12-30 08:32:26

阅读数 7

评论数 0

原创 清理 git 仓库太繁琐?试试 bfg!删除敏感信息删除大文件一句命令搞定(比官方文档还详细的使用说明)

你可能接触过 git-filter-branch 来清理 git 仓库,不过同时也能体会到这个命令使用的繁琐,以及其超长的执行时间。 现在,你可以考虑使用 bfg 来解决问题了! 本文内容安装 bfg传统方式安装(不推荐)使用包管理器 scoop 安装准备工作常见用法删除误上传的大文件删除特定的...

2019-12-30 08:28:35

阅读数 11

评论数 0

原创 C#/.NET 当我们在写事件 += 和 -= 的时候,方法是如何转换成事件处理器的

当我们在写 += 和 -= 事件的时候,我们会在 += 或 -= 的右边写上事件处理函数。我们可以写很多种不同的事件处理函数的形式,那么这些形式都是一样的吗?如果你不注意,可能出现内存泄漏问题。 本文将讲解事件处理函数的不同形式,理解了这些可以避免编写代码的时候出现内存相关的问题。 本文内容典型...

2019-12-30 08:27:43

阅读数 10

评论数 0

原创 .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表

我们知道,32 位程序在读取注册表的时候,会自动将注册表的路径映射到 32 位路径下,即在 Wow6432Node 子节点下。但是 64 位程序不会映射到 32 位路径下。那么 64 位程序如何读取到 32 位程序写入的注册表路径呢? 本文内容Wow6432Node如何在 64 位程序中读取 3...

2019-12-30 08:25:28

阅读数 7

评论数 0

原创 将 Direct3D11 在 GPU 中的纹理(Texture2D)导出到内存(Map)或导出成图片文件

Direct3D11 的使用通常不是应用程序唯一的部分,于是使用 Direct3D11 的代码如何与其他模块正确地组合在一起就是一个需要解决的问题。 本文介绍将 Direct3D11 在 GPU 中绘制的纹理映射到内存中,这样我们可以直接观察到此纹理是否是正确的,而不用担心是否有其他模块影响了最终...

2019-12-30 08:23:36

阅读数 10

评论数 0

原创 使用 Direct3D11 的 OpenSharedResource 方法渲染来自其他进程/设备的共享资源(SharedHandle)

如果你得到了一个来自于其他进程或者其他模块的 Direct3D11 的共享资源,即 SharedHandle 句柄,那么可以使用本文提到的方法将其转换成 Direct3D11 的设备和纹理,这样你可以进行后续的其他处理。 本文内容SharpDXSharedHandleOpenSharedReso...

2019-12-30 08:06:18

阅读数 9

评论数 0

原创 .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)

我们知道 Windows 系统 NTFS 文件系统提供了硬连接功能,可以通过 mklink 命令开启。如果能够通过代码实现,那么我们能够做更多有趣的事情。 本文提供使用 .NET/C# 代码创建 NTFS 文件系统的硬连接功能(目录联接)。 本文内容目录联接使用 .NET/C# 实现使用 Jun...

2019-12-30 08:05:28

阅读数 8

评论数 0

原创 WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

WPF 渲染框架并没有对外提供多少可以完全控制渲染的部分,目前可以做的有: D3DImage,用来承载使用 DirectX 各个版本渲染内容的控件 WriteableBitmap,通过一段内存空间来指定如何渲染一个位图的图片 HwndHost,通过承载一个子窗口以便能叠加任何种类渲染的控件 本...

2019-12-30 08:04:27

阅读数 40

评论数 0

原创 如何在 .NET 项目中开启不安全代码(以便启用 unsafe fixed 等关键字)

有小伙伴希望在 .NET 代码中使用指针,操作非托管资源,于是可能使用到 unsafe fixed 关键字。但使用此关键字的前提是需要在项目中开启不安全代码。 本文介绍如何在项目中开启不安全代码。 本文内容入门方法高级方法临时方法其他说明 入门方法 第一步:在你需要启用不安全代码的项目上点击右键...

2019-12-30 08:02:43

阅读数 10

评论数 0

原创 使用 .editorconfig 配置 .NET/C# 项目的代码分析规则的严重程度

随着 Visual Studio 2019 更新,在 Visual Studio 中编写代码的时候也带来了基于 Roslyn 的代码质量分析。有一些代码分析严重程度可能与团队约定的不一致,这时就需要配置规则的严重程度。另外如果是个人使用插件安装了分析器,也可以配置一些严重程度满足个人的喜好。 本文...

2019-12-30 08:01:38

阅读数 9

评论数 0

提示
确定要删除当前文章?
取消 删除