2008-09-25 3 views
3

빌드 프로세스에서 일련의 단계를 실행하고 대상 응용 프로그램을 빌드하는 자동 작성기를 개발 중입니다. 우리는 여러 환경 변수를 설정하거나 환경 변수를 설정하고 궁극적으로 'make'를 실행하는 도구라고 부르는 배치 파일을 사용했습니다.C#에서 일련의 프로세스를 실행하고 환경 설정을 유지하려면 어떻게해야합니까?

저는 '프로세스'클래스를 사용하여 이러한 명령을 실행하는 데 적합하지만 불행히도 환경이 변경 될 때마다 (예 : PATH에 항목을 추가하는 등) '프로세스' 완료됩니다. 다음 '프로세스'는 인스턴스화되어 '호출'응용 프로그램 (내 exe)에서 env를 상속합니다. 즉, 마지막 명령에 의한 모든 env 설정이 손실됩니다. 이 상황을 어떻게 처리합니까? C# 내에서 명령과 같은 일련의 배치 파일을 실행하고 설정 한 환경을 유지하는 더 좋은 방법이 있습니까?

불행히도 옛 schoolers들은 nant/ant는 옵션이 아니라고 선언했습니다. "Hey, Nant를 사용하지 않는 이유는 무엇입니까?" 내가 찾는 대답이 아닙니다.

감사합니다.

답변

0

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

0

음, System.Environment.SetEnvironmentVariable() 메서드를 사용하면 설정 한 변수의 범위를 지정할 수 있습니다. 이게 너가 찾고있는거야? 내가 이해할 지 확신하지 못한다.

0

우리는 NAnt 스크립트를 실행하기 위해 CruiseControl.net을 사용합니다. 추천.

NAnt 스크립트는 환경 변수에 해당하는 -D : command-line switch를 사용하여 호출 할 수 있습니다.

+0

대신 MSBuild에서이 작업을 수행 할 수 있습니까? 나는 반 NAUN 캠프가 MS에서 왔기 때문에 그것을 사용하는 것에 신경 쓰지 않을 것이라고 생각합니다. –

0

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

+0

예 - 이전에 실행 한 프로세스에서 수정 된 변수를 가져 오는 방법이 있다면 좋은 해결책이 될 수 있지만 그렇게 할 방법이 없습니다. – screenglow

0

환경 변수는 설정되지 않으며 상위 프로세스 (*)에 대해 설정할 수 없습니다. 현재 프로세스와 생성 된 프로세스에 대해서만 - 이것은 개념의 일부입니다.

(*)을 제외하면 어쩌면 OS 내부를 어지럽 힐 수도 있습니다.

관련 문제