我在博客园上写博客是使用Windows Live Writer,代码高亮插件是使用Paste from Visual Studio(下文简称VSPaste)。
Windows Live Writer更进一步的资料,可参照【超详细教程】使用Windows Live Writer 2012和Office Word 2013 颁布文章到博客园全面总结,下载地点在此处。
VSPaste更进一步的资料,可参照CnBlogs博文排版技巧。由于Windows Live Writer 2012的终止日期是2017年1月10日,并且对应的插件网站也*了,所以目前没有官方下载,有需要的可以联系我。
起因好久没更新过博客了,一是懒,二是没什么值得分享的。刚好手上有了一点可以分享的话题,就开始兴高采烈的写博客了。写着写着,发明了VSPaste复制存在丢掉格局的情况,于是就来研究这个问题了。
就丢掉格局的情况举一个例子,好比,我复制的是如下代码:
然而,使用VSPaste插入到Windows Live Writer中后,文字全都成了黑色。绿色和蓝色呢?
查抄VSPaste是否堕落由于VSPaste已经很久没有更新,所以我的第一反响是检察VSPaste是否堕落。为了验证判断,我们不妨事成立一个工程进行测试。
查找入口在成立工程之前,需要先了解Windows Live Writer挪用VSPaste的函数入口。在必应上搜索windows live writer plugin develop,发明有一篇名为Developing Plugins for Windows Live Writer的文章,颠末了解后发明,插件必然担任自ContentSource或者SmartContentSource。此中ContentSource是直接插入HTML到Windows Live Writer中,而SmartContentSource成果会更丰富一些,好比可以添加后编译。
打开ILSpy,将VSPaste的措施集拖入此中。颠末简单检察,发明VSPaste插件的入口类正是担任自SmartContentSource。而且此中做的工作很简单,判断剪贴板中是否存在RTF格局的数据,如果存在,将其转换为HTML。
此外,博客园官方颁布的代码着色控件CNBlogs.CodeHighlighter确实如他们所说的,将代码提交至处事器措置惩罚惩罚。如下图:
填充测试工程通过的分析,我们可以成立一个简单的测试工程。在分析VSPaste入口时,发明其引用了System.Windows.Forms。所以我们不妨事新建一个Windows窗体应用措施来显示转换前的RTF和转换后的HTML。
新建工程后先添加VSPaste的引用,接下来再添加VSPaste所必须的WindowsLive.Writer.Api。这个DLL在哪里呢?由于是Windows Live Writer插件,所以猜度是在Windows Live Writer安置目录下,一查,公然存在这个DLL。可是要是安置目录下不存在该怎么办呢?我对照喜欢用Everything这个软件,可以直接输入文件名称查找,速度又快。但是使用该软件的前提是必需要保证对应的盘是NTFS文件系统。
完成主界面,一个主界面由两个文本框、一个两行的TableLayoutPanel和一个按钮构成,如下:
测试按钮的响应如下:
运行掉败及解决方案我们的测试工程已经完成了,接下来我们运行一下尝尝。编译告成,运行告成,接下来在VS中复制一段代码,点击运行尝尝。非常不幸,呈现了这个错误:
这个错误我有经验,多呈现于P/Invoke场景。也对照好解决,在工程属性的生成标签页中将生成平台改成x86即可。好了,再来测验考试,依然报错:
不科学啊,泛泛都行啊,怎么此次就出问题。再仔细比拟一下,还是有区另外,此次是找到的措施集清单界说与措施集引用不匹配。点击检察详细信息,如下图:
仔细阅读FusionLog的信息,发明应该是WindowsLive.Writer.Api的措施集版本不一致。难道是我哪里疏忽了?
打开ILSpy,检察VSPaste的所引用的WindowsLive.Writer.Api。功效如下图:
再在ILSpy中检察我所安置的Windows Live Writer 2012目录下的WindowsLive.Writer.Api的版本信息。功效如下图: