是否可以使用项目模板添加解决方案文件夹?如果它不是内置功能,是否可以为此创建自定义任务?
问问题
3430 次
5 回答
2
这有点棘手。您无法使用简单的项目模板执行此操作。项目模板只能在单个项目级别上运行。要实现更高级的逻辑,您需要实现WizardExtension并将其注册到.vstemplate
模板的文件中。
<WizardExtension>
<Assembly>AssemblyInGACWithSomeLogic</Assembly>
<FullClassName>MySuperWizardExtension</FullClassName>
</WizardExtension>
您可以在MSDN上找到有关向导扩展的更多信息。
于 2012-02-09T08:52:11.500 回答
1
您可以使用模板向导来完成。我想你已经知道如何实现它了。
因此,在 RunFinished 方法中,编写以下行:
var destFolder = Directory.GetParent(path).Parent;
System.IO.Directory.CreateDirectory(destFolder.FullName + "\\.nuget");
((Solution2) _dte.Solution).AddSolutionFolder(destFolder.FullName + "\\.nuget");
对于 Solution2 类,您必须引用 EnvDTE80.dll。_dte 必须从 RunStarted 方法设置。
private DTE _dte;
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
{
_dte = (DTE)automationObject;
}
于 2015-06-16T21:49:51.610 回答
0
只需简单地添加<SolutionFolder>...</SolutionFolder>
.vstemplate 文件
<SolutionFolder Name="Math Classes">
<ProjectTemplateLink ProjectName="MyFolder1">
3rdpartyProj\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="MyFolder2">
3rdpartyProj\MyTemplate.vstemplate
</ProjectTemplateLink>
</SolutionFolder>
于 2019-06-13T19:28:17.907 回答
-3
我在我的项目模板向导中使用了以下片段(请参阅 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<Project>().FirstOrDefault(p => p.Name == "Solution Items");
if (project == null) project = solution.AddSolutionFolder("Solution Items");
return project;
}
在哪里_solution = (Solution2) _dte.Solution;
于 2012-03-14T16:48:34.470 回答