Windows Live Writer(簡稱 WLW)開源以後變成 Open Live Writer(簡稱 OLW),原先 WLW 的插件在 OLW 下都不能用了,緣由很簡單,WLW 插件開發是基於 WindowsLive.Writer.Api.dll 組件,而 OLW 的插件則是基於 OpenLiveWriter.Api.dll,命名空間都不同了,天然是不可能直接拿過來用的。不過對於插件開發而言,換一個 dll,換一個命名空間,其餘差很少都保持不變。html
對於 WLW 的插件開發,能夠參考以前 仿博客園插入代碼 和 插入摺疊區域功能 兩篇文章,今天這裏則是要將以前 WLW 下的工程修改爲 OLW 使用的插件。git
其中:github
WLW 下載地址:http://windows.microsoft.com/en-us/windows/essentials;windows
OLW 下載地址:http://openlivewriter.org/ Github:https://github.com/OpenLiveWriterapp
若是你想要本身開發一個 OLW 插件,怎麼辦呢?spa
1. 新建一個 Windows 類庫工程;.net
2. 在「程序包管理器控制檯」中,也就是經過 NuGet 執行「Install-Package OpenLiveWriter.SDK -Pre」命令,導入上面提到的 OpenLiveWriter.Api.dll。插件
固然了,你也能夠在安裝完 Open Live Writer 以後,從 C:\Users\用戶文件夾\AppData\Local\OpenLiveWriter\app-0.6.0.0 裏面尋找到該 dll 組件,手動在項目引用處添加該 dll 引用,也是能夠的。命令行
3. 最重要的是要實現 OpenLiveWriter.Api.ContentSource 的繼承擴展類,由此做爲插件的入口。下面根據示例代碼簡單講解一下。調試
1 /// <summary> 2 /// 插件描述屬性設置 3 /// WriterPlugin(string id, string name, 4 /// 屬性: 5 /// [Description = string], 6 /// [HasEditableOptions = bool], 7 /// [Id = string], 8 /// [ImagePath = string], 9 /// [Name = string], 10 /// [PublisherUrl = string] 11 /// </summary> 12 [WriterPlugin( 13 "4d558c25-8a1d-4441-a68f-7cd40c35c514", 14 "插件名稱", 15 Description = "插件描述", 16 HasEditableOptions = true, 17 ImagePath = "插件圖標", 18 PublisherUrl = "插件發佈URL")] 19 [InsertableContentSource("Source Code")] 20 public class ContentSource擴展類 : ContentSource 21 { 22 ... 23 }
繼承 OpenLiveWriter.Api.ContentSource 的擴展類,須要設置 WriterPlugin 特性,用於描述插件的相關配置。WriterPlugin 須要兩個參數,id 和 name,id 直接取工程->屬性->程序集信息 裏的 GUID 便可,也能夠本身設定;name 表示插件的名稱,參考下面的圖示說明。
InsertableContentSource 特性表示在插入部分顯示的一些文本信息。
3. 接下來就要重寫該類中的 CreateContent 方法了。
public virtual DialogResult CreateContent(IWin32Window dialogOwner, ref string content);
第一個參數 dialogOwner 表示當前 OLW 窗口句柄,第二個參數 content 是一個引用,表示從 OLW 中引用過來,指當前在 OLW 窗口中選中的內容,此時就能夠在該方法中對該 content 內容進行處理,最後賦值返回給 content,就能夠實現插件對 OLW 當前內容的封裝處理了。固然也能夠在插件中對剪貼板內容進行整合處理後,再賦值給 content,做爲光標位置處插入的新內容。
4. 若是想要實現上圖中右下角那個「Option」,對插件進行屬性設置,則須要重寫該類中的 EditOptions 方法了。
public virtual void EditOptions(IWin32Window dialogOwner);
1. 如何將生成的自定義插件 dll 自動複製拷貝到 OLW 安裝目錄下呢?
能夠在 工程->屬性->生成事件 裏設置「後期生成事件命令行」,保證在運行後期生成事件成功時,自動將 Debug 目錄下的插件 dll 拷貝到 OLW 安裝目錄下,以下圖所示:
經過 copy 命令,能夠將 $(TargetPath) 指定的dll文件,拷貝到 C:\…\AppData\Local\OpenLiveWriter\app-0.6.0.0\Plugins 文件夾下。(也能夠採用網上提到的 XCOPY /D /Y /R命令進行拷貝,本人是怎麼簡單怎麼來,這些命令詳情能夠查看 cmd,在 cmd 中輸入 help copy,就能夠看到命令幫助提示)
BTW,原先的 WLW 安裝後,目錄是在 C:\Program Files (x86)\Windows Live Writer,而 OLW 安裝後是在 用戶文件夾下的隱藏文件夾 AppData 裏,好比本人的就是 C:\Users\用戶文件夾\AppData\Local\OpenLiveWriter\app-0.6.0.0,並且默認該目錄下沒有 Plugins 文件夾存放插件,能夠手動建立一個用於存放插件 dll。
在編寫自定義插件過程當中,調試是不免的,而該工程項目只是一個 dll 類庫,與 WLW 相似,調試也是須要依賴於 OLW 這個外部程序的。
一樣,須要在 工程->屬性->調試 中設置「啓動外部程序「,並指定到 OLW 安裝目錄下對應的 exe 應用程序文件便可,此時在 VS 項目中點擊啓動,就會自動啓用 OLW 進行插件調試。
剩下的就要靠本身自由發揮了,下一篇介紹在插件中封裝博客園的 SyntaxHighlighter 高亮代碼功能。