从向导中取消 VS2010 项目创建

Posted

技术标签:

【中文标题】从向导中取消 VS2010 项目创建【英文标题】:Cancel VS2010 project creation from wizard 【发布时间】:2011-04-04 22:19:28 【问题描述】:

我在 VS2010 中为自定义模板创建了一个向导 它就像一个魅力。

但由于向导包含完成项目创建所需的表单,我觉得用户应该可以取消项目的创建。

所以我的问题是..

是否可以从实施 IWizard 的向导中取消项目/模板流程的创建?

这些是我可以支配的事件。

public void BeforeOpeningFile(ProjectItem projectItem)

public void ProjectFinishedGenerating(Project project)

public void ProjectItemFinishedGenerating(ProjectItem projectItem)

public void RunFinished()

public void RunStarted(object automationObject,
        Dictionary<string, string> replacementsDictionary,
        WizardRunKind runKind, object[] customParams)

public bool ShouldAddProjectItem(string filePath)

谢谢!

【问题讨论】:

【参考方案1】:

是的。要表明用户已取消向导,只需在您的 IWizard 实现中添加一个新的 WizardCancelledException。

一篇非常有趣的文章解释了这一切:Pitfalls of cancelling a VSIX project template in an IWizard

【讨论】:

之前我通过从 ProjectFinishedGenerating 事件中删除项目来做到这一点。这实际上与从 RunStarted 方法抛出异常完全相同。您仍然会在项目文件夹中得到一个空的解决方案文件夹。但至少它是“正确的方法”,谢谢 =) 这个线程是旧的,但是在 Visual Studio 2012 中,可以抛出一个 WizardBackoutException 异常,这将返回到新项目屏幕,并且不会为您的解决方案创建空白项目文件夹。跨度> @Rockdocta 在 VS2013 中抛出 WizardBackoutException 会退出,但文件夹仍保留在磁盘上 4 年多前 Aaron Marten 发布了这个答案,并因任何原因被接受......我们今天无法知道的任何原因,因为他分享的链接不再存在。所以这就是为什么如果你回答一个问题,请准确地写出解决方案,这样它将永远帮助人们...... 解决方案/解释仍然存在,并且仍然有效(即抛出 WizardCancelledException)。 FWIW,所提到的帖子似乎已移至新位置。我会更新答案中的链接。

以上是关于从向导中取消 VS2010 项目创建的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 新项目向导制造的 MFC Dialog 程序在调试模式下无法编译?

当项目名称带有连字符时,为啥 VS 2010 ATL 简单对象向导不会生成 .cpp/.h 文件?

vs2005 开发的WEB项目如何发布到IIS上

如何用VS2010编写动态链接库DLL

如何用VS2010编写动态链接库DLL

如何使用VS将项目生成一个安装包?