プロジェクトテンプレートを使用してソリューションフォルダーを追加することはできますか?機能が組み込まれていない場合、このためのカスタムタスクを作成することは可能ですか?
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 に答える
-3
Project Template Wizard で次のスニペットを使用しています (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 に答える