VSTO簡介及發展

2021-06-03 22:30:42 字數 2760 閱讀 2637

分類: 

vsto2007-09-29 19:32 8015人閱讀 

收藏舉報

一.什麼是vsto?

個人的理解,vsto是visual studio的乙個package。做過visual studio 擴充套件的人可能知道,visual studio可以通過三種方式進行功能的擴充套件開發:macro, add-in, package。而整個visual studio可以看作由所有具有不同功能的package組合而成的,這些packages就是winform, smartdevice, web development等等。而vsto是他們之中的一員,它支援用託管**來進行office的擴充套件開發。

在過去,人們通常使用vba來進行office的擴充套件開發。vba是乙個很簡單的開發環境,整合在很多office的產品中。每個office的產品,如word,excel,outlook,都通過com暴露了非常豐富的物件模型,供程式設計師程式設計。我們就是用vba和這些office的com物件模型對office進行擴充套件開發的。最常見的是增加一些自定義的按鈕,還有自定義響應一些事件。但是vba有很多不足之處。首先,它只面對vb指令碼語言,並且開發環境顯得簡單,不夠強大。最致命的是,vba把**分別嵌入到每個文件中去,這導致萬一出現bug,或者專案需要公升級時,就很難處理。需要對於每個文件進行修改,這種低效率在企業級應用中是無法容忍的。vba的另乙個問題:安全保護做得很薄弱,很多人可以利用巨集製造病毒。

microsoft想用visual studio .net和.net framework來解決這些問題,所以vsto應運而生。官方文件上描述的是,目前發布了的vsto有兩個版本vsto 2005和vsto 2005 se。前者提供了6種專案模板: word document,word template,excel document,excel template,outlook add in,infopath form template。這裡所有的模板都只是針對於office 2003而言的。除了outlook add in之外,所有模板用來開發文件級應用。vsto 2005 se(second edition), 提供了11種模板,全部都是add in:包括word, excel, outlook, powerpoint, visio的2003和2007 add in 10個,再加乙個infopath 2007的add in. 所謂的add in, 就是常說的外掛程式,或者叫程式級應用。事實上,vsto 2005是vsto的第二個版本,第乙個版本是vsto 2003, 整合在visual studio .net之中,它是微軟第一次嘗試將.net託管**與office物件模型整合到一塊兒。它是我們現在看到的vsto 2005的乙個框架,vsto 2005比它多了很多功能,如actionspane, datacache, smarttag等等。

二.文件級和應用程式級專案的區別

那什麼是文件級應用,什麼是程式級應用,它們有什麼區別呢?

文件級應用就是所寫的**,都是針對於某單個文件而言的。只有在使用者開啟這個文件時,自定義**才會被裝載。

而程式級應用是指,無論使用者是開啟哪個文件,還是新建乙個空白文件,只要他開啟相應的office程式,自定義**都會被裝載。

這兩種不同的行為決定了,文件級應用和程式級應用,採用了不同的實現方式。事實上,它們兩個都是將**編譯到乙個程式集(assembly)裡面,也就是託管**中的dll檔案。不同的是,對於不同的應用,如何告訴office到哪兒去找這個dll檔案並裝載它呢?microsoft使用了乙個叫manifest的東西,manifest記載了dll檔案在哪兒,以及**的入口點是什麼。。。。。

add in把manifest單獨作為乙個檔案部署,每當使用者開啟office的時候,office會先到登錄檔中尋找外掛程式資訊,其中包括了manifest的儲存位置。找到manifest後,再根據manifest中的資訊載入dll中的**。所有com add in資訊儲存在登錄檔如下的位置:(如果是給所有使用者部署的add in,也有可能在hklm中的對應位置)

文件級應用,有所不同,它把manifest嵌入到了文件裡面,每當這個文件被開啟的時候,office從該文件內嵌的manifest中得到dll的資訊,然後裝載我們的**。因為文件級應用的manifest是內建的,所以修改起來比較麻煩。我們可以使用serverdocument提供的幾個方法來修改dll檔案的位置。**如下:

if (serverdocument.iscustomized(solutiondocument))

serverdocument.addcustomization(

solutiondocument, assemblyname, manifestpath,

三新版vsto

vsto的下乙個版本是vsto 3, 整合在visual studio 2008中,現在尚處於beta 2版本,大概年底會發布。vsto 3新新增了對很多專案的支援,所有專案模板如下圖:

vsto 3的新功能:

對office 2007的文件級應用的支援,

視覺化的自定義office2007的ribbon,

在visual studio 2008設計outlook form region,

share point workflows 專案等。

MySQL的簡介及發展歷

mysql的簡介 mysql 是乙個關係型資料庫t管理系統,由瑞典mysql ab公司開發 由於體積小 速度快 總體擁有成本低,尤其是開放原始碼這一特點,許多中小型 為了降低 總體擁有成本需選擇了mysql作為 資料庫。最開始由sun公司收購,後面被甲骨文oracle公司收購 sql nosql n...

Python發展簡介

python是由guido van rossum在八十年代末和九十年代初,在荷蘭國家數學和計算機科 學研究所設計出來的。python本身也是由諸多其他語言發展而來的,這包括abc modula 3 c c algol 68 smalltalk unix shell和其他的指令碼語言等等。像perl語...

程式設計的發展史及Python簡介

程式語言分為三類,分別是機器語言,組合語言和高階程式語言。高階語言有編譯型和解釋型兩種。編譯型 一次編譯一整個檔案,編譯的過程需要用到編譯器。解釋型 逐行逐行的翻譯,解釋的過程需要用到直譯器。三種語言的比較 學習難度 機器語言 組合語言 高階語言 執行效率 機器語言 組合語言 高階語言 編譯型 解釋...