C#에서 일련의 프로세스를 실행하고 환경 설정을 유지하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/136436

문제

저는 빌드 프로세스에서 일련의 단계를 실행하고 대상 응용 프로그램을 구축하는 자동 빌더를 개발하고 있습니다. 우리는 환경 변수를 설정하고 궁극적으로 'make'를 실행하는 다양한 환경 변수 또는 도구를 설정하는 배치 파일을 사용했습니다.

나는 해당 명령을 실행하는 데 적합한 '프로세스'클래스를 사용해 왔지만 불행히도 실행할 때마다 환경을 변경하여 (경로에 무언가를 추가하는 것과 같은) '프로세스'가 완료되면 변수가 손실됩니다. 다음 '프로세스'는 인스턴스화되고 '호출'앱 (My Exe)에서 ENV를 상속합니다. 즉, 마지막 명령에 의해 설정된 모든 ENV가 손실된다는 것을 의미합니다. 이 상황을 어떻게 처리합니까? C# 내에서 일련의 배치 파일과 같은 명령을 실행하고 설정 한 환경을 유지하는 더 좋은 방법이 있습니까?

불행히도 구식 사람들은 Nant/ant가 선택 사항이 아니라고 선언했습니다. "이봐, 왜 Nant를 사용하지 않습니까?" 내가 찾고있는 대답이 아닙니다.

감사.

도움이 되었습니까?

해결책

환경 변수를 외부 파일에 저장하는 코드를 제안한 다음 다음 프로세스가 시작될 때 외부 파일을 통해 이러한 변수를 검색 할 수 있습니다.

다른 팁

System.environment.setenvironmentvariable () 메소드를 사용하면 설정 한 변수의 범위를 지정할 수 있습니다. 이것이 당신이 찾고있는 것입니까? 내가 이해하는지 확실하지 않습니다.

우리는 cruisecontrol.net을 사용하여 nant 스크립트를 실행합니다. 추천.

NANT 스크립트는 -D : 명령 줄 스위치를 사용하여 호출하여 환경 변수와 동등한 것을 설정할 수 있습니다.

문제는 여기에 사용자 정의 환경 변수를 지정하지 않는다고 생각합니다. (ProcessStartInfo를 통해 설정할 수 있습니다.) 문제는 실행중인 프로세스에 의해 환경 변수에 대한 변경 사항을 읽는 것입니다. 가능한지 잘 모르겠습니다. 내가 아는 유일한 방법은 프로세스 자체 및/또는 아동 프로세스에 대한 환경 변수를 설정합니다. 부모 프로세스의 환경 변수를 설정하는 방법을 모르겠습니다.

환경 변수는 결코 설정되지 않으며 부모 프로세스 (*)에 대해 설정할 수 없습니다. 현재 프로세스와 그것이 만든 프로세스에만 해당되는 프로세스는 개념의 일부입니다.

(*) 아마도 OS-Insternals를 엉망으로 만드는 것 외에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top