Domanda

Il mio progetto ha componenti client e server nello stesso file di soluzione.Di solito ho il debugger impostato per avviarli insieme durante il debug, ma spesso accade che avvio il server al di fuori del debugger in modo da poter avviare e arrestare il client secondo necessità quando lavoro solo su cose lato client.(questo è molto più veloce).

Sto cercando di risparmiarmi il fastidio di frugare in Solution Explorer per avviare singoli progetti e preferisco semplicemente inserire un pulsante sulla barra degli strumenti che richiama una macro che avvia il debugger per i singoli progetti (lasciando solo il debug di tipo "F5" a avviare entrambi i processi).

Ho provato a registrare, ma il risultato non è stato nulla di utile.

Finora tutto quello che sono riuscito a fare è individuare l'elemento del progetto in Solution Explorer:

 Dim projItem As UIHierarchyItem

 projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\ProjectFolder\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect)

(Questo si basa vagamente su come il registratore di macro ha provato a farlo.Non sono sicuro che esplorare il modello a oggetti dell'interfaccia utente sia l'approccio corretto o se dovrei invece cercare di passare attraverso il modello a oggetti della soluzione/progetto).

È stato utile?

Soluzione

OK.Sembra funzionare dalla maggior parte dei contesti dell'interfaccia utente (tutti?) a condizione che la soluzione sia caricata:

 Sub DebugTheServer()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem("Solution\ServerFolder\ServerProject").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.Windows.Item(Constants.vsWindowKindOutput).Activate()
    DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance")
 End Sub

Altri suggerimenti

Da un componente aggiuntivo C#, per me ha funzionato quanto segue:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top