使用 EMGU 示例创建自定义 VSIX 项目模板
创建可部署自定义项目模板的完整指南
EMGU VSIX 项目模板 (V2.3)
文章中使用的示例项目
示例 VSIX 项目模板
引言
下面的教程解释了如何生成您自己的自定义 Microsoft 项目模板。如果您的项目很复杂,并且基于自定义动态链接库和许多外部组件,那么自定义模板可以节省大量时间。虽然下面的教程基于 C# 和 EMGU,但所有过程都是真实的,并且可以移植到生成您自己的项目。
本教程旨在让用户能够轻松地在社区或同事之间导出项目。可以在 2008 年制作自定义项目模板,但导出它们需要安装在特定文件夹中。这可能会因用户而异,而 VS 2010 通过引入 VSIX 项目模板解决了这个问题。
先决条件和假设知识
不幸的是,要生成自定义模板,您需要 Visual Studio 2010,并安装 Service Pack 1 和 SP1 SDK。Service Pack 1 可以在此处下载,VS 2010 SP1。SP1 SDK 可以在此处下载,VS 2010 SP1 SDK
确保安装后重新启动 Visual Studio,以便正确使用该扩展。
假定读者熟悉 C# 环境,能够创建自己的项目。了解如何导入文件以及动态链接库的用途。虽然其中一些内容将在教程中涵盖,但对于完全的初学者来说,详细程度可能不够。
项目模板
那么什么是项目模板
项目模板是您在 Visual Studio 中启动新项目时看到的内容。它本质上是一个空项目,包含您开始创建应用程序所需的所有先决条件。以标准的 Windows 窗体为例,VS 如何知道在新窗体及其代码中创建一个项目,将其链接为启动窗体,甚至将其命名为Form1
?它使用模板,这适用于许多不同的应用程序,Word、Excel 甚至您的手机都会有用于多媒体消息和文本等项目的模板。
那么为什么你应该使用项目模板?
模板可以为我们节省时间,节省时间,我们就能节省金钱。这是否意味着您应该为您创建的每个项目都创建一个?不……项目模板是一种工具,因此应仅在必要时使用。本示例中使用 EMGU 的原因是因为使用项目模板非常理想。它是一个复杂的项目,需要许多不同的外部组件,包括自定义 DLL。
那么为什么你应该使用项目模板?
让我们想象一下,您为您的公司开发了一个自定义 DLL,比如用于广告,而您的公司有一个带有默认关于框和默认图标的徽标,这是一个合理的假设。现在想象一下,您的公司采用了您的 DLL,而为您的公司开发任何程序的每个人现在都使用它,以及您的公司徽标、关于框和图标。这意味着对于他们创建的每个程序,他们必须做的第一件事就是引用您的 DLL,然后将徽标导入到他们的项目中。然后将关于框现有窗体导入到他们的项目中。这已经是一个复杂的系统,而且容易出错。
现在使用自定义项目模板,当用户创建一个新项目时,他们会使用自定义模板,而所有这些工作都为他们完成了。虽然我敢肯定您会想象您的老板会非常感谢您,给您升职和大幅加薪,但说实话,这不会发生,但至少您为人类做出了贡献,也许可以防止您的一些同事将自己/或电脑扔出窗外。
第一步——做好基础工作
现在要创建项目模板,您必须先创建项目。创建自定义项目有一个关键步骤,那就是使用自定义 DLL。所以不要仅仅浏览这一部分。
添加 DLL 引用
项目模板将不包含外部引用的 DLL。但是,它将包含您包含在项目中的任何文件。因此,在项目资源管理器中创建一个文件夹,并将您的 DLL 作为现有项添加到此文件夹中。在此示例中,它们将被放置在一个名为Lib的文件夹中,所需的 DLL 是
- Emgu.CV.dll
- Emgu.CV.GPU.dll
- Emgu.CV.ML.dl
- Emgu.CV.UI.dll
- Emgu.Util.dll
您的解决方案资源管理器现在看起来会像这样
该文件夹不是必需的,但它能保持整洁。现在像往常一样引用项目中的复制 DLL,使用浏览……项目文件夹……/DLL/mydllfile.dll。
稍后您可以检查以确保您正确执行了此步骤。
添加其他文件
像在普通项目中一样添加图像和其他文件或窗体。您可以使用目录结构,就像我们使用 DLL 文件一样,以保持整洁。在 EMGU 示例中,OpenCV 包装的库需要直接放在bin目录中。不要忘记设置属性,例如始终复制…,因为这些属性将复制到您的项目模板中。在此示例中,只需两个附加文件即可支持基本的图像处理技术。
- opencv_core***.dll
- opencv_imgproc***.dll
注意:*** 是版本号
窗体设计
您必须首先按照您想要的方式布局您的窗体,在这种情况下,将在窗体上放置一个简单的 PictureBox,当程序启动时,图像将在此 PictureBox 中绘制和显示。不怎么冒险,但您可以拥有任意数量的控件,在 EMGU 的情况下,用户可以开发的界面设计是无止境的。
代码后台
代码后台也添加到项目模板中,因此如果您有一个总是使用的函数但不需要额外的类,则将其包含在内;同样,如果您添加了类,为什么不将其代码后台用于调用它们?在我们的例子中,我们只打算使用一个简单的“Hello World”类型的代码。它创建一个新图像并在中心写入 EMGU,然后显示它。所有这些只是测试应用程序是否正常工作,其余的由用户决定。
//EMGU
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
.....
public Form1()
{
InitializeComponent();
//Test
Image<Bgr, Byte> img = new Image<Bgr,
byte>(400, 400, new Bgr(0, 0, 0)); //Create an image of 400x200 of Black color
MCvFont f = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 1.2, 1.2); //Create the font
img.Draw("EMGUcv", ref f, new System.Drawing.Point(135, 180),
new Bgr(0, 255, 0)); //Draw "Hello, world." on the image using the specific font
pictureBox1.Image = img.ToBitmap();
}
现在您有了项目,运行它并进行测试,修复任何您想要的错误,以便在打开项目模板后立即运行它。
创建项目模板
创建项目模板非常简单,只需左键单击文件 => 导出模板。如果您尚未保存更改,系统会提示您先保存,然后再继续。我们要正确操作,所以我们暂时不将项目导出为 vsix。
此时将出现“导出模板”向导,我们希望导出整个项目模板,所以只需选择下一步 >。
现在您可以设置模板详细信息,例如
- 模板名称
- 模板描述
- 图标图像
- 预览图像
您可以将这些留空,但您可能会发现您希望添加自己的图标,否则将使用一些不太理想的默认图标。它也使事情更具吸引力。在此示例中,我们将使用 EMGU 图标和一张提前准备好的屏幕截图。如有必要,您可以在此时选择取消,收集您的项目并重复最后几个步骤。
选择好项目后,请确保取消选中“自动将模板导入 Visual Studio”复选框。稍后我们将测试我们是否可以使用该项目,但如果您忘记了,请跳至“在客户端计算机上安装和卸载”部分以删除该项目。
模板将保存到默认位置,为一个 zip 文件,您可以看到 EMGU 模板项目发布有多个模板。默认目录将在 Windows 资源管理器中自动打开,但如果您关闭它,它们将位于此处:\Documents\Visual Studio 2010\My Exported Templates。
您可以使用合适的工具浏览项目文件夹,以确保所有文件都已正确传输。根据需要为多个模板重复此过程,直到拥有所有必需的模板。
创建 VSIX 导出模板
现在我们有了项目模板,我们将创建一个 VSIX 项目,所以在 VS 中,选择新建项目。寻找“扩展性”的子内容,您应该会看到一个 VSIX 项目选项,如下所示
如果您没有看到此项目类型,请确保您已安装 Microsoft Visual Studio Service 1 SDK,链接在“先决条件”标题下。
当您的 VSIX 项目打开时,您将立即看到源扩展清单文件。填写基本字段,例如产品名称、作者、版本和描述。ID 将是一长串随机字符,请将其保留,因为它们是唯一标识符,但您可以编辑它们前面的文本。
您现在需要选择您的项目模板将工作的版本,这至关重要,默认是您正在使用的版本。您可能只想将使用限制在 VS 的 Professional 版本,或者允许多个语言使用该模板。
现在我们到了向 VSIX 项目添加内容,即我们的项目模板的阶段。左键单击“添加内容”按钮,将出现一个弹出窗口指导您。将内容类型选择为“项目模板”。
然后选择文件并导航到我们在上一节中生成的自定义项目模板.zip文件。
现在,如果我们有多个项目模板,我们将希望在子目录中为新项目创建所有这些模板。为此,请在“添加到子文件夹”字段中输入您希望使用的名称。如果您希望将自定义项目模板添加到根目录,请将其留空。如果您想同时执行这两个操作,那么您需要添加两个相同的项目文件,一个不设置子文件夹,一个设置您想要的子文件夹。在此示例中,将使用 Custom Project 子文件夹。
您现在将在解决方案资源管理器窗口中看到您的项目文件。您可以在此处随时重新组织 VSIX 项目的结构。
继续根据需要添加项目模板,直到达到所需的结构。完成后,就可以生成解决方案了,所以选择菜单项生成=>生成解决方案或按F6。
导航到项目的Bin目录,您将在其中看到一个.vsix项目文件。如果您想查看文件内部,请将扩展名重命名为.zip,您也可以在此处安排目录,但这很容易出错。VSIX 文件就是您所需要的,所以将其复制并粘贴到桌面上,然后就可以进行安装测试了
在客户端计算机上安装和卸载
安装
要在计算机上安装 VSIX 项目,请确保已安装并退出 VS 2010。您可以在 VS 仍打开时安装 VSIX 模板,但直到关闭并重新启动 VS 后才能显示。您将看到一个安装向导,询问要将模板项目安装到哪个 VS 版本,选择相应的版本,然后单击安装。如果您正确生成了所有文件,将显示成功消息
现在重新打开 VS,选择新建项目,导航到您选择的子目录(如果您使用了子目录),或者查看可用模板列表,您应该会在其中找到您的模板。
卸载
现在,如果您刚刚完成了一个测试项目并且想要删除模板,这非常简单。选择菜单选项工具=>扩展管理器。
此时将出现扩展管理器,显示所有扩展,例如您的自定义模板项目。只需选择扩展,然后选择卸载按钮。将出现一个提示,询问您是否确定要卸载它,只需单击是。无需重新启动 VS。
历史
- [1] 2012年3月12日:EMGU 项目模板 Beta 版发布
- [2] 2012年3月27日:正式发布并发布文章