带有多项目模板的 IWizard

IWizard with multi project template

我创建了一个多项目模板,但我想根据用户输入编辑存储在每个项目中的一些值多个项目。

这是 RunStarted 方法

下的向导class
 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$";

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

此致

艾丹

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

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

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

并且在实现IWizard接口的子向导中

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

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

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

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

希望这对其他人有帮助

艾丹