Visual Studio 自定义模版接受用户输入的参数.docx_第1页
Visual Studio 自定义模版接受用户输入的参数.docx_第2页
Visual Studio 自定义模版接受用户输入的参数.docx_第3页
Visual Studio 自定义模版接受用户输入的参数.docx_第4页
Visual Studio 自定义模版接受用户输入的参数.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何:使用向导来处理项目模板(look MSDN)Visual Studio 2005 提供了 IWizard 接口。在实现该接口后,您可以在用户根据模板创建项目时运行自定义代码。项目模板的自定义可用于: 显示收集用户输入以参数化模板的自定义 UI。 添加要在模板中使用的参数值。 向模板添加其他文件。 执行项目的 Visual Studio 自动化对象模型允许的几乎任何操作。在创建项目过程中的各个时间(从用户单击“新建项目”对话框上的“确定”开始)都会调用 IWizard 接口方法。接口的每个方法都被命名以描述调用该方法的时刻。例如,当 Visual Studio 开始创建项目时,它立即调用 RunStarted,这使其成为编写自定义代码以收集用户输入的一个良好位置。为自定义向导编写的大多数代码将使用 DTE 对象(它是 Visual Studio 自动化对象模型中的主对象)来自定义项目。有关自动化对象模型的更多信息,请参见 Visual Studio Industry Partner (VSIP) program 文档。创建自定义模板向导本主题显示如何创建一个自定义向导,该向导在创建项目之前打开一个 Windows 窗体。此窗体允许用户添加自定义参数值,此值随后在创建项目的过程中被添加到源代码中。主要步骤如下所示,其中每一步都有详细解释。创建自定义模板向导1. 创建实现 IWizard 接口的程序集。2. 将此程序集安装到全局程序集缓存中。3. 创建一个项目并使用“导出模板”向导根据该项目创建模板。4. 通过在 .vstemplate 文件中添加 WizardExtension 元素来修改模板,以将此模板链接到实现 IWizard 的程序集。5. 使用自定义向导创建新项目。实现 IWizard此过程的第一步是创建实现 IWizard 的程序集。此程序集使用 RunStarted 方法显示一个 Windows 窗体,该窗体允许用户添加一个自定义参数值,随后将在创建项目的过程中使用此值。注意 本示例使用 Visual C# 实现 IWizard实现 IWizard1. 创建一个新类库项目。2. 创建实现 IWizard 接口的类。请参见下面的 Visual C# 示例的代码,该示例完全实现了 IWizard 接口。本示例包含两个代码文件:IWizardImplementation,它是一个实现 IWizard 接口的类;以及 UserInputForm,它是用于获得用户输入的 Windows 窗体。IWizardImplementation 类IWizardImplementation 类包含 IWizard 的每个成员的方法实现。在本示例中,只有 RunStarted 方法执行任务。所有其他方法要么不执行任何任务,要么返回 true。RunStarted 方法接受四个参数: Object 参数,可强制转换为根 _DTE 对象,以使您能够自定义项目。 Dictionary 参数,它包含模板中所有预定义参数的集合。有关模板参数的更多信息,请参见模板参数。 WizardRunKind 参数,它包含有关所使用的模板种类的信息。 Object 数组,它包含通过 Visual Studio 传递给向导的一组参数。本示例将一个来自用户输入窗体的参数值添加到 Dictionary 参数中。项目中 $custommessage$ 参数的每个实例都将替换为用户输入的文本。C#using System;using System.Collections.Generic;using Microsoft.VisualStudio.TemplateWizard;using System.Windows.Forms;using EnvDTE;namespace CustomWizard public class IWizardImplementation:IWizard private UserInputForm inputForm; private string customMessage; / This method is called before opening any item that / has the OpenInEditor attribute. public void BeforeOpeningFile(ProjectItem projectItem) public void ProjectFinishedGenerating(Project project) / This method is only called for item templates, / not for project templates. public void ProjectItemFinishedGenerating(ProjectItem projectItem) / This method is called after the project is created. public void RunFinished() public void RunStarted(object automationObject, Dictionary replacementsDictionary, WizardRunKind runKind, object customParams) try / Display a form to the user. The form collects / input for the custom message. inputForm = new UserInputForm(); inputForm.ShowDialog(); customMessage = inputForm.get_CustomMessage(); / Add custom parameters. replacementsDictionary.Add($custommessage$, customMessage); catch (Exception ex) MessageBox.Show(ex.ToString(); / This method is only called for item templates, / not for project templates. public bool ShouldAddProjectItem(string filePath) return true; 用户输入窗体用户输入窗体提供一个用于输入自定义参数的简单窗体。该窗体包含一个名为 textBox1 的文本框和一个名为 button1 的按钮。单击此按钮时,文本框中的文本将存储在 customMessage 参数中。向解决方案添加 Windows 窗体1. 在“项目”菜单上,单击“添加新项”。2. 单击“Windows 窗体”,将文件命名为 UserInputForm.cs,然后单击“确定”。C#using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace CustomWizard public partial class UserInputForm : Form private string customMessage; public UserInputForm() InitializeComponent(); public string get_CustomMessage() return customMessage; private void button1_Click(object sender, EventArgs e) customMessage = textBox1.Text; this.Dispose(); 将程序集安装到全局程序集缓存中必须用强名称对实现 IWizard 的程序集进行签名,并将该程序集安装到全局程序集缓存中。 将程序集安装到全局程序集缓存中1. 用强名称对程序集进行签名实际操作如下:1.打开SDK Command Prompt或者VS2010中的Visual Studio 2010 Command Prompt.而不是windows的cmd2.输入sn -k SampleKey.snk,得到的文件在命令提示符的当前文件夹下(微软叫文件夹很少叫目录,最正点是folder)3.输入sn -p SampleKey.snk SampleKeyPublic.snk4.输入sn -t SampleKeyPublic.snk 得到public key token(注意此值用于模板文件中参数PublicKeyToken的值)打开VS2010,找到项目,然后右击项目名找到属性,属性里面有个Signing的选项卡,然后钩上Sign the assembly,再Choose a strong name key file.做完了操作,然后记得保存,编译这样你的DLL才能拖到GAC,GAC就是全局程序集缓存,这就是为什么你的你的项目的bin文件夹下没有System.Data,你都能引用的原因,因为程序会自动去找GAC2. 将强名称程序集安装到全局程序集缓存中1. 使用全局程序集缓存工具 (Gacutil.exe) 将强名称程序集安装到全局程序集缓存中2. 在命令提示符处,键入下列命令:3. gacutil I 4. 在此命令中,“程序集名称”是要在全局程序集缓存中安装的程序集的名称。5. 下面的示例将文件名为 hello.dll 的程序集安装到全局程序集缓存。6. 示例:gacutil -i hello.dll(dll文件位置)以上操作示例:创建要用作模板的项目在本示例中,用作模板的项目是一个控制台应用程序,它显示在自定义向导的用户输入窗体中指定的消息。创建示例项目1. 创建一个新的 Visual C# 控制台应用程序。2. 在应用程序的 Main 方法中,添加以下代码行。3. Console.WriteLine($custommessage$);当根据模板创建项目时,参数 $custommessage$ 将替换为在用户输入窗体中输入的文本。4. 在“文件”菜单上,单击“导出模板”。5. 在“导出模板”向导中,单击“项目模板”,选择正确的项目,然后单击“下一步”。6. 在“导出模板”向导中,输入关于该模板的描述性信息,选择“自动将模板导入到 Visual Studio 中”复选框,然后单击“完成”。现在,模板显示在“新建项目”对话框中,但没有使用自定义向导。下面的示例显示导出到模板之前的完整代码文件。C#using System;using System.Collections.Generic;using System.Text;namespace TemplateProject class WriteMessage static void Main(string args) Console.WriteLine($custommessage$); 修改模板现在,模板已被创建并显示在“新建项目”对话框中,必须对其进行修改,以便它使用在前面步骤中创建的程序集。向模板添加自定义向导1. 找到包含该模板的 .zip 文件。 1. 在“工具”菜单上,单击“选项”。2. 单击“项目和解决方案”。3. 读取“Visual Studio 用户项目模板位置”文本框。有关更多信息,请参见“选项”对话框 -“项目和解决方案”-“常规”。默认情况下,此位置为 My DocumentsVisual Studio 2010TemplatesProjectTemplates。2. 在 Visual Studio 中打开 .vstemplate 文件。3. 在 TemplateContent 元素后,添加具有自定义向导程序集的强名称的 WizardExtension 元素(Visual Studio 模板)元素。有关查找程序集的强名称的更多信息, 下面的示例显示一个 WizardExtension 元素。 CustomWizard, Version=, Culture=Neutral, PublicKeyToken=fa3902

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论