クラスライブラリプロジェクトで、プロジェクトプロパティの[デバッグ]タブの[開始アクション]を[外部プログラムの開始]に設定しました(この場合は、 NUnit )。このプログラムが開始される環境に環境変数を設定したいのですが、どうすればよいですか? (それも可能ですか?)
編集:
これは、すべての.NETアプリケーションに影響を与える環境変数です(COMplus_Version、ランタイムバージョンを設定します)。したがって、システム全体に設定することは実際にはオプションではありません。
回避策として、nunit.exe.config
で設定することにより、NUnitを正しい.NETバージョン(2.0)で起動するように強制しましたが、残念ながら、これはすべての.NET 1.1ユニットテストが.NET 2.0でも実行されることを意味します。おそらく実行可能ファイルのコピーを作成して、独自の構成ファイルを作成できるようにする必要があります...
(誰かがたまたまその方法を見つけた場合に備えて、質問を開いたままにします(答えを受け入れません)(結局、他の目的にも役立つかもしれません...))
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 )を使用すると便利です。特定のプロセスの環境変数のコピーが何であるかを確認できるため、設定したものが取得したものであることを検証できます。
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);
NUnit 2.5以降では、/ frameworkスイッチを使用できます(例:
nunit-console myassembly.dll /framework:net-1.1
これは NUnitのヘルプページ からのものです。
Batファイルを使用して環境を設定できない場合、唯一の選択肢はシステム全体の環境変数を設定することです。あなたはこれらを見つけることができます
Visual Studioを再起動する必要があるかどうかはわかりませんが、可能性は低いようです。 HTH
環境は親プロセスから継承されるため、開始を実行する前に環境変数を変更するVisual Studioのアドインを作成できます。それがあなたのプロセスにどれほど簡単になるかはわかりません。
呼び出すことができるバッチファイルを設定します。パスにバッチファイルを渡し、バッチファイルに環境変数を設定してから、NUnitを呼び出します。