Paste as Visual Studio Code 是Windows Live writer上很好的插件,我们许多人都用它写blog。代码就可以从Visual Studio直接粘贴到博文中,并以彩色显示。我们很需要它。可是官方的版本不支持中文。如果代码里有中文字符,从Visual Studio2010粘贴中文到Live writer,发现代码的中文都变成了乱码,或者有些字丢失了。开始不明白是什么原因,就琢磨了一下。下面把步骤写一下,供需要的同仁参考。

1. 解出其源代码

  找到该插件的DLL, C:\Program Files (x86)\Windows Live\Writer\Plugins\LavernockEnterprises.PasteAsVSCode.dll,用Reflector打开。右键点最上面一层的“LavernockEnterprises.PasteAsVSCode”节点,选“Export”,然后再选定一个路径,就可以将其所有类都找出其源代码。其间会要求定位“WindowsLive.Writer.Api.dll”,找到就是了,在C:\Program Files (x86)\Windows Live\Writer。即Live writer安装的目录。WindowsLive.Writer.Api.dll也会被Reflector打开。不需要解出WindowsLive.Writer.Api.dll的源码。如此这样就可以将其全部源码都解出。

让Paste as Visual Studio Code支持Visual Studio 2010粘贴的中文--自己动手丰衣足食

2. 整理其代码

  找到源代码输出的目录,发现有一个LavernockEnterprises.PasteAsVSCode.csproj,还有一个LavernockEnterprises目录。双击LavernockEnterprises.PasteAsVSCode.csproj,打开了Visual Studio 2010. 因为目前Reflector输出的csproj文件的版本是Visual Studio 2008支持的,需要转换成Visual Studio 2010支持的格式。Visual Studio 2010会先转换它。一路点Next(呵呵,机械性的),最后转换结束。先保存,.sln文件就保存了。点一下Build->Rebuild solution。发现不能编译。后来发现是对WindowsLive.Writer.Api.dll的引用损坏。就将该引用删除,然后重新从C:\Program Files (x86)\Windows Live\Writer下加了一下对WindowsLive.Writer.Api.dll的引用。再编译,就可以通过了。

3. 分析其代码

  看了一下该工程,里面就四个cs文件是主要的:PasteAsVSCodeProperties.cs,PasteAsVSCodeGenerator.cs,PasteAsVSCodeEditor.cs,PasteAsVSCode.cs。大概浏览了一下,

发现其内的一个叫”PasteAsVSCodeGenerator“的类中有一个方法是叫这样的名字:

private string GenerateHtmlFromRtf(string rtf)

就是用于产生HTML的核心代码。该方法很长,也挺复杂,一时间不容易懂。于是就调试该方法。该工程是一个Class library类型的工程,不可能作为主程序启动。那么就打开工程“LavernockEnterprises.PasteAsVSCode”的Properties窗口。

让Paste as Visual Studio Code支持Visual Studio 2010粘贴的中文--自己动手丰衣足食

走到Debug页,在Start Action节选定”Start external program, 然后再点击右边的查找文件按钮(三个点的按钮)。找到WindowsLiveWriter.exe并选定它。如图。另外,到LiveWriter插件的目录,即此处C:\Program Files (x86)\Windows Live\Writer\Plugins,将官方版本的DLL改名成LavernockEnterprises.PasteAsVSCode.dll1,然后再到Properties窗口的Build页,将Output path设定成C:\Program Files (x86)\Windows Live\Writer\Plugins。这是要做什么?其实就是将你编译的DLL替换官方的DLL。一切准备停当,可以开始调试了。

4.   调试其代码

   在GenerateHtmlFromRtf方法内部设断点,按F5键运行程序,只见Windows Live Writer在启动。等启动完成了。在Visual Studio 2010里面打开一个有中文字的cs文件。选取一段有中文字的代码,Ctrl + C复制,再切换到Live Writer,点插件里面的“Paste As Visual Studio Code“,很快就会在断点处断下来。然后一步步跟着走程序。这个Visual Studio贴出来的内容是Rtf格式的。GenerateHtmlFromRtf方法负责将Rtf格式全部转化成HTML代码。现在就是对中文支持不好。就是要找到其根源。这么一行代码复制到剪贴板上之后,

  • this.Text = "VS2010复制内容乱码修正";
  • 相关文章:

    • 2021-12-26
    • 2021-11-16
    • 2022-12-23
    • 2021-05-11
    • 2022-02-23
    • 2021-06-11
    猜你喜欢
    • 2021-12-29
    • 2021-10-22
    • 2021-11-18
    • 2021-08-01
    • 2021-10-14
    • 2021-11-11
    • 2022-03-10
    相关资源
    相似解决方案