• walterlv
  • 朋友
  • RSS
  • 主题
搜索
Microsoft MVP

吕毅

.NET and Windows Developer, Microsoft MVP

  • 博客
  • 胡思乱想
  • 朋友
  • 开源项目
  • 关于
  • RSS 订阅

    修复 Windows 10 设置界面里面混乱的语言翻译

    2020-03-23 03:35

    Windows 10 每次新发布一个版本都会遇到各种各样的新型 Bug。

    本文介绍的是 Windows 10 的设置界面里面,各种各样的语言文字都很混乱,就像统一错位了一样。本文也会同时介绍其修复方法。

    使用 SoftEther VPN 在 VPS 和个人电脑之间搭建 VPN 网络

    2020-03-23 03:35

    VPN 全称是 Virtual Private Network(虚拟专用网络),可以在多台设备之间建立安全的通信网络。VPS 是 Virtual Private Server,虚拟专用服务器,指的是一台虚拟的电脑,用于提供服务。

    注意,本文不会谈及科学上网相关的内容。本文建立 VPN 网络单纯是为了对外提供服务。

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

    2020-03-23 03:31

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

    作为 .NET/C# 开发者,强烈建议安装本文推荐的几款代码分析器。

    用命令行执行 .NET 单元测试时,如何仅执行符合某些条件的单元测试

    2020-03-11 09:59

    本文介绍使用 dotnet test 命令进行单元测试的时候,过滤出被测项目中的一部分测试出来,仅测试这一部分。

    .NET WebClient 类下载部分文件会错误?可能是解压缩的锅

    2020-03-11 09:02

    一直在使用 WebClient 下载文件,.NET 已经封装好,所以用起来代码非常简洁;但直到今天发现有一个文件一直不能正确下载下来。

    本文介绍这个问题的原因和解决方法,更重要的是给出调查方法。

    如何在终端和 PowerShell 中将一个命令自动重复执行多次

    2020-03-11 08:26

    你可能有很多原因要将一个命令重复执行多次,本文介绍在多个平台下如何多次重复执行命令。

    Linux 系统根目录下的文件夹

    2020-01-30 08:02

    本文介绍 Linux 系统根目录下的各种文件夹及其用途,了解这些目录可以帮助你更好地管理你的 Linux 主机。

    收集的 Linux VPS 在线重装系统脚本

    2020-01-29 13:58

    因为 VPS 上预装的操作系统我并不习惯,所以打算重装一个。有的 VPS 服务商提供了较多种类的系统选择,有的却没有。如果你发现你希望重装的系统服务商没有提供,可以考虑自己安装。

    为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?

    2020-01-28 08:53

    非泛型版本的 ICollection 中有 IsSynchronized 属性和 SyncRoot 属性,这两个属性被用来设计成以线程安全的方式访问和修改集合。不过这个设计让线程安全的访问由集合的实现方转嫁到了调用方,导致要么很难实现,要么很难调用。

    虽然泛型版本的 ICollection<T> 已经改进了设计,不再引入 SyncRoot 这样的属性到接口中,但如果我们在某些场景下需要实现 ICollection 非泛型集合时,如何正确实现 SyncRoot 模式(SyncRoot Pattern)呢?

    全民 https!使用 FreeSSL 申请免费的 https 证书

    2020-01-13 00:05

    到现在还不为你的网站添加 https 的话,浏览器已经会非常显眼地显示“不安全”了。

    感谢 Let’s Encrypt,感谢 buypass,个人使用申请 https 证书的话已经可以免费了。

    如何设置 ASP.NET Core 程序监听的 IP 和端口

    2020-01-13 00:04

    Web 服务需要配置监听的 IP 和端口才可以对外提供真正的服务。本文介绍如何设置 ASP.NET Core 程序监听的 IP 和端口。

    使用 Frp 为你的 Web 服务添加 https 支持

    2020-01-13 00:03

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

    在众多反向代理应用中,frp 的最大特点就在于内网穿透。所以,如果你有将内网对外提供 Web 服务的需求,就可以考虑使用 frp 为你的 Web 服务提供 https 支持。

    为 ASP.NET Core 程序制作 URL 的 301/302 跳转

    2020-01-12 14:08

    如果你有一些需要重定向网页 URL 的情况,可以返回 HTTP 状态码 301/302 告诉浏览器或者搜索引擎访问新的 URL。本文描述如何在 ASP.NET Core 中进行重定向。

    使用 Kestrel 为你的 ASP.NET Core 服务添加 https 支持

    2020-01-11 12:10

    Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器。它内置集成在了 ASP.NET Core 项目模板中,所以编写和对外开放一个 Web 服务会非常简单。

    虽然不推荐直接使用 Kestrel 对外提供 Web 服务,但为了简单的话,临时使用也是非常不错的选择。

    三种方法为 ASP.NET Core 对外服务添加 https 支持(kestrel / frp / nginx)

    2020-01-11 12:10

    虽然使用 Visual Studio 创建 ASP.NET Core 程序的时候可以选择是否添加 https 支持,不过这种方式只添加了 localhost 的证书,只有本地访问时浏览器才会承认。真正对外公开服务的时候这样是绝对没法儿提供 https 服务的。

    本文介绍使用三种不同的方式添加 https 的支持,三种方法各有优劣,本文会进行比较并给出不同的适用场景。你自己选择就好。

    .NET 将多个程序集合并成单一程序集的 4+3 种方法

    2020-01-10 13:52

    编写 .NET 程序的时候,我们经常会在项目的输出目录下发现一大堆的文件。除了我们项目自己生成的程序集之外,还能找到这个项目所依赖的一大堆依赖程序集。有没有什么方法可以把这些依赖和我们的程序集合并到一起呢?

    本文介绍四种将程序集和依赖打包合并到一起的方法,每一种方法都有其不同的原理和优缺点。我将介绍这些方法的原理并帮助你决定哪种方法最适合你想要使用的场景。

    .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)

    2020-01-08 07:05

    .NET 中文件打开的 API File.Open 提供了多种不同的文件打开方式,这些方式大多数与 Windows 文件 API 中的模式是对应的,但也有一些 .NET 层面的判断以及名称的变化。在 .NET 层你可以选择适合你业务场景需要的文件打开方式。

    Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXISTING)

    2020-01-08 07:05

    Windows 打开文件的 API 中提供了多种不同的文件打开方式。你可以根据你的业务场景选择适合你的文件打开方式。

    WPF 中如何创建忽略 DPI 属性的图片

    2020-01-08 04:57

    WPF 框架设计为与 DPI 无关,但你依然可能遇到 DPI 问题。尤其是 Image 控件显示的图片会根据图片 EXIF 中的 DPI 信息和屏幕 DPI 自动缩放图片。对于 UI 用图来说这是好事,但对于软件用户随便插入的图片来说就不是了——用户传入的图片可能是各种各样不统一的 DPI。因此这种 DPI 我们应该忽略。

    为什么不应该公开用来同步的加锁对象?为什么不应该 lock(this)/lock(string) 或者 lock 任何非私有对象?

    2020-01-07 01:29

    如果你编写线程安全代码时为了省事儿直接 lock(this),或者早已听说不应该 lock(this),只是不知道原因,那么阅读本文可以帮助你了解原因。

    如何在旧版本的 .NET Core / Framework 中使用 C# 8 的异步流(IAsyncDisposable / IAsyncEnumerable / IAsyncEnumerator)

    2020-01-03 09:17

    C# 8.0 为我们带来了异步流,可以使用 async foreach,不过使用此语法需要 IAsyncEnumerable / IAsyncEnumerator 类型。本文介绍如何在旧版本的 .NET Framework 和旧版本的 .NET Core 中获得此类型。

    .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。

    2020-01-03 09:12

    在解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。。

    其原因是所解压的文件并非 zip 文件。

    Windows 系统文件资源管理器的命令行参数(如何降权打开程序,如何选择文件)

    2020-01-02 03:05

    大多数用户还是习惯使用 Windows 自带的文件资源管理器来管理文件,于是我们可以利用它的命令行参数来帮助我们做一些与之相关的交互。

    本文会以实际的例子来说明如何使用 explorer.exe 的命令行参数。

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

    2019-12-27 09:45

    MSBuild 中写在 <ItemGroup /> 中的每一项是一个 Item,Item 除了可以使用 Include/Update/Remove 来增删之外,还可以定义其他的元数据(Metadata)。

    使用 % 可以引用 Item 的元数据,本文将介绍如何正确使用 % 来引用每一个项中的元数据。

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

    2019-12-27 09:34

    本文整理 MSBuild 在编译过程中对文件和文件夹处理的各种自带的编译任务(Task)。

    如何在 .NET/C# 代码中安全地结束掉一个控制台应用程序?通过发送 Ctrl+C 信号来结束

    2019-12-26 06:16

    我的电脑上每天会跑一大堆控制台程序,于是管理这些程序的运行就成了一个问题。或者说你可能也在考虑启动一个控制台程序来完成某些特定的任务。

    如果我们需要结束掉这个控制台程序怎么做呢?直接杀进程吗?这样很容易出问题。我正在使用的一个控制台程序会写文件,如果直接杀进程可能导致数据没能写入到文件。所以本文介绍如何使用 .NET/C# 代码向控制台程序发送 Ctrl+C 来安全地结束掉程序。

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

    2019-12-23 10:45

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

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

    2019-12-23 08:00

    如果你的屏幕分辨率是 1920×1080,那么一个全屏的窗口程序尺寸是多少呢?想都不用想,是 1920×1080。

    那么输入设备输入的坐标是多少呢?是 X∈[0, 1919] ?还是 X∈[1, 1920] ?还是 X∈[0, 1920] ?

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

    2019-12-17 08:36

    使用 MSBuild 中的 Copy 这个编译目标可以在 .NET 项目编译期间复制一些文件。不过使用默认的参数复制的时候文件夹结构会丢失,所有的文件会保留在同一级文件夹下。

    那么如何在复制文件的时候保持文件夹结构与原文件夹结构一样呢?

    使用正则表达式尽可能准确匹配域名/网址

    2019-12-09 08:58

    你可能需要准确地知道一段字符串是否是域名/网址/URL。虽然可以使用 .、/ 这些来模糊匹配,但会造成误判。

    实际上单纯使用正则表达式来精确匹配也是非常复杂的,通过代码来判断会简单很多。不过本文依然从域名的定义出发来尽可能匹配一段字符串是否是域名或者网址,在要求不怎么高的场合,使用本文的正则表达式写的代码会比较简单。

    • ←
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • →

    © 2014-2021 walterlv, all rights reserved. Powered by: Jekyll Theme by: walterlv Based on Thiago Rossener