Possiedo un pacchetto di Visual Studio che fa parte del suo lavoro avviando un processo esterno (usando System.Diagnostics.Process
) e comunicando con esso tramite l'input/output standard. Attualmente, ho il percorso per il codice .exe
hard-coded che ovviamente non è fattibile per la distribuzione effettiva dell'estensione. Qual è il modo giusto per imballare e distribuire il .exe
con l'estensione? (E, in relazione, una volta che ho fatto, come faccio a scoprire a livello di codice il percorso per il file .exe
installato.) Preferibilmente vorrei metterlo nel file .vsix
così l'installazione è facile.Pacchetto .exe in .vsix e chiamata dall'estensione di Visual Studio
EDIT: ho posto la parte rilevante del mio codice su BitBucket (può essere utile a qualcun altro usando Roslyn): roslyn_process al fine di dare una migliore idea di quello che sto cercando di fare. Questo codice imposta la comunicazione tra un'estensione di Visual Studio utilizzando un'implementazione di AbstractProcessHandler
e un processo separato utilizzando RoslynProcess
. Quest'ultimo è tenuto informato delle modifiche ai file di codice in Visual Studio e del file di codice che viene visualizzato, quindi è in grado di fare analisi con informazioni aggiornate nonostante non sia in esecuzione come un'estensione di Visual Studio che imporrebbe i limiti di Roslyn su tutto il codice in fase di modifica.
MODIFICA 2: Utilizzando this answer, è possibile ottenere la directory dell'estensione. Posso includere un altro pacchetto in source.extension.vsixmanifest
aggiungendolo all'elenco dei contenuti come tipo "Tipo di estensione personalizzata". Quindi lo .exe
appare nella directory dell'estensione. Sembra che sia probabilmente la soluzione giusta anche se il modo di ottenere la directory è etichettato in MSDN come qualcosa che non dovrei usare.
Sembra che questo potrebbe essere il modo migliore per farlo anche se sembra hacker, nel qual caso lo posterò come risposta una volta che avrò tutto funzionante.
@Kiquenet: Scusa, non ho una soluzione minima ben confezionata ... ma la risposta accettata è una soluzione unica. – perelman