自定义博客皮肤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/ 热爱设计,不止是程序,更是艺术!

  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

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

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

2019-12-30 08:49:39 2616

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

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

2019-12-30 08:48:51 3580

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

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

2019-12-30 08:45:39 2498

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

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

2019-12-30 08:44:21 360

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

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

2019-12-30 08:42:57 588

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

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

2019-12-30 08:42:20 318

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

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

2019-12-30 08:40:06 817

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

基类是 MenuItem,子类是 WalterlvMenuItem、FooMenuItem。基类是 Configuration,子类是 WalterlvConfiguration、ExtensionConfiguration。在代码中,我们可能会为了能够一眼看清类之间的继承(从属)关系而在子类名称后缀中带上基类的名称。但是由于这种情况下的基类不参与实际的业务,所以对外(文件/网络)的名称通常不需要...

2019-12-30 08:35:36 182

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

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

2019-12-30 08:35:07 3934 1

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

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

2019-12-30 08:33:21 37181

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

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

2019-12-30 08:32:26 456

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

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

2019-12-30 08:28:35 2472 1

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

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

2019-12-30 08:27:43 1722

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

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

2019-12-30 08:25:28 836

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

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

2019-12-30 08:23:36 4391 1

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

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

2019-12-30 08:06:18 3455 1

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

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

2019-12-30 08:05:28 949

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

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

2019-12-30 08:04:27 8340

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

有小伙伴希望在 .NET 代码中使用指针,操作非托管资源,于是可能使用到 unsafe fixed 关键字。但使用此关键字的前提是需要在项目中开启不安全代码。本文介绍如何在项目中开启不安全代码。本文内容入门方法高级方法临时方法其他说明入门方法第一步:在你需要启用不安全代码的项目上点击右键,然后选择属性:第二步:在“生成”标签下,勾选上“允许不安全代码”:第三步:切换到 Relea...

2019-12-30 08:02:43 2497 1

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

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

2019-12-30 08:01:38 1748

UWP 程序所需的最少 Logo 资源

https://walterlv.github.io/post/create-uwp-app-from-zero-0.html 中 UWP 程序所需的最少 Logo 资源

2018-07-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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