为Visual Studio 2010创建和发布扩展

开发 后端
Visual Studio 2010比Visual Studio之前所有版本都支持更多的平台和语言。但是,Visual Studio的最大优点之一不在于它有多么强大的功能,而是它可以被扩展以满足你的开发需要。

Visual Studio 2010暴露了用来创建你的扩展的新API,并提供一个用来发布,共享,和找新扩展的生态环境。那么让我们来看看创建一个新编辑器扩展究竟有多简单。

在我们的方案里,我们尝试创建一个简单的WPF效果呈现在编辑器,当有人在行首键入一个问号时。我们把这个WPF效果称作装饰品,它带来一个你可以用来在Bing搜索的输入框。

步骤1:创建一个编辑器扩展

如果你已经安装过Visual Studio SDK,导航到Visual Basic\Extensibility(或C#\Extensibility)节点。你会注意到一些项目模板随着SDK被安装。

创建一个编辑器扩展

我们提供添加编辑器效果或分类,工具栏控件,和一个模板,打包成你的扩展放入VSIX。同样的模板也对C#有效。对于这个示例,我将要创建一个编辑器文本装饰品。编辑器文本装饰品的默认代码会在任何显示在编辑器里的字母“a”后面放一个盒子。

当我点击OK,模板便被创建。当我按下F5来调试此扩展时,一个Visual Studio的实验实例出现。这允许我在一个VS的隔离实例里试验我的扩展,不用担心打扰我当前的VS实例。你可以看见,所有字母“a”背后有一个盒子。是不是很酷?没有键入任何代码,你便拥有一个编辑器扩展!

创建一个编辑器扩展

#p#

步骤2:创建一个装饰器

接下来,在解决方案管理器右击你的项目名称,选择Add,选择New Item。

创建一个装饰器

在Add New Item对话框,选择WPF,选User Control,输入名称SearchBox.xaml。

创建一个装饰器

复制下面的xaml代码粘贴到xaml设计器(译注:删除SearchBox.xaml.cs文件)。它将创建一个简单的搜索框带有一个输入框和一个按钮。

创建一个装饰器

  1. <UserControl x:Class="SearchBox" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
  2. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
  3. xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">   
  4. <Grid> <Border Height="77" Width="295" CornerRadius="30" BorderBrush="DarkBlue" BorderThickness="2" Background="LightBlue">   
  5. <Canvas> <Button Canvas.Left="197" Canvas.Top="35" Content="Go" Height="23" Name="Button1" Width="75" />   
  6. <TextBox Canvas.Left="18" Canvas.Top="35" Height="23" Name="TextBox1" Width="173" SelectionOpacity="0" Opacity="1" /> 
  7.  <Label Canvas.Left="15" Canvas.Top="9" Content="Enter your search query" Height="26" Name="Label1" Width="193" />   
  8. </Canvas> </Border>  </Grid></UserControl> 

#p#

步骤3:将装饰品添加到你的扩展

接下来,打开TextAdorment.vb文件(译注:我使用VS2010RC的C#,没有看到这个文件,但有文件BingSearch.cs)。转到CreateVisuals函数。这里就是在字母“a”后面画一个盒子的代码。我们要改变它,让它在有人在编辑器键入“?”时显示我们的搜索框。删除所有CreateVisuals函数里的代码。然后在函数中添加下面的代码:

  1. If line.Extent.GetText.Contains("?") Then Dim s As New SearchBox If (line.Extent.GetText.Length > 1)
  2.  Then s.TextBox1.Text = line.Extent.GetText.Trim.Substring(1) End If Canvas.SetTop(s, line.TextTop)
  3.  Canvas.SetLeft(s, line.TextRight) _layer.AddAdornment(AdornmentPositioningBehavior.TextRelative, 
  4. line.Extent, Nothing, s, Nothing)End IfSub 

正如你所看到的,代码非常简单。首先,我们检查当前行是否有问号。如果有,创建一个SearchBox实例。我们将删除“?”之后的所有东西。我这里简化了事情假设问号是此行的第一个字符。代码然后将文本显示到搜索框。接下来,设置搜索框的top和left位置,并使用编辑器API将搜索框添加到装饰品列表中。仅仅用了很少几行代码,你已创建了你的第一个编辑器扩展!现在,试试它,按下F5。

一旦VS的实验实例运行起来,请继续并创建一个控制台程序(或加载任何文件到编辑器)。然后键入问号。你将看到编辑器加载了你的扩展。我还要说一件事。默认模板在编辑器里将装饰品放置在文本后面。下面的图片展示了这个问题。

创建一个装饰器 

创建一个装饰器

要修正这一点,你可以通过编辑AdornmentFactory.vb文件来指定装饰品位置的Z序。改变下面的代码行:

  1. <Order(After:="Selection"Before:="Text")> 
  2. <Order(After:="Text"Before:="Caret")> 

这将使你的装饰品放置在文本前,脱字符后。继续并生成看看结果。

#p#

步骤4:编辑你的扩展的元数据

现在你创建了你的扩展,你可以向大家共享它。第一件要做的事是更新此扩展的元数据。你可以打开source.extension.vsixmanifest来修改。一个基本的编辑器展现出来,你可以更新ID,Name,Author,Version,和任何VS可编辑的,扩展可以继续工作。

注意:扩展将只在Integration Shell, Pro, Premium, 和Ultimate工作。扩展不能在Express版工作。如果你要给Express版创建扩展,你被限制成工具箱控件,项模板,项目模板,和自定义起始页。清单设计器也允许你指定引用,如果你引用了另一个VSIX文件。我们保留这里为空,因为目前我们的扩展没有任何依赖项。一旦你更新完元数据,重新生成项目。

编辑你的扩展的元数据

步骤5:共享你的扩展

重新生成后,看看你的输出文件夹(bin\debug或bin\release)。你可以在解决方案管理器里的项目目录右击选择“Open Folder in Windows Explorer”。然后打开bin\[output]。文件夹会包含一个.VSIX文件。你可以用这个文件上传到VS Gallery,而其他人会在扩展管理器看到这个文件。要上传你的扩展,在VS Gallery里跟着下面的向导做。

1.用浏览器打开www.visualstudiogallery.com

2.选择Upload

3.用你的live id登陆

4.为扩展类型选择Tool,因为我们是上传一个编辑器扩展,而不是控件或项目/项模板。点击Next

5.选择“I would like to upload my tool”

6.在上传控件选择VSIX文件,点击next。你的VSIX现在将上传,且元数据被解析且插入到步骤3的左边。

7.核实左边元数据的正确性。在右边,为你的扩展选择类别,添加任何标签,选择一个价格类别。

8.你同样可以在你的扩展页面添加富HTML。我们创建了4个很酷的模板,你可以复制/粘贴到你的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.一旦你对你的价钱已经满意,点击I agree,然后点击Create Contribution。发布扩展的最后一步是在预览页点击publish。一旦你点击publish,此扩展便可以被任何人下载安装。

共享你的扩展 

共享你的扩展 

#p#

步骤6:消费你的扩展

要核实你的扩展是有效的,启动Visual Studio,打开Tools/Extension Manager。然后去网上用你的扩展的名称搜索。

消费你的扩展

【编辑推荐】

  1. Visual Studio 2010中Xaml开发格式设置技巧
  2. Visual Studio 2010中手动添加图片文件
  3. 使用Visual Studio 2010统一管理数据库对象
  4. Visual Studio 2010 TFS探索之旅
  5. Visual Studio 2010更改颜色背景的方法
责任编辑:王晓东 来源: 博客园
相关推荐

2009-05-31 10:36:55

微软VS2010Azure

2010-04-16 14:22:07

Visual Stud

2009-05-19 09:01:16

微软.NETVisual Stud

2009-05-14 09:25:22

微软Visual StudTechEd

2009-12-02 09:43:38

Visual Stud

2009-10-20 09:56:17

Visual Stud

2010-01-12 09:11:18

Visual StudVisual Stud

2011-02-28 10:27:41

Visual Stud

2010-06-12 08:53:17

Visual Stud

2009-11-10 13:43:37

Visual Stud

2010-03-04 13:17:57

Visual Stud

2009-10-20 11:15:12

Visual Stud

2010-10-13 08:57:06

Visual Stud

2009-12-02 13:56:40

Visual Stud

2010-02-22 14:00:29

Visual Stud

2011-03-09 15:49:27

Visual Stud

2010-02-22 16:43:33

Visual Stud

2009-11-11 09:48:06

Visual Stud

2013-11-14 01:09:35

微软Visual StudVisual Stud

2009-12-03 13:24:19

点赞
收藏

51CTO技术栈公众号