3

ビルド プロセスで一連のステップを実行し、ターゲット アプリケーションをビルドする自動ビルダーを開発しています。以前は、一連の環境変数を設定するバッチ ファイルを使用したり、環境変数を設定して最終的に「make」を実行するツールを呼び出したりしていました。

これらのコマンドを実行するのに最適な「プロセス」クラスを使用していますが、残念ながら、環境に変更を加えるたびに(PATHに何かを追加するなど)、「プロセス」が完了するとこれらの変数が失われます。次の「プロセス」がインスタンス化され、「呼び出し元」アプリ (私の exe) から環境を継承します。これは、最後のコマンドによるすべての環境設定が失われることを意味します。この状況をどのように処理しますか?C# 内で一連のバッチ ファイルのようなコマンドを実行し、設定した環境を維持するためのより良い方法はありますか?

残念ながら、古い学校の生徒たちは、nant/ant はオプションではないと宣言しているので、「Nant を使用してみませんか?」と注意してください。私が探している答えではありません。

ありがとう。

4

5 に答える 5

0

System.Environment.SetEnvironmentVariable()メソッドを使用すると、設定した変数のスコープを指定できます。これはあなたが探しているものですか?よくわかりません。

于 2008-09-25T22:06:08.000 に答える
0

CruiseControl.netを使用してNAntスクリプトを実行します。強くお勧めします。

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

于 2008-09-25T22:06:19.687 に答える
0

環境変数を外部ファイルに保存するコードを提案します。その後、次のプロセスの開始時に外部ファイルを介してこれらの変数を取得できます。

于 2008-09-25T22:06:24.490 に答える
0

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

于 2008-09-25T22:14:53.270 に答える
0

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

(*) おそらく、OS 内部をいじることは別として。

于 2008-09-26T04:56:39.467 に答える