与多项目模板的IWizard

时间:2016-02-26 10:30:38

标签: c# visual-studio wizard

我已经创建了一个多项目模板,但我想根据用户输入编辑存储在每个项目中的一些值,我通过单个项目的向导模板工作,但无法为多个项目做

这是RunStarted方法

下的向导类
 wizardFrm = new WizardForm();
 wizardFrm.ShowDialog();
 // call property from wizard form to read user input values
 strProjectPrefix = wizardFrm.ProjectPrefix;
 strwebCall = wizardFrm.WebCall;
 strPrefix = wizardFrm.Prefix;
 strServiceName = wizardFrm.ServiceName;
 strTransmit = wizardFrm.Transmit; 
 strService = wizardFrm.Service; 
 strUniqueID = wizardFrm.UniqueID; 
 strRecordID = wizardFrm.RecordID;
 strQueued = wizardFrm.Queued;
 strEmailSubject = wizardFrm.EmailSubject;
 strEmailCat = wizardFrm.EmailCat;
 strMethod = wizardFrm.Method;
 strTemplate = wizardFrm.Template;
 // sets the Values
 replacementsDictionary.Add(key: "$WebCall$", value: strwebCall);
 replacementsDictionary.Add(key: "$projectPrefix$", value: strProjectPrefix);
 replacementsDictionary.Add(key: "$prefix$", value: strPrefix);
 replacementsDictionary.Add(key: "$serviceName$", value: strServiceName);
 replacementsDictionary.Add(key: "$transmitted$", value: strTransmit);
 replacementsDictionary.Add(key: "$service$", value: strService);
 replacementsDictionary.Add(key: "$uniqueID$", value: strUniqueID);
 replacementsDictionary.Add(key: "$recordID$", value: strRecordID);
 replacementsDictionary.Add(key: "$queued$", value: strQueued);
 replacementsDictionary.Add(key: "$emailSubject$", value: strEmailSubject);
 replacementsDictionary.Add(key: "$Category$", value: strEmailCat);
 replacementsDictionary.Add(key: "$method$", value: strMethod);
 replacementsDictionary.Add(key: "$uriTemplate$", value: strTemplate);

这是我想在其中一个项目中更改的值之一

public const string PREFIX = "$prefix$";

我是否需要为每个项目创建一个向导模板?或者有没有办法用一个向导做到这一点?

此致

1 个答案:

答案 0 :(得分:0)

我设法让这个工作我需要将一个childWizard.cs添加到WizardTemplate项目,然后该项目具有为子项目设置的值。

这是在主模板向导类下创建全局字典所需的代码。

 globalDictionary = new Dictionary<string, string>();
 globalDictionary.Add(key: "$WebCall$", value: strwebCall);

在实现IWizard界面的子向导中

replacementsDictionary.Add(key: "$WebCallchild$", value: WizardClass.globalDictionary["$WebCall$"].ToString());

一旦我在项目类中添加了$ WebCallchild $,我想更新一个值并将下面的内容添加到每个项目的.vstemplate文件中

<WizardExtension>
    <Assembly>
        LayerTemplateWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea9d885401b51155
    </Assembly>
    <FullClassName>LayerTemplateWizard.IWizardChild</FullClassName>
</WizardExtension>

然后它允许我更改所需的所有值。

希望这有助于其他人