摘要: 如果曾经修改过 Windows 10 应用安装路径到非系统盘,那么那个盘下就会生成一些文件夹。如果以后重装了系统或者应用删除了,挪位置了,那些文件夹依然在那里——删不掉! 大家都知道这是权限问题,然而如何修改权限以便成功删除呢? ▲ 更改应用的保存位置 那么,现在开始解决删不掉的问题吧! 第一步:属 阅读全文
posted @ 2018-02-28 00:07 walterlv 阅读(20849) 评论(1) 推荐(1) 编辑
摘要: 无意间发现我的 D 盘根目录中大部分的文件夹都是系统专用文件夹,有自己的独特图标,偶有一两个开发用的文件夹是默认图标。于是想把它们改成独特样式,而且是 Windows 10 那些新图标样式! 这是我的文件夹,我希望把最上面几个文件夹的图标改成下面那些风格。 大家都知道在文件夹上右键,选择 属性 → 阅读全文
posted @ 2018-02-27 23:19 walterlv 阅读(1627) 评论(0) 推荐(0) 编辑
摘要: 有没有觉得命名太难?有没有觉得单元测试的命名更难?没错,你不是一个人!看看这个你就知道了:程序员最头疼的事:命名 或它的英文原文 Don’t go into programming if you don’t have a good thesaurus - ITworld。 立刻前往 nuget.or 阅读全文
posted @ 2018-02-27 20:12 walterlv 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 如果你希望更刺激地安装 Windows,那么你需要了解很多 Windows 系统相关的问题。 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统? 因为 NTFS 是 Windows 系统专属的文件系统,而 UEFI 目前并不支持 NTFS。 于是,如果在主板设置中选择“仅 UEFI 阅读全文
posted @ 2018-02-27 20:11 walterlv 阅读(2451) 评论(0) 推荐(0) 编辑
摘要: 制作一个 Windows 安装 U 盘是很容易的,使用 UltraISO 这样的刻录工具量产一个 iso 镜像文件到 U 盘即可。然而随着 Windows 10 版本号的提升,镜像变得越来越大,终于 FAT32 文件系统不再能够容纳得下安装镜像文件 install.wim 了。 本文将介绍如何制作镜 阅读全文
posted @ 2018-02-27 20:10 walterlv 阅读(2204) 评论(0) 推荐(0) 编辑
摘要: 以 UEFI 启动的 Windows 磁盘必须是 GPT 格式。本文将介绍如何在安装 Windows 期间将磁盘从 MBR 转换成 GPT。 特别注意:操作不慎可能丢失所有数据,如果你懂得安装系统的一些基本概念,那么可以继续阅读并尝试实操;否则请交给专业人士操作。切记,切记,切记!!! 第一步:按下 阅读全文
posted @ 2018-02-27 20:01 walterlv 阅读(812) 评论(0) 推荐(0) 编辑
摘要: 都知道反射伤性能,但不得不反射的时候又怎么办呢?当真的被问题逼迫的时候还是能找到解决办法的。 为反射得到的方法创建一个委托,此后调用此委托将能够提高近乎直接调用方法本身的性能。(当然 Emit 也能够帮助我们显著提升性能,不过直接得到可以调用的委托不是更加方便吗?) 性能对比数据 ▲ 没有什么能够比 阅读全文
posted @ 2018-02-27 20:00 walterlv 阅读(529) 评论(3) 推荐(0) 编辑
摘要: 跟小伙伴一起重构一段 UI,试图将用户界面和业务代码分离的时候,小伙伴试图在业务代码中直接调用 UI。我们当然都知道这会产生耦合,于是小伙伴试图定义一些属性、变量或接口来解决这个耦合。虽然在代码的静态分析中,这一的耦合消失了,但我始终觉得不妥。觉得耦合依然存在,只是不再能被静态分析了。 我想到一个词 阅读全文
posted @ 2018-02-27 19:58 walterlv 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 显示一个模态窗口,正常而普遍的操作。然而却一直有一个难缠的 BUG:当关闭模态窗口时,父窗口有时会跑到其他程序窗口的后面! 而最近读到了微软工程师写过的话之后,明白了这个 BUG 的产生缘由以及解决方法。 这是什么 BUG? 你会发现,模态窗口关闭后,父窗口并没有回到当前的顶层显示中。取而代之的,是 阅读全文
posted @ 2018-02-27 19:54 walterlv 阅读(635) 评论(0) 推荐(1) 编辑
摘要: 我在 .NET/C# 建议的异常处理原则 中描述了如何 catch 异常以及重新 throw。然而何时应该 throw 异常,以及应该 throw 什么异常呢? 究竟是谁错了? 代码中从上到下从里到外都是在执行一个个的包含某种目的的代码,我们将其称之为“任务”。当需要完成某项任务时,任务的完成情况只 阅读全文
posted @ 2018-02-27 19:51 walterlv 阅读(1197) 评论(3) 推荐(1) 编辑
摘要: 当你想写一个泛型 的类型的时候,是否想过两个泛型参数、三个泛型参数、四个泛型参数或更多泛型参数的版本如何编写呢?是一个个编写?类小还好,类大了就杯具! 事实上,在 Visual Studio 中生成代码的手段很多,本文采用最笨的方式生成,但效果也很明显——代码写得轻松写得爽! 我们想要的效果 我们现 阅读全文
posted @ 2018-01-31 13:37 walterlv 阅读(280) 评论(0) 推荐(0) 编辑
摘要: Windows 10 创意者更新之后,默认开启了重启后恢复应用程序状态的功能。这是自 Vista 以来就提供的功能——Restart Manager。 应用程序实现这一功能只需要调用 RegisterApplicationRestart 即可。传入两个参数: 我封装了以下这个函数的调用并将其放到 G 阅读全文
posted @ 2018-01-30 08:46 walterlv 阅读(852) 评论(0) 推荐(1) 编辑
摘要: 可移植类库、共享项目、.NET Standard 项目都能够帮我们完成跨多个 .NET SDK 的单一项目开发,但它们的跨 SDK 开发都有些限制。现在,我们又有新的方式能够跨多个 .NET SDK 开发了,这就是使用新的 csproj 文件格式。 看看拥有多个开发框架的项目长什么样吧! ▲ 多 S 阅读全文
posted @ 2018-01-30 08:45 walterlv 阅读(568) 评论(3) 推荐(2) 编辑
摘要: 我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG。git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题。 阅读本文将了解使用 git worktree 高效进行并行开发的方法。 git worktre 阅读全文
posted @ 2018-01-30 08:44 walterlv 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 当一只断点打在 Visual Studio 的代码编辑器中,程序命中断点的那一刻,调试才刚刚开始……这个时候忙碌的手在键盘和鼠标之间来回跳跃,试图抓住每一次单步执行带来的状态改变。 如果命中断点的那一刻多数我需要的状态都自动呈现,偶尔需要的状态能够快速定位,那该多好!于是,有了 OzCode…… — 阅读全文
posted @ 2018-01-30 08:44 walterlv 阅读(707) 评论(0) 推荐(0) 编辑
摘要: MEF,Managed Extensibility Framework,现在已经发布了三个版本了,它们是 MEF 和 MEF2。 等等!3 去哪儿了?本文将教大家完成基于 MEF2 的开发。 MEF 和 MEF2 其实微软发布了四个版本的 MEF: 随着 .NET Framework 4.0 发布, 阅读全文
posted @ 2018-01-30 08:40 walterlv 阅读(958) 评论(1) 推荐(1) 编辑
摘要: 写过 .NET Standard 类库或者 .NET Core 程序的你一定非常喜欢微软为他们新开发的项目文件(对于 C#,则是 csproj 文件)。这种文件非常简洁,组织一个庞大的项目也只需要聊聊二三十行;也非常易读,你可以轻易地修改其代码而不用经过过多的提前学习。当然,微软曾经尝试过用 pro 阅读全文
posted @ 2018-01-30 08:38 walterlv 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 对线程安全有要求的代码中,通常会使用锁(lock)。自 .NET 诞生以来就有锁,然而从 .NET Framework 4.0 开始,又诞生了 6 个轻量级的线程安全方案:SpinLock, SpinWait, CountdownEvent, Semapho... 阅读全文
posted @ 2018-01-30 08:33 walterlv 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 卡诺模型是一种研究影响顾客满意度因素的方法,在软件工程中可以用来辅助做需求分析和优化产品的质量。 作为一种方法,卡诺模型将某一种特性的存在程度作为横坐标,越大表示某个功能或特性做得越多,越小则表示做得越少。而纵坐标是用户满意度/认可程度,越高表示用户越喜欢,越低表示用户越讨厌此特性。 于是,卡诺模型 阅读全文
posted @ 2018-01-30 08:32 walterlv 阅读(2634) 评论(0) 推荐(0) 编辑
摘要: 小伙伴在一次垃圾回收中,发现对象并没有被回收掉,而注释掉一句代码后它便能够回收。 这究竟是为什么? 不关心探索过程的就直接拉到最后看结论吧! 探索 测试代码是这样的: 需要验证的是 MainPage 对象是否被回收。然而在这段代码中,MainPage 并没有被回收;然而去掉最后一行,MainPage 阅读全文
posted @ 2018-01-30 08:31 walterlv 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 在我之前的一篇博客 NullReferenceException,就不应该存在! 中,我吐槽了 C# 中 null 的弊端以及避免 null 的方法;事实上这本都是现代高级语言中极力推崇的做法。Kotlin 和 Swift 自诞生之日起引用类型就不能为空,C# 背着历史的包袱直到 8.0 才开始这么 阅读全文
posted @ 2017-12-30 14:46 walterlv 阅读(523) 评论(0) 推荐(0) 编辑
摘要: 一个按钮,点击执行一个任务。我们可能直接在它的 Click 事件中写下了执行任务的代码。 一般我们无需担心这样的代码会出现什么问题——但是,这样的好事情只对同步任务有效;一旦进入了异步世界,这便是无尽的 BUG! 重新进入(Reentrancy) ▲ 以上,在按钮点击事件中执行同步任务 上面的代码, 阅读全文
posted @ 2017-12-30 14:30 walterlv 阅读(257) 评论(0) 推荐(0) 编辑
摘要: WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌。这时,其自带的键盘焦点样式(FocusVisualStyle)就非常不搭了,改改会舒服得多。比如,改成 UWP 的样式。 本文将展示 WPF 自定义键盘焦 阅读全文
posted @ 2017-12-30 14:28 walterlv 阅读(569) 评论(1) 推荐(0) 编辑
摘要: 将文档放到代码里面,文档才会及时地更新! 微软从 .NET Framework 4.0 开始,增加了 System.Diagnostics.Contracts 命名空间,用来把契约文档融入代码。然而后面一直不冷不热,Visual Studio 都没天然支持。ReSharper 不知何时加入了 ReS 阅读全文
posted @ 2017-12-30 14:21 walterlv 阅读(689) 评论(0) 推荐(0) 编辑
摘要: Windows 10 的创造者更新为开发者们带来了 Connected Animation 连接动画,这也是 Fluent Design System 的一部分。它的视觉引导性很强,用户能够在它的帮助下迅速定位操作的对象。 不过,这是 UWP,而且还是 Windows 10 Creator’s Up 阅读全文
posted @ 2017-12-30 14:17 walterlv 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 不知你有没有看过 Linux 上 oh-my-zsh 的样子?看过之后你一定会惊叹,原来命令行还能这么玩!然而 Windows 下能这么玩吗?答案是可行的,接下来就来看看怎么玩。 Windows 下我们用 Oh My Posh 在 PowerShell 中实现这样的效果。先放一张我的美化效果图: 接 阅读全文
posted @ 2017-12-30 14:10 walterlv 阅读(1330) 评论(0) 推荐(0) 编辑
摘要: 当我们为一个委托写 -= 的时候,ReSharper 会提示“Delegate Subtraction Has Unpredictable Result”,即“委托的减法可能出现非预期的结果”。然而在写为事件写 -= 的时候却并没有这样的提示。然而这个提示是什么意思呢?为什么会“非预期”?为什么委托 阅读全文
posted @ 2017-12-30 10:56 walterlv 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 我给博客改了主题色,从 这样的 改成了 这样的;然而我问小伙伴看看效果他却并没有发现改变。 红绿色盲在亚洲人中占比,男性约 5%,女性则小得多。也就是说,就算仅考虑为国内用户开发应用,这也是很大的一部分用户了。 本文将通过更加了解色盲(Color Blindness)来指导我们为更多用户提供更好的 阅读全文
posted @ 2017-12-30 09:05 walterlv 阅读(1154) 评论(0) 推荐(0) 编辑
摘要: WPF 的 ScrollViewer 没有水平滚动和垂直滚动的属性 HorizontalScrollOffset VerticalScrollOffset,只有水平滚动和垂直滚动的方法 ScrollToHorizontalOffset ScrollToVerticalOffset,那么怎么给滚动过程 阅读全文
posted @ 2017-12-20 23:24 walterlv 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 此前有小伙伴询问我为何他 1 像素的线条显示发虚,然后我告诉他是“像素对齐”的问题,然而他设置了各种对齐像素的属性依旧没有作用。于是我对此进行了一系列试验,对 WPF 像素对齐的各种方法进行了一次总结。此后在 StackOverflow 中,我回答了 graphics - WPF DrawingCo 阅读全文
posted @ 2017-12-20 23:22 walterlv 阅读(766) 评论(0) 推荐(1) 编辑