为Visual Studio 2010生成和发布扩展

Visual Studio博客

韦斯皮克

Quan收件人–Visual Studio平台团队项目经理
简短的个人简历:Quan负责扩展管理器和Visual Studio SDK。Quan在微软工作了十多年,还曾在Tablet PC团队和Visual Studio部署团队工作过。

与任何以前版本的Visual Studio相比,Visual Studio 2010支持更多现成的平台和语言。然而,VisualStudio最大的优势之一并不在于它附带什么,而是如何扩展它以满足您的个人开发需求。Visual Studio 2010公开了用于构建扩展的新API,并提供了用于发布、共享和查找新扩展的生态系统。

所以,让我们看看创建一个新的编辑器扩展到底有多容易。

在我们的场景中,我们将尝试创建一个简单的WPF视觉效果,每当有人在行首键入问号时,它就会出现在编辑器中。这个视觉效果,我们称之为装饰,将显示一个文本框,您可以使用它在Bing上进行搜索。

步骤1:创建编辑器扩展

一旦你有了Visual Studio SDK安装后,导航到“Visual Basic扩展性”节点。您会注意到,SDK中安装了几个项目模板。

形象

我们提供了用于添加编辑器视觉效果或分类的模板、工具箱控件,甚至还提供了用于将扩展打包到VSIX中的模板。C#也可以使用相同的模板。

对于这个演示,我将创建一个编辑器文本装饰。编辑器文本装饰品模板中的默认代码将在每次出现在编辑器中的字母“a”周围放置一个框。

单击“确定”后,将创建模板。当我按F5调试扩展时,出现了一个VisualStudio的实验实例。这使我可以在一个单独的VS实例中尝试我的扩展,而不用担心破坏我当前的VS示例。

正如你所看到的,所有字母“a”的实例都有一个方框。这有多酷?无需键入任何代码,您就有了一个编辑器扩展!

形象

步骤2:创建装饰

接下来,在解决方案资源管理器中右键单击您的项目名称,选择“添加”,然后选择“新建项目…”…

形象

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

形象

在xaml设计器中复制并粘贴以下xaml代码。它要做的是创建一个带有文本框和按钮的简单搜索框。

形象

<用户控件 x: 班级=“搜索框”

             圣诞节="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

             xml文件:x="网址:http://schemas.microsoft.com/winfx/2006/xaml"

             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

             xml文件:d="http://schemas.microsoft.com/expression/blend/2008" 

             mc:可忽略=“d” 

             d: 设计高度="300" d: 设计宽度="300">

    <网格>

        <边框 高度="77" 宽度="295" 拐角半径="30" 边框画笔=“深蓝” 边框厚度="2" 背景=“浅蓝色”>

            <帆布>

                <按钮 帆布左侧="197" 帆布顶部="35" 内容=“开始” 高度="23" 姓名=“按钮1” 宽度="75" />

                <文本框 帆布左侧="18" 帆布顶部=“35” 高度="23" 姓名=“文本框1” 宽度="173" 选择不透明度="0" 不透明度="1" />

                <标签 帆布左侧="15" 帆布顶部="9" 内容=“输入您的搜索查询” 高度="26" 姓名=“标签1” 宽度="193" />

            </帆布>

        </边框>

 

    </网格>

</用户控件>

步骤3:将装饰添加到扩展中

接下来,打开TextAdorment.vb文件。导航到CreateVisuals功能。这是在字母“a”周围绘制方框的代码。我们想更改它,以便每次有人在编辑器中键入“?”时显示搜索框。

继续并删除CreateVisuals函数中的所有代码。接下来,将以下行添加到函数中:

如果行。范围。获取文本。包含("?")然后

    尺寸作为 新建搜索框

    如果(line.Extent.GetText.Length>1)然后

s.TextBox1.Text=行。范围。获取文本。修剪。基板(1)

    终点 如果

帆布。SetTop(s,line.TextTop)

帆布。设置左侧,行.TextRight

_层。添加装饰(装饰定位行为TextRelative,line.Extent,没有什么,s,没有什么)

终点 如果

附属的

正如您所见,代码非常简单。首先,我们检查当前行中是否有问号。如果有,请创建SearchBox的实例。然后,我们将删除“?”之后的所有内容。我在简化事情,并假设问号是行中的第一个字符。然后代码将获取文本并将其显示在搜索框中。

接下来,设置框的顶部和左侧位置,然后使用新的编辑器API将其添加到装饰列表中。

只需几行简单的代码,您就构建了第一个编辑器扩展!

现在,要试用,请按F5。

VS的实验实例运行后,继续创建控制台应用程序(或在编辑器中加载任何文件)。然后键入问号。您将看到您的扩展已加载到编辑器中。

形象

还有一个技巧我想传授。默认模板将装饰放在编辑器中文本的下方。下图显示了问题。

形象

要解决此问题,可以通过编辑AdornmentFactory.vb文件来指定装饰放置的z顺序。更改以下代码行

<订单(之后:=“选择”之前:=“文本”)>

收件人

<订单(之后:=“文本”之前:=“插入符号”)>

这将把您的装饰放在文本上方,但在插入符号下方。继续构建和部署以查看结果。

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

现在您已经构建了扩展,可以与世界共享它。首先要做的是更新扩展的元数据。您可以通过打开source.extension.vsixmanifest文件来实现这一点。出现了一个基本编辑器,您可以更新ID、名称、作者、版本,甚至可以选择扩展应该使用的VS版本。

注意:扩展仅适用于Integration Shell、Pro、Premium和Ultimate。扩展在Express Editions中不起作用。如果要为Express Editions构建扩展,则只能使用工具箱控件、项模板、项目模板和自定义起始页。

如果在另一个VSIX文件上有引用,清单设计器还允许您指定引用。因为我们的扩展没有任何依赖项,所以暂时将其留空。

更新元数据后,请重新构建。

形象

第五步:分享你的分机

重建后,查看输出文件夹(bindebug或binrelease)。右键单击解决方案资源管理器中的项目,然后选择“在Windows资源管理器中打开文件夹”,即可进入项目文件夹。然后打开箱子[输出]。文件夹将包含。VSIX文件。这是您可以用来上传到VS Gallery的文件,也是其他人将在Extension Manager中使用的文件。

若要上载扩展,请按照Visual Studio库中的简单向导进行操作。

1.浏览浏览器至www.visualstudiogallery.com

2.单击上传

3.使用live id登录

4.对于扩展类型,选择Tool,因为我们上载的是Editor扩展,而不是控件或项目/项模板。单击下一步

5.选择“我想上传我的工具”,然后点击下一个

6.浏览到VSIX位置,选择文件,然后单击next。现在将上传VSIX,并在步骤3的左侧解析和插入元数据。

7.验证左侧的元数据是否正确。然后在右侧,为您的扩展选择一个类别,添加任何标签,然后选择一个成本类别。

8.您还可以向扩展页面添加丰富的HTML。我们创建了四个很酷的模板,您可以将其复制/粘贴到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.一旦你对自己的贡献感到满意,请单击“我同意”,然后单击创建贡献。

形象

发布扩展的最后一步是在预览页面上单击“发布”。

形象

单击“发布”后,任何人都可以下载并安装该扩展。

(请注意,这意味着你的扩展会立即在图库中直播!如果你只是尝试一下,请尽量避免在图库上发布测试扩展,否则你可能最终会得到社区的不良评论和评级)。

第六步:使用分机

要验证扩展是否可用,请加载Visual Studio,然后转到工具/扩展管理器。然后上网搜索你的分机名。

形象

这有多容易?🙂

如果您想了解有关建筑扩展的更多信息,请查看以下链接:

VS可扩展性开发中心

VS 2010扩展性示例

VS 2010 SDK文档

0条评论

讨论结束。

反馈usabilla图标