Question

Je développe un constructeur automatique qui exécutera une série d’étapes dans notre processus de création et notre application cible. Nous utilisions auparavant un fichier de commandes qui configurait un ensemble de variables d’environnement ou des outils appelés outils qui configuraient les variables d’environnement et exécutaient un «make».

J'utilise la classe 'Process' qui fonctionne très bien pour exécuter ces commandes, mais malheureusement, chaque fois que l'on exécute des modifications dans l'environnement (comme pour ajouter quelque chose à PATH), ces variables sont perdues à la fin du processus 'Processus' . Le prochain "Process" est instancié et hérite à nouveau de env de l'app "appelante" (mon exe) - ce qui signifie que toutes les configurations d'env par la dernière commande sont perdues. Comment gérez-vous cette situation? Existe-t-il un meilleur moyen d’exécuter une série de commandes par lots ressemblant à un fichier de commandes dans C # et de maintenir l’environnement qu’ils ont configuré?

Veuillez noter que, malheureusement, les vieux pensionnaires ont déclaré que Nant / ant n’était pas une option, alors "pourquoi ne pas utiliser Nant, c’est comme ça!" n'est pas la réponse que je cherche.

Merci.

Était-ce utile?

La solution

Je suggérerais un code permettant de sauvegarder vos variables d’environnement dans un fichier externe. Vous pourrez ensuite récupérer ces variables via le fichier externe au début des processus suivants.

Autres conseils

La méthode System.Environment.SetEnvironmentVariable () vous permettra de spécifier la portée d’une variable que vous avez définie. Est-ce ce que vous recherchez? Pas sûr que je comprenne.

Nous utilisons CruiseControl.net pour exécuter un script NAnt. Fortement recommandé.

Le script NAnt peut être appelé à l'aide du commutateur -D: de ligne de commande pour définir l'équivalent des variables d'environnement.

Je pense que le problème n’est pas de spécifier ici des variables d’environnement personnalisées. (Vous pouvez les définir via ProcessStartInfo.) Le problème réside dans la lecture des modifications apportées aux variables d'environnement par les processus en cours d'exécution. Je ne sais pas si c'est possible. Les seules façons que je connaisse de définir des variables d'environnement pour le processus lui-même et / ou pour ses processus enfants. Je ne sais pas comment définir des variables d'environnement pour un processus parent.

Les variables d'environnement ne sont jamais définies et ne peuvent pas être définies pour le processus parent (*). Seulement pour le processus actuel et ceux qu'il crée - cela fait partie du concept.

(*) à part, peut-être, déconner avec les OS internes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top