GCC(GNU Compiler Collection)是一套功能强大的编译器集合,支持C、C++、Fortran等编程语言,是Linux上应用十分广泛的一款编译器。MinGW(Minimalist GNU for Windows)将GNU工具链移植到了Windows环境,可用于编译原生的Windows应用程序。MinGW包含了GCC编译器的Windows移植版本以及用于Windows平台的链接器、汇编器等工具。但是,原始版本的MinGW只能用于编译32位程序,不支持64位程序的编译。
继续阅读“在CMake与Conan中使用MSYS2 MinGW x64工具链编译Windows程序”.NET中读取HTTP请求的文件名
HTTP的响应头中的Content-Disposition项会给出建议的文件名。而.NET网络库的HttpResponseMessage.Headers中并不包含Content-Disposition这一项。以下代码会得到null,而不是相应的响应头:
using (HttpClient client = new HttpClient())
{
var request = new HttpRequestMessage(HttpMethod.Head, uri);
var result = await client.SendAsync(request);
result.Headers.TryGetValues("Content-Disposition", out IEnumerable<string> values);
return values;
}
继续阅读“.NET中读取HTTP请求的文件名” 使用Visual Studio调试闪退问题
编写.NET或UWP软件时,Visual Studio是常用的的调试工具之一。其监视、调用堆栈等功能在对程序逻辑进行查错时十分有用。但如果软件在Visual Studio中启动时一切正常,在别的地方启动(比如后台任务、文件打开甚至在其他电脑上使用时)时却发生闪退,该如何进行调试呢?本文介绍如何创建内存转储文件(Dump)并使用Visual Studio进行“事后调试”,以实现对闪退故障的调试。
继续阅读“使用Visual Studio调试闪退问题”在Microsoft Store上发布字体
从某个版本开始,Windows 10应用商店Microsoft Store上可以下载字体了。但如何在Microsoft Store上发布字体一直是个未解之谜。本文将介绍在Microsoft Store上发布字体的完整步骤。
继续阅读“在Microsoft Store上发布字体”UWP进程内后台任务使用Prism的依赖注入
Prism是一个可用于UWP平台的MVVM库,提供了包括依赖注入在内的实用功能。在使用过程中,发现如果要在UWP的进程内后台任务中使用Prism的依赖注入功能,需要对一些初始化进行一些修改。
继续阅读“UWP进程内后台任务使用Prism的依赖注入”最简单的UWP最小化运行
通过Extended Execution的功能,UWP应用能够实现最小化或锁屏时保持运行状态。为了尽可能地简化Extended Execution的使用,我写了一个帮助库ExtendedExecutionHelper,在GitHub上开源,可从NuGet上获取。
继续阅读“最简单的UWP最小化运行”
利用UWP数据保护功能加密字符串
UWP平台支持使用Windows系统自带的Data Protection功能进行数据加密,密钥由操作系统进行管理,开发者无需考虑密钥的生成和分发问题。该功能可以将数据加密为只有特定用户才能解密的密文。
继续阅读“利用UWP数据保护功能加密字符串”
解决Entity Framework Core 2.0命令行工具与UWP不兼容的问题
如果你在一个面向16299以上版本系统的UWP项目中使用Entity Framework Core 2.0,使用Add-Migration等命令行工具时,命令行工具会直接拒绝运行,出现如下错误信息:
Startup project 'App4' is a Universal Windows Platform app. This version of the Entity Framework Core Package Manager Console Tools doesn't support this type of project. For more information on using the EF Core Tools with UWP projects, see https://go.microsoft.com/fwlink/?linkid=858496
替代lock语句块实现await独占访问
C#中有lock语句块和Monitor类可以实现线程锁,实现对资源的独占访问。但是,当像下面这样试图在lock语句块中使用await时会出现错误,无法生成:
lock (streamReader)
{
await streamReader.ReadLineAsync();
} //编译错误
此时,也不能自作聪明地使用Monitor类实现线程锁,那样虽然能够生成,但是执行结果与你设想的是不同的。像下面这样的代码并不能实现独占访问:
Monitor.Enter(streamReader);
await streamReader.ReadLineAsync();
Monitor.Exit(streamReader); //不能实现功能
UWP后退功能处理
UWP后退功能处理有三个要点:一是响应系统后退键,二是在桌面系统上显示后退键,三是在全平台上实现后退时的确认。 继续阅读“UWP后退功能处理”