Pregunta

Estoy desarrollando un constructor automático que ejecutará una serie de pasos en nuestro proceso de compilación y construirá nuestra aplicación de destino. Solíamos usar un archivo por lotes que configuraba un conjunto de variables de entorno o denominaba herramientas que configuraban las variables de entorno y, en última instancia, ejecutaban un 'make'.

He estado usando la clase 'Proceso' que funciona muy bien para ejecutar esos comandos, pero desafortunadamente cada vez que se ejecuta uno que realiza cambios en el entorno (como agregar algo a la RUTA) esas variables se pierden cuando se completa el 'Proceso' . El siguiente 'Proceso' se crea una instancia y hereda el env de la aplicación 'llamando' (mi exe) de nuevo, lo que significa que toda la configuración de env del último comando se pierde. ¿Cómo manejas esta situación? ¿Existe una mejor manera de ejecutar una serie de comandos tipo archivo por lotes dentro de C # y mantener el entorno que configuran?

Tenga en cuenta que, desafortunadamente, los estudiantes de la tercera edad han declarado que nant / ant no son una opción, por lo que "hey, ¿por qué no usar Nant? ¡Eso es lo que hace!" No es la respuesta que estoy buscando.

Gracias.

¿Fue útil?

Solución

sugeriría algún código que guarde sus variables de entorno en un archivo externo, y luego puede recuperar estas variables a través del archivo externo al inicio de los siguientes procesos.

Otros consejos

Bueno, el método System.Environment.SetEnvironmentVariable () le permitirá especificar el alcance de una variable que establezca. ¿Es esto lo que estás buscando? No estoy seguro de que entienda.

Usamos CruiseControl.net para ejecutar un script NAnt. Muy recomendable.

El script NAnt se puede invocar usando el interruptor de línea de comando -D: para establecer el equivalente de las variables de entorno.

Creo que el problema no está en la especificación de variables de entorno personalizadas aquí. (Puede establecerlos a través de ProcessStartInfo). El problema está en la lectura de los cambios realizados en las variables de entorno por los procesos que se ejecutan. No estoy seguro de si es posible. Las únicas formas que conozco establecen variables de entorno para el proceso en sí y / o para sus procesos secundarios. No conozco ninguna manera de establecer variables de entorno para un proceso padre.

Las variables de entorno nunca se configuran y no se pueden configurar para el proceso principal (*). Solo para el proceso actual y para los que crea, eso es parte del concepto.

(*) aparte de, tal vez, jugar con sistemas internos del sistema operativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top