Domanda

Sto sviluppando un generatore automatico che eseguirà una serie di passaggi nel nostro processo di compilazione e costruirà la nostra applicazione di destinazione. Usavamo un file batch che impostava un mucchio di variabili d'ambiente o chiamato strumenti che impostavano variabili d'ambiente e alla fine eseguiva un 'make'.

Sto usando la classe 'Process' che funziona benissimo per l'esecuzione di quei comandi, ma sfortunatamente ogni volta che si esegue uno che apporta modifiche all'ambiente (come aggiungere qualcosa al PERCORSO) queste variabili vanno perse quando il 'Process' viene completato . Il successivo 'Processo' viene istanziato ed eredita nuovamente env dall'app 'chiamante' (il mio exe) - il che significa che tutte le impostazioni env con l'ultimo comando vanno perse. Come gestisci questa situazione? C'è un modo migliore per eseguire una serie di comandi come file batch all'interno di C # e mantenere l'ambiente che hanno impostato?

Nota che sfortunatamente i vecchi scolari hanno dichiarato che nant / ant non sono un'opzione quindi " Ehi, perché non usare Nant - lo fa! " non è la risposta che sto cercando.

Grazie.

È stato utile?

Soluzione

Suggerirei un codice che salverebbe le variabili di ambiente in un file esterno, quindi è possibile recuperare queste variabili tramite il file esterno all'inizio dei seguenti processi.

Altri suggerimenti

Bene, il metodo System.Environment.SetEnvironmentVariable () ti permetterà di specificare l'ambito per una variabile che hai impostato. E 'questo quello che stai cercando? Non sono sicuro di aver capito.

Usiamo CruiseControl.net per eseguire uno script NAnt. Altamente raccomandato.

Lo script NAnt può essere invocato usando l'opzione -D: riga di comando per impostare l'equivalente delle variabili di ambiente.

Penso che il problema non sia nello specificare qui le variabili di ambiente personalizzate. (È possibile impostarli tramite ProcessStartInfo.) Il problema è nella lettura delle modifiche apportate alle variabili di ambiente dai processi in esecuzione. Non sono sicuro che sia possibile. Gli unici modi in cui conosco impostano le variabili di ambiente per il processo stesso e / o per i relativi processi figlio. Non so come impostare variabili d'ambiente per un processo genitore.

Le variabili di ambiente non vengono mai impostate e non possono essere impostate per il processo parent (*). Solo per il processo attuale e quelli che crea - questo fa parte del concetto.

(*) a parte, forse, scherzare con gli interni del sistema operativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top