解决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

继续阅读“解决Entity Framework Core 2.0命令行工具与UWP不兼容的问题”

替代lock语句块实现await独占访问

C#中有lock语句块和Monitor类可以实现线程锁,实现对资源的独占访问。但是,当像下面这样试图在lock语句块中使用await时会出现错误,无法生成:

lock (streamReader)
{
    await streamReader.ReadLineAsync();
} //编译错误

此时,也不能自作聪明地使用Monitor类实现线程锁,那样虽然能够生成,但是执行结果与你设想的是不同的。像下面这样的代码并不能实现独占访问:

Monitor.Enter(streamReader);
await streamReader.ReadLineAsync();
Monitor.Exit(streamReader); //不能实现功能

继续阅读“替代lock语句块实现await独占访问”

UI框架在Windows上对DPI的感知情况

名词介绍:Windows下对高DPI的支持有几个等级,分别是不感知、系统级别感知、显示器级别感知。不感知则由系统强制缩放,界面模糊。系统级别感知只能获得系统级别的DPI,在更改缩放比例但没有注销的情况下会模糊,在将窗口移动到另外一个不同DPI的显示器时会模糊。显示器级别感知:能够感知每一个显示器的DPI并正常显示。

继续阅读“UI框架在Windows上对DPI的感知情况”

使用VHDL制作二进制转BCD电路

最近在研究FPGA,涉及到一个将二进制数转换为BCD码显示出来的工作,整理出一套同时支持整数和小数的由二进制转换为十进制的算法。这套算法是可综合并且实测有效的。

这个电路的设计思路来源于两方面。一方面是人工进行进制转换的方法:将每一位二进制数所代表的十进制数加起来;另一方面是汇编语言中的BCD加法调整指令DAA的算法:若加法的结果大于9,则标记进位并且将结果再加上6。 继续阅读“使用VHDL制作二进制转BCD电路”

使用PowerShell自动放置Android图片资源

Android项目中,需要将不同分辨率的图片资源(drawable)放到对应的文件夹中。但是AI批量导出图片的时候,只能在文件名后面加后缀,不能将不同分辨率的图片放到不同的文件夹中。使用PowerShell脚本可以快速将不同后缀的文件放到对应的文件夹中,并去除文件名后缀。

继续阅读“使用PowerShell自动放置Android图片资源”