2012-02-09 9 views

答えて

1

これを確認するには、msdnのウェブサイトをチェックすることができます。 またはtotal overviewの場合

2

これは少し複雑です。これを単純なプロジェクトテンプレートで行うことはできません。プロジェクトテンプレートは単一のプロジェクトレベルでしか動作できませんでした。より高度なロジックを実装するには、WizardExtensionを実装し、それをテンプレートの.vstemplateファイル内に登録する必要があります。

<WizardExtension> 
    <Assembly>AssemblyInGACWithSomeLogic</Assembly> 
    <FullClassName>MySuperWizardExtension</FullClassName> 
</WizardExtension> 

詳細については、MSDNを参照してください。

-3

私は私のプロジェクトテンプレートウィザードでは、次のスニペットを使用しています(マイクChaliyの回答を参照してください):_solution = (Solution2) _dte.Solution;

+0

あなたの完全なIWizard実装を投稿してもよろしいですか?私はどこでGetSolutionFolderメソッドを呼び出すべきか分かりません。 – Marcus

+0

public void RunStarted(オブジェクトアプリケーション、Dictionary replaceacementsDictionary、WizardRunKind runKind、object [] customParams){ \t \t \t _dte = application as _DTE; \t \t \t _solution =(Solution2)_dte.Solution; \t \t \t _solutionFolder = GetSolutionFolder(_solution); \t \t} – ulu

0

あなたは、テンプレートウィザードを使用してそれを行うことができます

 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; 
    } 

。私はあなたがすでにそれを実装する方法を知っていると思います。

ので、RunFinishedメソッド内で、これらの行書き込み:あなたはEnvDTE80.dllを参照する必要が対処方法2クラスの場合

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

を。 _dteは、RunStartedメソッドから設定する必要があります。

private DTE _dte; 
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) 
{ 
    _dte = (DTE)automationObject; 
} 
関連する問題