C# VS向导模板-更改项目解决方案和目录

C# VS向导模板-更改项目解决方案和目录,c#,templates,visual-studio-2012,projects-and-solutions,C#,Templates,Visual Studio 2012,Projects And Solutions,我正在Visual Studio 2012上使用c#编写Visual Studio向导模板 我遵循了MSDN的步骤: 我创建了一个VS模板,然后用一个实现IWizard接口的类创建了一个类库项目,我配置了.vstemplate文件等等 现在,我的目标是编写RunStarted函数代码,它执行以下操作: 在项目创建时,它会将另一个现有解决方案目录从另一个位置复制到新项目选定的位置,然后,新项目将添加到复制的解决方案的特定“应用”文件夹中,而不是在新解决方案中创建新项目,并且不会创建新的解决方案 在

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

我遵循了MSDN的步骤: 我创建了一个VS模板,然后用一个实现IWizard接口的类创建了一个类库项目,我配置了.vstemplate文件等等

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

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

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

你对这个问题有什么想法吗? 谢谢

您有两种选择:

  • 如果您拥有解决方案的\对象,则可以使用该方法,也可以使用该方法直接从模板添加项目

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

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

    DTE DTE=(DTE)GetService(类型(DTE))

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


  • 嗨,我遇到了一个问题:我在VS 2012上使用了你的解决方案,一切都很好,但现在我必须让它在VS 2010上也能工作。我在MSDN中看到,项目模板在C++ 2010中不可用,我只能使用.VSZ模板,它完全不同:它使用JavaScript代码。2012年,我有一个.vstemplate模板和一个实现IWizard的classLibrary.dll。您知道为了在2010年获得最接近的解决方案,我可以做些什么吗?为什么不为-2010和2012模板使用
    .vsz template
    ?它可以防止双重编码。与VS2010中的
    Wizard=VsWizard.VsWizardEngine.10.0
    相比,2010年的.vsz模板与2012年的模板之间唯一的变化是VS2012中的
    Wizard=VsWizard.VsWizardEngine.11.0
    行。因为我想用DTE在c#中编写模板后面的代码,而.vsz模板后面的代码是Java脚本。