2008-09-25 10 views
3

ビルドプロセスで一連の手順を実行し、ターゲットアプリケーションをビルドする自動ビルダーを開発しています。私たちはバッチファイルを使用して、環境変数を設定したり、環境変数を設定して最終的に 'make'を実行するツールを呼び出しました。C#で一連のプロセスを実行し、その環境設定を保持するにはどうすればよいですか?

これらのコマンドの実行には効果的な 'Process'クラスを使用していましたが、残念ながら、環境を変更する(PATHに何かを追加するなど)完了する。次の 'プロセス'はインスタンス化され、 '呼び出し'アプリケーション(my exe)からenvを継承します。つまり、最後のコマンドによるすべてのenv設定が失われます。どのようにこの状況に対処していますか? C#内で一連のバッチファイルのようなコマンドを実行し、設定した環境を維持するためのより良い方法はありますか?

残念なことに、古い学校の生徒は、ナント/アリはオプションではないと宣言していますので、「ねえ、なぜナントを使わないの?私が探している答えではありません。

ありがとうございました。

答えて

0

あなたの環境変数を外部ファイルに保存するいくつかのコードを示唆しています。そして、これらの変数を次のプロセスの開始時に外部ファイル経由で取得できます。

0

まあ、System.Environment.SetEnvironmentVariable()メソッドでは、設定した変数のスコープを指定できます。これはあなたが探しているものですか?私が理解しているか分からない。

0

私たちはCruiseControl.netを使ってNAntスクリプトを実行します。強くお勧めします。

NAntスクリプトは、-D:コマンドラインスイッチを使用して呼び出すことができ、環境変数に相当するものを設定します。

+0

代わりにMSBuildでこれを行う方法はありますか?私はそれがMSから来ているので、反NAntキャンプは、それを使用して気にしないと思う。 –

0

ここでの問題はカスタム環境変数を指定することではないと思います。 (ProcessStartInfo経由で設定することができます)問題は、実行中のプロセスによって環境変数に加えられた変更を読み込むことです。それが可能かどうかはわかりません。私が知っている唯一の方法は、プロセス自体やその子プロセスの環境変数を設定することです。親プロセスの環境変数を設定する方法がわかりません。

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええとする – screenglow

0

環境変数は決して設定されず、親プロセス(*)には設定できません。現在のプロセスとそれが作成するプロセスについてのみ、それは概念の一部です。

(*)とは別に、OS内部をめちゃくちゃにしているかもしれません。

関連する問題