使用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以指针形式传递结构体内的数组”

自动清理NuGet全局包目录

编写UWP和.NET Core项目时,少不了与NuGet包管理器打交道。长久以往,你有没有注意到,你的磁盘空间已经被NuGet全局包目录不断侵蚀?NuGet全局包目录默认位于“%USERPROFILE%/.nuget”路径中,所有UWP和.NET项目中安装过NuGet包都会保存在该目录中。很遗憾,目前NuGet并没有任何清理该目录的功能,随着时间的流逝,这个目录占据10GB以上空间并不稀奇。

继续阅读“自动清理NuGet全局包目录”