web-dev-qa-db-ja.com

Visual Studioでデバッグするときに特定の環境変数を設定するにはどうすればよいですか?

クラスライブラリプロジェクトで、プロジェクトプロパティの[デバッグ]タブの[開始アクション]を[外部プログラムの開始]に設定しました(この場合は、 NUnit )。このプログラムが開始される環境に環境変数を設定したいのですが、どうすればよいですか? (それも可能ですか?)

編集:

これは、すべての.NETアプリケーションに影響を与える環境変数です(COMplus_Version、ランタイムバージョンを設定します)。したがって、システム全体に設定することは実際にはオプションではありません。

回避策として、nunit.exe.configで設定することにより、NUnitを正しい.NETバージョン(2.0)で起動するように強制しましたが、残念ながら、これはすべての.NET 1.1ユニットテストが.NET 2.0でも実行されることを意味します。おそらく実行可能ファイルのコピーを作成して、独自の構成ファイルを作成できるようにする必要があります...

(誰かがたまたまその方法を見つけた場合に備えて、質問を開いたままにします(答えを受け入れません)(結局、他の目的にも役立つかもしれません...))

49
Tobi

少なくともVisual Studio 2008およびVisual Studio 2005では、プロジェクト設定で環境変数の変更を指定できます。

プロジェクトを開きます。 [プロジェクト]-> [プロパティ...]に移動します。[構成プロパティ]-> [デバッグ]で、[環境]値を編集して環境変数を設定します。

たとえば、アプリケーションのデバッグ時にパスにディレクトリ「c:\ foo\bin」を追加する場合は、「環境」値を「PATH =%PATH%; c:\ foo\bin」に設定します。

Here's a screenshot of the settings dialog

69
John Dibling

Visual Studio 2003では、デバッグ用の環境変数を設定できないようです。

C/C++で行うことは、_putenv()main()を使用し、変数を設定することです。通常、特定のビルドのみに含まれるように、#if defined DEBUG_MODE / #endifで囲みます。

_putenv("MYANSWER=42");

Os.putenv()を使用してC#でも同じことができると思います。

os.putenv('MYANSWER', '42');

これらは、そのシェルプロセスに対してのみ環境変数を設定します。そのため、探しているのは一時的な設定です。

ちなみに、sysinternalsツールであるプロセスエクスプローラー( http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx )を使用すると便利です。特定のプロセスの環境変数のコピーが何であるかを確認できるため、設定したものが取得したものであることを検証できます。

6
Jamie

Visual Studio for MacおよびC#では、次を使用できます。

Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");

ただし、次の名前空間が必要になります

using System.Collections;

これで変数の完全なリストを確認できます:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
            Console.WriteLine("  {0} = {1}", de.Key, de.Value);
6
CRUZ

NUnit 2.5以降では、/ frameworkスイッチを使用できます(例:

nunit-console myassembly.dll /framework:net-1.1

これは NUnitのヘルプページ からのものです。

1
tymtam

Batファイルを使用して環境を設定できない場合、唯一の選択肢はシステム全体の環境変数を設定することです。あなたはこれらを見つけることができます

  1. 「マイコンピュータ」を右クリックします
  2. プロパティを選択
  3. 「詳細」タブを選択します
  4. 「環境変数」ボタンをクリックします
  5. 「システム変数」セクションで、希望する新しい環境変数を追加します
  6. 変更を受け入れるために「OK」

Visual Studioを再起動する必要があるかどうかはわかりませんが、可能性は低いようです。 HTH

0
Mark

環境は親プロセスから継承されるため、開始を実行する前に環境変数を変更するVisual Studioのアドインを作成できます。それがあなたのプロセスにどれほど簡単になるかはわかりません。

0
Jeff Yates

呼び出すことができるバッチファイルを設定します。パスにバッチファイルを渡し、バッチファイルに環境変数を設定してから、NUnitを呼び出します。

0
OJ.