解决 Live Writer 语法高亮插件的一个 BUG
On 2011-01-28 03:03:00 By Soli解决 Live Writer 语法高亮插件的一个 BUG
经常写博客的人或许对 Live Writer 非常熟悉,而经常写博客的程序员不但熟悉 Live Writer ,或许还在使用 世友 同学开发的一个插入高亮代码的插件。该插件最新版本是作者于 2009.12.14 发布的 V1.2 版。此版解决了以往的一些 bug ,但仍然有个 bug 导致一个非常严重的错误,使得插件不能使用,并提示“插件初始化异常,未将对象引用设置为对象实例”。在此,本文作者给出了此问题的解决方法。
此问题的原因是,配置文件中“<Language>C++</Language>
”一项保存了上次使用的语言全称 FullName 。而在下次启动时会用这个语言的全称去找对应的Highlighter,但在找的时候却是用 Name.ToLower()
去比较。对某些语言,Highlighter 的 FullName 和 Name 并不相同,比如“C++”是 FullName,但它的 Name 却是“CPP”,经过 ToLower()
之后变成“cpp”,故查找失败,返回 null
。但下面的代码没有判断就直接使用了。从而导致非法使用空对象。
我已经用 V1.1 的版本修改并编译,同时加入了 V1.2 的内容。可以在这里下载。解压后,直接把该 dll 文件拷贝到 Windows Live Writer 的安装目录下的 Plugins 目录下覆盖原文件即可。该路径一般是:“C:\Program Files\Windows Live\Writer\Plugins
”。
如果不想用此版本,也可以暂时绕过此问题,就是在每次启动 Writer 前,把配置文件的“<Language>C++</Language>
”(或其他语言)改为“<Language>cpp</Language>
”,即可。
配置文件名为“profile_code.config
”。V1.1 版的在 Writer 的安装目录;V1.2 版的在“我的文档”下的“Windows Live\Writer\Plugins\cf.SyntaxHighlighting
”目录。
另外,该插件作者公布了该插件V1.1版的源代码,可以从这里下载。本文作者修改后的源代码(自作主张地定为 V1.1.5 版)可以从这里或这里下载。
如果还有问题欢迎在此留下评论与本文作者交流。
或 Email 我:soli{at}cbug.org