将解决方案文件夹添加到visual studio项目模板

是否可以使用项目模板添加解决方案文件夹? 如果它没有内置function,是否可以为此创建自定义任务?

这有点棘手。 您无法使用简单的项目模板执行此操作。 项目模板只能在单个项目级别上运行。 要实现更高级的逻辑,您需要实现WizardExtension并在模板的.vstemplate文件中注册它。

  AssemblyInGACWithSomeLogic MySuperWizardExtension  

您可以在MSDN上找到有关向导扩展的更多信息。

有可能,如何查看这个msdn网站。 或者总的概述

您可以使用模板向导来完成此操作。 我想你已经知道如何实现它了。

所以,在RunFinished方法中,写下这些行:

  var destFolder = Directory.GetParent(path).Parent; System.IO.Directory.CreateDirectory(destFolder.FullName + "\\.nuget"); ((Solution2) _dte.Solution).AddSolutionFolder(destFolder.FullName + "\\.nuget"); 

对于Solution2类,您必须引用EnvDTE80.dll。 必须从RunStarted方法设置_dte。

 private DTE _dte; public void RunStarted(object automationObject, Dictionary replacementsDictionary, WizardRunKind runKind, object[] customParams) { _dte = (DTE)automationObject; } 

我在项目模板向导中使用以下代码段(请参阅Mike Chaliy的回答):

  private static SolutionFolder GetSolutionFolder(Solution2 solution) { var project = GetSolutionFolderProject(solution); return (SolutionFolder) project.Object; } private static Project GetSolutionFolderProject(Solution2 solution) { var project = solution.Projects.Cast().FirstOrDefault(p => p.Name == "Solution Items"); if (project == null) project = solution.AddSolutionFolder("Solution Items"); return project; } 

其中_solution = (Solution2) _dte.Solution;