walterlv

吕毅 - Windows 10 Developer

吕毅 - walterlv


在操作系统重启后恢复应用程序的工作状态

吕毅 发布于 2018-01-21 21:29

Windows 10 创意者更新之后,默认开启了重启后恢复应用程序状态的功能。这是自 Vista 以来就提供的功能——Restart Manager。

.NET Core 和 .NET Framework 中的 MEF2

吕毅 更新于 2018-01-21 12:02,发布于 2018-01-17 23:41

MEF,Managed Extensibility Framework,现在已经发布了三个版本了,它们是 MEF 和 MEF2。

等等!3 去哪儿了?本文将教大家完成基于 MEF2 的开发。

让一个 csproj 项目指定多个开发框架

吕毅 发布于 2018-01-21 11:28

可移植类库、共享项目、.NET Standard 项目都能够帮我们完成跨多个 .NET SDK 的单一项目开发,但它们的跨 SDK 开发都有些限制。现在,我们又有新的方式能够跨多个 .NET SDK 开发了,这就是使用新的 csproj 文件格式。

将 WPF、UWP 以及其他各种类型的旧样式的 csproj 文件迁移成新样式的 csproj 文件

吕毅 更新于 2018-01-21 11:13,发布于 2018-01-16 00:04

写过 .NET Standard 类库或者 .NET Core 程序的你一定非常喜欢微软为他们新开发的项目文件(对于 C#,则是 csproj 文件)。这种文件非常简洁,组织一个庞大的项目也只需要聊聊二三十行;也非常易读,你可以轻易地修改其代码而不用经过过多的提前学习。当然,微软曾经尝试过用 project.json 来组织项目文件,不过只有短短的预览版阶段用过,此后就废弃了。

然而组织传统 .NET Framework 类库的 csproj 文件却极其庞大且难以理解。而本文将提供一种迁移方法,帮助你完成这样的迁移,以便体验新 csproj 文件带来的诸多好处。

再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录

吕毅 发布于 2018-01-19 09:20

我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG。git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题。

阅读本文将了解使用 git worktree 高效进行并行开发的方法。

推荐近乎免费的调试神器——OzCode

吕毅 发布于 2018-01-18 08:43

当一只断点打在 Visual Studio 的代码编辑器中,程序命中断点的那一刻,调试才刚刚开始……这个时候忙碌的手在键盘和鼠标之间来回跳跃,试图抓住每一次单步执行带来的状态改变。

如果命中断点的那一刻多数我需要的状态都自动呈现,偶尔需要的状态能够快速定位,那该多好!于是,有了 OzCode……

有些异常堆栈中真没我们写的源码

吕毅 更新于 2018-01-16 09:57,发布于 2017-01-19 14:54

有时候会发生一些异常,但异常的堆栈信息中完全找不到我们自己写的源码,这样的异常到底怎么调试!

为 Visual Studio 使用通配符批量添加项目文件

吕毅 更新于 2018-01-15 23:52,发布于 2017-09-26 21:12

通常大家都不会关心 Visual Studio 的项目文件里是如何记录这个项目所包含的所有文件的,因为各位开发者们早已经习惯于右键添加文件或者拖拽文件进项目了。但如果你在某一个文件夹中放了大量的文件(尤其是图片等资源文件),那么这时会卡很久才能拖进去,拖完之后如果还要批量修改生成操作,那真的是痛不欲生。

但是,Visual Studio 提供的项目文件(*.csproj)其实是支持通配符的。

.NET 中的轻量级线程安全

吕毅 发布于 2018-01-14 20:46

对线程安全有要求的代码中,通常会使用锁(lock)。自 .NET 诞生以来就有锁,然而从 .NET Framework 4.0 开始,又诞生了 6 个轻量级的线程安全方案:SpinLock, SpinWait, CountdownEvent, SemaphoreSlim, ManualResetEventSlim, Barrier

卡诺模型(KANO Model)

吕毅 发布于 2018-01-09 17:57

卡诺模型是一种研究影响顾客满意度因素的方法,在软件工程中可以用来辅助做需求分析和优化产品的质量。

.NET/C# 建议的异常处理原则

吕毅 更新于 2018-01-09 17:57,发布于 2017-12-03 16:20

“体验”一词早已泛滥却又能够粗略地表达开发团队对客户端产品的要求,“质量”在 卡诺模型(KANO Model) 中是“必备特性”——做得好了用户感觉不到,做得差一点儿用户就会破口大骂

本文将以提升客户端 GUI 产品质量为目标,谈谈 .NET/C# 中建议的异常处理方式。

C#/.NET 匿名函数会捕获变量,并延长对象的生命周期

吕毅 发布于 2018-01-05 09:26

小伙伴在一次垃圾回收中,发现对象并没有被回收掉,而注释掉一句代码后它便能够回收。

这究竟是为什么?

C#/.NET 中的契约

吕毅 更新于 2018-01-04 14:25,发布于 2017-12-20 23:04

将文档放到代码里面,文档才会及时地更新!

微软从 .NET Framework 4.0 开始,增加了 System.Diagnostics.Contracts 命名空间,用来把契约文档融入代码。然而后面一直不冷不热,Visual Studio 都没天然支持。ReSharper 不知何时加入了 ReSharper Annotations,在 ReSharper 插件工作的情况下能够进行静态契约的验证。C#8.0 的可空引用类型是 Roslyn 对 null 的验证,本以为会带来编译级别的警告,没想到也只是契约。

为什么委托的减法(- 或 -=)可能出现非预期的结果?(Delegate Subtraction Has Unpredictable Result)

吕毅 发布于 2017-12-28 10:03

当我们为一个委托写 -= 的时候,ReSharper 会提示“Delegate Subtraction Has Unpredictable Result”,即“委托的减法可能出现非预期的结果”。然而在写为事件写 -= 的时候却并没有这样的提示。然而这个提示是什么意思呢?为什么会“非预期”?为什么委托会提示而事件不会提示?

阅读本文将了解委托的减法。

将美化进行到底,把 PowerShell 做成 oh-my-zsh 的样子

吕毅 发布于 2017-12-26 15:00

不知你有没有看过 Linux 上 oh-my-zsh 的样子?看过之后你一定会惊叹,原来命令行还能这么玩!然而 Windows 下能这么玩吗?答案是可行的,接下来就来看看怎么玩。

借用了下 oh-my-zsh 的官网图片