一个.NET程序的入口点通常是Program类中的Main函数。包括WPF应用、控制台应用、ASP.NET应用在内都是从Main函数开始执行的。而使用.NET编写的UWP平台应用同样是从Main函数开始执行的,只不过开发者通常并不参与到Main函数的编写中。
继续阅读“UWP项目的Program类和Main函数”使用Visual Studio调试闪退问题
编写.NET或UWP软件时,Visual Studio是常用的的调试工具之一。其监视、调用堆栈等功能在对程序逻辑进行查错时十分有用。但如果软件在Visual Studio中启动时一切正常,在别的地方启动(比如后台任务、文件打开甚至在其他电脑上使用时)时却发生闪退,该如何进行调试呢?本文介绍如何创建内存转储文件(Dump)并使用Visual Studio进行“事后调试”,以实现对闪退故障的调试。
继续阅读“使用Visual Studio调试闪退问题”P/Invoke以指针形式传递结构体内的数组
在使用P/Invoke(平台调用)从.NET(例如C#)调用C++本机函数时,可以选择将数组以指针的形式传递。但如果数组是结构体中的成员时,就只能通过SafeArray或者按值传递数组的方式传递了,无法用指针的形式传递。那么问题来了,如果要在P/Invoke中使用一个带有动态数组成员的结构体,又不想用SafeArray,该如何实现呢?
继续阅读“P/Invoke以指针形式传递结构体内的数组”在Microsoft Store上发布字体
从某个版本开始,Windows 10应用商店Microsoft Store上可以下载字体了。但如何在Microsoft Store上发布字体一直是个未解之谜。本文将介绍在Microsoft Store上发布字体的完整步骤。
继续阅读“在Microsoft Store上发布字体”UWP进程内后台任务使用Prism的依赖注入
Prism是一个可用于UWP平台的MVVM库,提供了包括依赖注入在内的实用功能。在使用过程中,发现如果要在UWP的进程内后台任务中使用Prism的依赖注入功能,需要对一些初始化进行一些修改。
继续阅读“UWP进程内后台任务使用Prism的依赖注入”自动清理NuGet全局包目录
编写UWP和.NET Core项目时,少不了与NuGet包管理器打交道。长久以往,你有没有注意到,你的磁盘空间已经被NuGet全局包目录不断侵蚀?NuGet全局包目录默认位于“%USERPROFILE%/.nuget”路径中,所有UWP和.NET项目中安装过NuGet包都会保存在该目录中。很遗憾,目前NuGet并没有任何清理该目录的功能,随着时间的流逝,这个目录占据10GB以上空间并不稀奇。
继续阅读“自动清理NuGet全局包目录”Java和C#中内嵌类的区别
Java和C#都有内嵌类(Nested Class)这一概念,可以在一个类的内部定义另一个类。但Java和C#中的内嵌类是不太一样的。C#的内嵌类概念接近Java的静态内嵌类。
继续阅读“Java和C#中内嵌类的区别”Julia的神奇语法
最近,一种叫Julia的编程语言刷了我的屏。我体验了一下发现这个语言还是挺神奇的。
在Julia的REPL里可以用LaTeX语法输入Unicode符号:
输入:a\_1<tab> 自动变为:a₁
可以直接给变量前附加常数系数来表示乘法,而不用输入乘号:
输入:3a+5b 等效于:3*a+5*b
使用DataContractSerializer时的对象初始化
如果一个类标记了DataContractAttribute
,那么DataContractSerializer
在反序列化时会跳过所有的变量初始值和构造函数。例如,下面定义的这个类在反序列化时会引发NullReferenceException
: 继续阅读“使用DataContractSerializer时的对象初始化”
C#多维数组的内存布局
多维数组是C#中的一种数据结构。使用多维数组时,不同维度的数组元素在内存中的布局形式是怎样的呢?