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全局包目录”

MSR的两款优秀的影像处理软件

Microsoft Research曾经做出两款我非常喜爱的软件:Image Composite Editor和Microsoft Hyperlapse,前者可以拼接出高质量的全景照片,而后者则是优秀的快镜头(延时摄影)处理软件。如今,它们已经先后被停止更新,永远停留在了这个版本,但几年前的它们在今天仍然是不错的软件。

继续阅读“MSR的两款优秀的影像处理软件”

将Microsoft Edge浏览器的地址变成二维码

在用电脑上网的时候,有时想要快速地把网页发送到手机上。为了快速、可靠地实现这个功能,我选择使用一种常见的技术:二维码。

Microsoft Edge和绝大多数其他浏览器不同的一个地方是:支持Windows 10操作系统原生分享功能。所以,我开发了一款应用“二维码分享”,能够将你分享的任何链接变成二维码。安装“二维码分享”后,只要点击两次就能将Microsoft Edge浏览器以及各种其他地方上浏览的地址以二维码形式分享了。

继续阅读“将Microsoft Edge浏览器的地址变成二维码”