為Visual Studio 2010創(chuàng)建和發(fā)布擴展
Visual Studio 2010暴露了用來創(chuàng)建你的擴展的新API,并提供一個用來發(fā)布,共享,和找新擴展的生態(tài)環(huán)境。那么讓我們來看看創(chuàng)建一個新編輯器擴展究竟有多簡單。
在我們的方案里,我們嘗試創(chuàng)建一個簡單的WPF效果呈現(xiàn)在編輯器,當(dāng)有人在行首鍵入一個問號時。我們把這個WPF效果稱作裝飾品,它帶來一個你可以用來在Bing搜索的輸入框。
步驟1:創(chuàng)建一個編輯器擴展
如果你已經(jīng)安裝過Visual Studio SDK,導(dǎo)航到Visual Basic\Extensibility(或C#\Extensibility)節(jié)點。你會注意到一些項目模板隨著SDK被安裝。
我們提供添加編輯器效果或分類,工具欄控件,和一個模板,打包成你的擴展放入VSIX。同樣的模板也對C#有效。對于這個示例,我將要創(chuàng)建一個編輯器文本裝飾品。編輯器文本裝飾品的默認(rèn)代碼會在任何顯示在編輯器里的字母“a”后面放一個盒子。
當(dāng)我點擊OK,模板便被創(chuàng)建。當(dāng)我按下F5來調(diào)試此擴展時,一個Visual Studio的實驗實例出現(xiàn)。這允許我在一個VS的隔離實例里試驗我的擴展,不用擔(dān)心打擾我當(dāng)前的VS實例。你可以看見,所有字母“a”背后有一個盒子。是不是很酷?沒有鍵入任何代碼,你便擁有一個編輯器擴展!
#p#
步驟2:創(chuàng)建一個裝飾器
接下來,在解決方案管理器右擊你的項目名稱,選擇Add,選擇New Item。
在Add New Item對話框,選擇WPF,選User Control,輸入名稱SearchBox.xaml。
復(fù)制下面的xaml代碼粘貼到xaml設(shè)計器(譯注:刪除SearchBox.xaml.cs文件)。它將創(chuàng)建一個簡單的搜索框帶有一個輸入框和一個按鈕。
- <UserControl x:Class="SearchBox" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">
- <Grid> <Border Height="77" Width="295" CornerRadius="30" BorderBrush="DarkBlue" BorderThickness="2" Background="LightBlue">
- <Canvas> <Button Canvas.Left="197" Canvas.Top="35" Content="Go" Height="23" Name="Button1" Width="75" />
- <TextBox Canvas.Left="18" Canvas.Top="35" Height="23" Name="TextBox1" Width="173" SelectionOpacity="0" Opacity="1" />
- <Label Canvas.Left="15" Canvas.Top="9" Content="Enter your search query" Height="26" Name="Label1" Width="193" />
- </Canvas> </Border> </Grid></UserControl>
#p#
步驟3:將裝飾品添加到你的擴展
接下來,打開TextAdorment.vb文件(譯注:我使用VS2010RC的C#,沒有看到這個文件,但有文件BingSearch.cs)。轉(zhuǎn)到CreateVisuals函數(shù)。這里就是在字母“a”后面畫一個盒子的代碼。我們要改變它,讓它在有人在編輯器鍵入“?”時顯示我們的搜索框。刪除所有CreateVisuals函數(shù)里的代碼。然后在函數(shù)中添加下面的代碼:
- If line.Extent.GetText.Contains("?") Then Dim s As New SearchBox If (line.Extent.GetText.Length > 1)
- Then s.TextBox1.Text = line.Extent.GetText.Trim.Substring(1) End If Canvas.SetTop(s, line.TextTop)
- Canvas.SetLeft(s, line.TextRight) _layer.AddAdornment(AdornmentPositioningBehavior.TextRelative,
- line.Extent, Nothing, s, Nothing)End IfSub
正如你所看到的,代碼非常簡單。首先,我們檢查當(dāng)前行是否有問號。如果有,創(chuàng)建一個SearchBox實例。我們將刪除“?”之后的所有東西。我這里簡化了事情假設(shè)問號是此行的第一個字符。代碼然后將文本顯示到搜索框。接下來,設(shè)置搜索框的top和left位置,并使用編輯器API將搜索框添加到裝飾品列表中。僅僅用了很少幾行代碼,你已創(chuàng)建了你的第一個編輯器擴展!現(xiàn)在,試試它,按下F5。
一旦VS的實驗實例運行起來,請繼續(xù)并創(chuàng)建一個控制臺程序(或加載任何文件到編輯器)。然后鍵入問號。你將看到編輯器加載了你的擴展。我還要說一件事。默認(rèn)模板在編輯器里將裝飾品放置在文本后面。下面的圖片展示了這個問題。
要修正這一點,你可以通過編輯AdornmentFactory.vb文件來指定裝飾品位置的Z序。改變下面的代碼行:
- <Order(After:="Selection", Before:="Text")>
- <Order(After:="Text", Before:="Caret")>
這將使你的裝飾品放置在文本前,脫字符后。繼續(xù)并生成看看結(jié)果。
#p#
步驟4:編輯你的擴展的元數(shù)據(jù)
現(xiàn)在你創(chuàng)建了你的擴展,你可以向大家共享它。第一件要做的事是更新此擴展的元數(shù)據(jù)。你可以打開source.extension.vsixmanifest來修改。一個基本的編輯器展現(xiàn)出來,你可以更新ID,Name,Author,Version,和任何VS可編輯的,擴展可以繼續(xù)工作。
注意:擴展將只在Integration Shell, Pro, Premium, 和Ultimate工作。擴展不能在Express版工作。如果你要給Express版創(chuàng)建擴展,你被限制成工具箱控件,項模板,項目模板,和自定義起始頁。清單設(shè)計器也允許你指定引用,如果你引用了另一個VSIX文件。我們保留這里為空,因為目前我們的擴展沒有任何依賴項。一旦你更新完元數(shù)據(jù),重新生成項目。
步驟5:共享你的擴展
重新生成后,看看你的輸出文件夾(bin\debug或bin\release)。你可以在解決方案管理器里的項目目錄右擊選擇“Open Folder in Windows Explorer”。然后打開bin\[output]。文件夾會包含一個.VSIX文件。你可以用這個文件上傳到VS Gallery,而其他人會在擴展管理器看到這個文件。要上傳你的擴展,在VS Gallery里跟著下面的向?qū)ё觥?/p>
1.用瀏覽器打開www.visualstudiogallery.com
2.選擇Upload
3.用你的live id登陸
4.為擴展類型選擇Tool,因為我們是上傳一個編輯器擴展,而不是控件或項目/項模板。點擊Next
5.選擇“I would like to upload my tool”
6.在上傳控件選擇VSIX文件,點擊next。你的VSIX現(xiàn)在將上傳,且元數(shù)據(jù)被解析且插入到步驟3的左邊。
7.核實左邊元數(shù)據(jù)的正確性。在右邊,為你的擴展選擇類別,添加任何標(biāo)簽,選擇一個價格類別。
8.你同樣可以在你的擴展頁面添加富HTML。我們創(chuàng)建了4個很酷的模板,你可以復(fù)制/粘貼到你的HTML控件來讓你的頁面非常突出。這些模板在:
http://visualstudiogallery.msdn.microsoft.com/templates/template1.html
http://visualstudiogallery.msdn.microsoft.com/templates/template2.html
http://visualstudiogallery.msdn.microsoft.com/templates/template3.html
http://visualstudiogallery.msdn.microsoft.com/templates/template4.html
9.一旦你對你的價錢已經(jīng)滿意,點擊I agree,然后點擊Create Contribution。發(fā)布擴展的最后一步是在預(yù)覽頁點擊publish。一旦你點擊publish,此擴展便可以被任何人下載安裝。
#p#
步驟6:消費你的擴展
要核實你的擴展是有效的,啟動Visual Studio,打開Tools/Extension Manager。然后去網(wǎng)上用你的擴展的名稱搜索。
【編輯推薦】