【问题标题】:VS Wizard Template - Change Project solution and directoryVS 向导模板 - 更改项目解决方案和目录
【发布时间】:2014-04-02 11:52:29
【问题描述】:

我正在 Visual Studio 2012 上使用 c# 编写 Visual Studio 向导模板。

我按照 MSDN 的步骤操作: 我创建了一个 VS 模板,然后我创建了一个带有实现 IWizard 接口的类的类库项目,我配置了 .vstemplate 文件等等......

现在,我的目标是编写RunStarted 函数代码,它执行以下操作:

在创建项目时,它将另一个现有解决方案目录从另一个位置复制到新项目选择的位置,然后,新项目将添加到复制的解决方案中,而不是在新解决方案中创建新项目,在一个特定的“apps”文件夹,并且不会创建新的解决方案。

RunStarted 方法中,我编写了一个简单的CopyDirectory 代码,它将所需的解决方案复制到我从ReplacementsDictionary 参数中提取的$SolutionDirectory$。但是现在,我无法继续并更改新的项目配置,尽管它将作为复制解决方案的项目生成。

您对这个问题有任何想法吗? 谢谢!!

【问题讨论】:

    标签: c# templates visual-studio-2012 projects-and-solutions


    【解决方案1】:

    你有两个选择:

    1. 如果你有解决方案的DTE\Solution2对象,可以使用AddFromFile()方法或者直接使用AddFromTemplate()方法从模板中添加项目。

      当前DTE对象可以通过GetService()方法获取:

      // 获取当前运行的 Visual Studio IDE 的实例

      DTE dte = (DTE)GetService(typeof(DTE));

    2. 如果您无法将解决方案作为 DTE 对象,您可以使用 XML 编辑来编辑 .sln file(查看现有 .sln 文件中项目是如何添加的)。

      李>

    【讨论】:

    • 嗨,我遇到了一个问题:我在 VS 2012 上使用了您的解决方案,一切正常,但现在我必须让它在 VS 2010 上也能正常工作。我在 MSDN 中读到项目模板是在 C++ 2010 中不可用,而且我只能使用 .vsz 模板,它们的行为完全不同:它使用 JavaScript 代码。 2012 年,我有一个 .vstemplate 模板和一个实现 IWizard 的 classLibrary.dll。你知道我该怎么做才能在 2010 年获得最接近的解决方案吗?
    • 为什么不将.vsz template 用于 2010 和 2012 模板?它可以防止双重代码。与 VS2010 中的 Wizard=VsWizard.VsWizardEngine.10.0 相比,2010 年的 .vsz 模板与 2012 年的模板之间的唯一变化是在 VS2012 中的 Wizard=VsWizard.VsWizardEngine.11.0 行中。
    • 因为我想用DTE在c#中编写模板后面的代码,而.vsz模板后面的代码是Java Script。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多