Word引文如何上标

Word中的“引文”功能能够十分方便地管理参考文献。但是Word里面的IEEE样式引文标记(就是那个[1])没有上标,而国内一般要求参考文献标记要上标(像这样[1])。如果手动上标的话,更新域的时候会自动变回原状。如何解决这个问题呢?很简单,只要在参考文献标记的域代码(右键-编辑域)后面添加一段“\* MERGEFORMAT”(不含引号),再上标,就能保证更新域的时候格式不会恢复原状了。

其实,Word的任何域都可以通过在域代码中增加“\* MERGEFORMAT”(不含引号)的方法使得更新域的时候不会改变格式。

解决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不兼容的问题”

解决Visual Studio Code触摸板滚动卡顿

使用配备包括Surface Pro系列、戴尔XPS 13系列在内的,配备精确式触摸板的设备使用Visual Studio Code时,使用触摸板滚动页面时可能会非常卡顿。要解决这个问题非常简单,只要先全屏一次再退出全屏即可。根据GitHub上的Issue显示的信息,这是一个Chromium上的问题。

更新:GitHub上Issue 13612中的一条回复显示,这个问题在Windows 10 1809更新中得到了修复。

Windows中Linux子系统(WSL)文件系统的位置

首先注意:不要直接在Windows操作系统中更改子系统的文件系统,这可能会导致权限混乱。

Windows 10 1903或更新版本中,可以通过在文件资源管理器中访问路径\\wsl$,或是在WSL命令行中输入命令explorer.exe .(注意后面的点)可直接在文件资源管理器中查看WSL的文件系统。该方式与其他方式不同,访问时经过了WSL的代理,不会导致权限混乱等问题,也正因如此,需要当相关的Linux发行版正在运行时才能从资源管理器中访问该发行版的文件(参见What’s new for WSL in Windows 10 version 1903)。

Windows 10秋季创意者更新(1709)或更新版本的应用商店中下载的Ubuntu系统,文件位于%localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs中。直接在开始菜单中卸载Ubuntu即可将其全部删除。

Windows 10创意者更新(1703)或更老版本的Bash on Ubuntu on Windows文件系统位于%localappdata%\lxss中。使用lxrun命令可以对它进行管理。lxrun /uninstall命令可将子系统的文件删除。

Windows 10 1709中的Linux子系统(WSL)

如果你在Windows 10 1703或之前版本中使用了Linux子系统,升级到1709版本之后,你会发现你可以在应用商店中下载Ubuntu或者其他的Linux发行版了。但是,在应用商店中安装Ubuntu后,原来的Bash on Ubuntu on Windows还在,你的电脑上就会出现两个Ubuntu。其实这两个Ubuntu是独立的,它们之间的数据不共享。

1703之前版本的Bash on Ubuntu on Windows所在的位置是%localappdata%\lxss\。要卸载旧版本的Linux子系统,可以使用命令lxrun /uninstall,再手动删除home文件夹lxss文件夹。

推荐使用lxrun /uninstall删除旧版本的Linux发行版并使用应用商店中提供的新版Linux发行版。

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

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

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

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

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

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