Aggiungi la cartella della soluzione al modello di progetto di Visual Studio

È ansible aggiungere una cartella di soluzioni con il modello di progetto? Se non è incorporato nella funzionalità, è ansible creare un’attività personalizzata per questo?

Questo è un po ‘complicato. Non puoi farlo con un semplice modello di progetto. I modelli di progetto potrebbero funzionare solo a livello di singolo progetto. Per implementare una logica più avanzata, è necessario implementare WizardExtension e registrarlo nel file .vstemplate del modello.

  AssemblyInGACWithSomeLogic MySuperWizardExtension  

È ansible trovare ulteriori informazioni sulle estensioni della procedura guidata su MSDN .

È ansible, per quanto è ansible controllare questo sito Web msdn . O per la panoramica totale

Puoi farlo usando i wizard dei template. Immagino che tu sappia già come implementarlo.

Quindi, all’interno del metodo RunFinished, scrivi queste righe:

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

Per la class Solution2 devi fare riferimento a EnvDTE80.dll. _dte deve essere impostato dal metodo RunStarted.

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

Sto usando i seguenti frammenti nella mia procedura guidata per i modelli di progetto (vedi la risposta di 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; } 

where _solution = (Solution2) _dte.Solution;