C# 项目向导完成之前已创建项目
我为我的模板创建了一个项目向导。使用此向导,用户可以填写应用程序名称等内容,然后创建应用程序。问题是向导已启动,但随后会立即创建项目,而不是在完成向导后创建。这意味着没有进行替换 我有这个表格(大大简化):C# 项目向导完成之前已创建项目,c#,visual-studio,project,wizard,project-template,C#,Visual Studio,Project,Wizard,Project Template,我为我的模板创建了一个项目向导。使用此向导,用户可以填写应用程序名称等内容,然后创建应用程序。问题是向导已启动,但随后会立即创建项目,而不是在完成向导后创建。这意味着没有进行替换 我有这个表格(大大简化): 使用向导: public class Wizard : IWizard { private readonly Form _form = new Form(); public void RunStarted(object automationObject, Diction
使用向导:
public class Wizard : IWizard
{
private readonly Form _form = new Form();
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
{
try
{
_form.Show();
string name = _form.Name.Text;
if (!string.IsNullOrEmpty(name)) replacementsDictionary.Add("$appname$", name);
}
catch (Exception e)
{
}
}
public bool ShouldAddProjectItem(string filePath)
{
return true;
}
public void RunFinished()
{
}
public void BeforeOpeningFile(ProjectItem projectItem)
{
}
public void ProjectItemFinishedGenerating(ProjectItem projectItem)
{
}
public void ProjectFinishedGenerating(Project project)
{
}
}
公共类向导:IWizard
{
私有只读表单_Form=新表单();
public void RunStarted(对象自动对象、字典替换Dictionary、向导runKind runKind、对象[]customParams)
{
尝试
{
_form.Show();
字符串名称=_form.name.Text;
if(!string.IsNullOrEmpty(name))replacementsDictionary.Add(“$appname$”,name);
}
捕获(例外e)
{
}
}
公共bool ShouldAddProjectItem(字符串文件路径)
{
返回true;
}
public void RunFinished()
{
}
打开文件之前的公共无效(ProjectItem ProjectItem)
{
}
公共无效项目完成生成(项目项目)
{
}
公共无效项目完成生成(项目)
{
}
}
我用以下代码将其绑定到我的模板:
<WizardExtension>
<Assembly>PartyTemplateWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=6c4fd97fa2ac3b4f</Assembly>
<FullClassName>PartyTemplateWizard.Wizard</FullClassName>
</WizardExtension>
是否有人知道向导成功完成之前创建项目的原因(尽管由于“确定”按钮上还没有事件处理程序,因此无法创建项目)?尝试使用\u form.ShowDialog()相反,代码>将阻止主线程。目前看来,RunStarted
方法执行时没有阻塞,因此不使用自定义表单。尝试使用\u form.ShowDialog()相反,代码>将阻止主线程。目前看来,RunStarted
方法执行时没有阻塞,因此不使用自定义表单。太棒了!这完美地解决了问题:)我的替代品现在很好用。太棒了!这完美地解决了问题:)我的替代品现在可以正常工作了。
<WizardExtension>
<Assembly>PartyTemplateWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=6c4fd97fa2ac3b4f</Assembly>
<FullClassName>PartyTemplateWizard.Wizard</FullClassName>
</WizardExtension>