lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

VisualStudio 2019 新特性

很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性

C# 强转空会不会出现异常

有小伙伴问我强转 null 会不会出现异常,我告诉他,如果是引用类型那么不会,如果是值类型,那么会出现空异常

C# dotnet 获取整个局域网的 ip 地址

局域网可以使用的 IP 地址有很多,我写了一段代码用来枚举所有可以用的 ip 地址

Inno Setup 安装包脚本 Run 的 Flags 标记

在制作安装包的时候,可以在 Inno Setup 安装包脚本的 Run 里面添加在解压缩安装包文件完成之后,整个安装结束之前执行指定的命令,是作为定制化最高的内容

WPF 使用 SharpDx 渲染博客导航

我写了很多在 WPF 使用 SharpDx 渲染的博客,但是有小伙伴吐槽说这些博客没有一个好看的顺序,我将所有的 SharpDx 的博客按照顺序放在下面

WPF 使用 SharpDx 异步渲染

本文告诉大家如何通过 SharpDx 进行异步渲染,但是因为在 WPF 是需要使用 D3DImage 画出来,所以渲染只是画出图片,最后的显示还是需要 WPF 在他自己的主线程渲染。

C# 从零开始写 SharpDx 应用 绘制基础图形

本文告诉大家通过 SharpDx 画出简单的 2D 界面

WPF 解决 StylusPlugIn 点击穿透问题

在使用 StylusPlugIn 的时候会出现这样的坑,只要一个元素附加有 StylusPlugIn 加入到视觉树,在这个元素上面放另一个没有附加 StylusPlugIn 的元素,点击上面的元素,下面的元素的 StylusPlugIn 还是可以收到触摸的消息

C# 判断系统版本

本文告诉大家如何判断系统是 win7 还是 xp 系统

WPF 控件 Content 的内容不显示下划线字符串

在 WPF 中有一个特性是按下 Alt 键盘选中某个按钮,而这个特性是通过在内容里面的字符串里面添加关键字,让某个字符作为关键字的方法就是在前面加上下划线所以这个下划线默认是不显示的

VisualStudio 配置多进程调试快捷键启动项目

在使用 VisualStudio 进行多进程调试的时候,只有第一个设置为启动项目的进程可以通过按下 F5 进行调试,而其他的进程是需要在对应项目右击选择调试,点击启动新实例,这样的调试效率实在很低。本文告诉大家如何设置快捷键用来启动选中项目调试

dotnet Framework 源代码 · ScrollViewer

本文是分析 .net Framework 源代码的系列,主要告诉大家微软做 ScrollViewer 的思路,分析很简单。 看完本文,可以学会如何写一个 ScrollViewer ,如何定义一个 IScrollInfo 或者给他滚动添加动画

WPF 如何跨线程重新抛出异常

有一些代码是在框架层写的,这部分代码不应该在后台线程抛出异常,如何将后台线程的异常在主线程抛出,同时不会带上主线程的堆栈可以保留异常的全部信息

C# 极限压缩 dotnet core 控制台发布文件

每次发布 dotnet core 应用都会觉得发布文件太大,而如果使用极限压缩,用 CoreRT 能让发布的控制台文件到 5KB 左右,不需要带框架就能在其他设备运行

asp dotnet core 3.0 接口返回 json 使用 PascalCase 格式

在 asp dotnet core 3.0 默认的 webapi 返回接口都是返回 json 格式,同时这个 json 格式使用的是 CamelCase 属性名风格。如果想要兼容之前的格式,让 webapi 返回的 json 的属性名使用 PascalCase 格式,那么请看本文

SharpDx 的代替项目

现在 SharpDx 已经不维护了,如果还需要在 C# 使用 Dx 相关技术,可以使用本文列出的替代项目

WPF 如何调试 binding

如果是写在 xaml 的绑定,很难看到是那里出错。本文告诉大家如何在 vs 调试 binding 是否绑定上?

.NET Standard

本文收藏我找到的博客,可以让大家快速知道什么是.NET Standard

WPF 渲染原理

在 WPF 最主要的就是渲染,因为 WPF 是一个界面框架。想用一篇博客就能告诉大家完整的 WPF 渲染原理是不可能的。本文告诉大家 WPF 从开发者告诉如何画图像到在屏幕显示的过程。本文是从一个很高的地方来看渲染的过程,在本文之后会添加很多博客来告诉大家渲染的细节。

C#枚举中使用Flags特性

如果对一个值可以包含多个,那么可以使用枚举,加上Flags 本文告诉大家如何写一个 Flags。

C#委托

关于什么是委托,委托如何使用,我在这里就不说了。 需要说的:

  1. 委托是函数指针链
  2. 委托的 BeginInvoke
  3. 委托如果出现异常,会如何

C#同步方法转异步

本文来告诉大家如何把同步的代码转换为异步

C#判断文件是否被混淆

可以使用混淆工具对一个DLL 和 exe 进行混淆。 但是如何知道一个文件是否已经混淆了。 在发布之前,需要知道是不是有文件忘了混淆。

C#判断文件属于文本或二进制

其实标题说错了,所有的文件储存都是二进制,但我们想区别的是那些可以当做文本来读的,如 .txt,.cs,.c 的文件和一般的不是文字的文件。 我们有什么办法可区分文件是文本或二进制?

C# 设计模式 责任链

责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。《JAVA与模式》

dotnet core 发布只带必要的依赖文件

在使用 dotnet core 发布独立项目的时候,会带上大量依赖的库,但是通过微软提供的工具可以去掉一些在代码没有用到的库。

dotnet core 使用 PowerShell 脚本

本文告诉大家如何在 dotnet core 通过 Host PowerShell 的方法使用 PowerShell 脚本

dotnet Framework 源代码 类库的意思

本文告诉大家 dotnet framework 的源代码类库的意思

dotnet Framework 源代码 · Ink

本文是分析 .NET Framework 源代码的系列,主要告诉大家微软做笔迹用的思路,怎么做的笔迹才是高性能的,用户体验比较好的。我会告诉大家源代码的思想,当然这个文章会比较无聊。如果你是想做笔迹的,即使不是 WPF 开发,不是 C# 开发的,也可以看看,因为这个思想是微软的,相对还是比较好的。

cmd 如何跨驱动器移动文件夹

如果在命令行或 cmd 批处理文件通过 move 移动文件夹的时候,移动的文件夹是跨驱动器的,那么将会显示拒绝访问

asp dotnet core 支持客户端上传文件

本文告诉大家如何在 asp dotnet core 支持客户端上传文件

PowerShell 通过 WMI 获取系统服务

本文告诉大家如何通过 WMI 获取系统服务

PowerShell 通过 WMI 获取系统安装软件

本文告诉大家如何通过 WMI 获取系统安装的软件

PowerShell 通过 WMI 获取系统信息

本文告诉大家如何通过 WMI 使用 Win32_OperatingSystem 获取设备厂商