2012-02-14 20 views

risposta

144

Le estensioni di Visual Studio possono essere debugate come qualsiasi altra applicazione. Hai solo bisogno di configurare l'esperienza di debug per lanciare devenv con l'estensione caricata. Provate il seguente

  • clic destro sul progetto e selezionare Proprietà
  • Vai alla scheda Debug

clic sul pulsante di scelta per Start External Program. Puntalo al binario di devenv.exe. Sulla mia macchina è situata proprio al

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe

su una macchina non x64 se è possibile rimuovere il " (x86) "porzione.

Quindi impostare gli argomenti della riga di comando su /rootsuffix Exp. Ciò indica a Visual Studio di utilizzare l'hive sperimentale invece del normale hive di configurazione. Per impostazione predefinita, le estensioni VSIX create si registreranno nell'alveare sperimentale.

Ora è possibile F5 e verrà avviato Visual Studio con VSIX come estensione disponibile.

+0

grazie per questa risposta, risolto un problema in un colpo. Molto obbligato! –

+0

@JaredPar - c'è un modo per dire all'estensione vs2012 di registrarsi nell'hive sperimentale dell'anteprima vs2015? –

+0

Ho fatto questo in VS2015 e ha funzionato. – matthewpavkov

2

Il metodo OutputWindowHelper.OutputString scrive nel riquadro della finestra di output "Generale" (Ctrl Alt o). Ho aggiunto questa linea nei miei riferimenti Csproj per ottenere questo in VS 2013

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 

anche vedere this answer.

+0

Nota OutputWindowHelper non esiste in Visual Studio 2015. Una macchina con solo VS2015 genera un errore se viene chiamato. Vedere anche https://github.com/landofjoe/NuspecPackager/issues/1 – Quango

38

La risposta accettata da @JaredPar è tecnicamente corretta, ma soffre il fatto che è necessario rifarlo per ogni sviluppatore, ogni volta che si ottiene una nuova copia del codice e ogni volta che il file csproj.user viene eliminato. Quando lo fai in questo modo, le impostazioni vengono salvate nel file csproj.user.

Un'opzione migliore è quella di inserire le impostazioni nel file csproj in modo che non vengano perse. Sfortunatamente, Visual Studio non ti permette di farlo automaticamente, quindi devi aggiungere manualmente le impostazioni. Fortunatamente, le impostazioni sono le stesse per qualsiasi progetto.

Fare clic con il pulsante destro del mouse e scaricare il progetto, quindi fare nuovamente clic con il pulsante destro e modificare il file di progetto csproj. Nell'XML, aggiungi quanto segue al primo PropertyGroup, ad esempio subito dopo TargetFramework.

<StartAction>Program</StartAction> 
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram> 
<StartArguments>/rootsuffix Exp</StartArguments> 

Ciò presenta i seguenti vantaggi;

  • Si imposta in su per il debug e rilasciare
  • Funziona qualunque versione di Visual Studio è attualmente in esecuzione
  • E 'controllato in controllo del codice sorgente, in modo che ogni sviluppatore non ha bisogno di ricordare come farlo it :)

Come @MBulli stati nei commenti, se sono state apportate le modifiche nella risposta accettata, eliminare il file *.csproj.user perché le impostazioni in esso hanno la priorità quelli aggiunti al file principale csproj.

+3

Assicurarsi di eliminare il file * .csproj.user perché le impostazioni dell'utente hanno la precedenza sulle impostazioni del progetto. – MBulli

+0

Ottima risposta, grazie! Molto più efficiente di quello accettato. –

0

Se si tenta di eseguire il debug di un oggetto UnitTestExtension, è necessario collegare il debugger anche ai processi vstest. *. Exe come descritto in here. Altrimenti potresti vedere il breakpoint di attivazione ma il debugger non lo colpirà mai.

Problemi correlati