Visual Studio 自定义模版接受用户输入的参数

2019-01-27 14:28

如何:使用向导来处理项目模板(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

实现 IWizard

1. 创建一个新类库项目。

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); }

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的cmd

2.输入sn -k SampleKey.snk,得到的文件在命令提示符的当前文件夹下(微软叫文件夹很少叫目录,最正点是folder)

3.输入sn -p SampleKey.snk SampleKeyPublic.snk

4.输入sn -t SampleKeyPublic.snk 得到public key token(注意此值用于模板文件中参数PublicKeyToken的值)

打开VS2010,找到项目,然后右击\项目名\找到\属性\,\属性\里面有个\的选项卡,然后钩上

\,再Choose a strong name key file.做完了操作,然后记得保存,编译

这样你的DLL才能拖到GAC,GAC就是\全局程序集缓存\,这就是为什么你的你


Visual Studio 自定义模版接受用户输入的参数.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:附录1资格审查条件资格最低要求

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: