Visual Studio でデバッグするときに特定の環境変数を設定するにはどうすればよいですか?
-
01-07-2019 - |
質問
クラス ライブラリ プロジェクトで、プロジェクト プロパティの [デバッグ] タブの [開始アクション] を [外部プログラムの開始] に設定します (NUnit この場合)。このプログラムを起動する環境に環境変数を設定したいと考えています。それ、どうやったら出来るの?(それは可能ですか?)
編集:
これはすべての .NET アプリケーションに影響を与える環境変数 (COMplus_Version、ランタイム バージョンを設定します) であるため、システム全体に設定することは実際にはオプションではありません。
回避策として、NUnit を適切な .NET バージョン (2.0) で設定して強制的に起動するようにしました。 nunit.exe.config
, ただし、残念ながら、これはすべての .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');
これらはそのシェル プロセスのみの環境変数を設定します。これは一時的な設定であり、これが探しているものです。
ちなみに、プロセスエクスプローラーを使うと良いです(http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)、sysinternals ツールです。特定のプロセスの環境変数のコピーが何であるかを確認できるため、設定した内容が取得したものであることを検証できます。
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 ファイルを使用して環境をセットアップできない場合、考えられる唯一の選択肢は、システム全体の環境変数をセットアップすることです。これらは次のようにして見つけることができます
- 「マイコンピュータ」を右クリックします
- プロパティの選択
- 「詳細」タブを選択します
- 「環境変数」ボタンをクリックします
- 「システム環境変数」セクションで、必要な新しい環境変数を追加します。
- 変更を受け入れるには「OK」を最後まで押します
Visual Studio を再起動する必要があるかどうかはわかりませんが、その可能性は低いと思われます。HTH
呼び出すことができるバッチ ファイルを設定します。バッチ ファイルのパスを渡し、バッチ ファイルに環境変数を設定させて、NUnit を呼び出します。
環境は親プロセスから継承されるため、起動を実行する前に環境変数を変更する Visual Studio 用のアドインを作成できます。それをあなたのプロセスに組み込むことがどれだけ簡単になるかわかりません。