2008-09-19 966 views
38

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

EDIT:

それはとても広い本当にそれをシステム設定(COMplus_Versionが、それはランタイムのバージョンを設定します)、すべての.NETアプリケーションに影響を与える環境変数がオプションでないです。

私はちょうどnunit.exe.configに設定することでNUnitを右の.NETバージョン(2.0)で開始させましたが、残念ながらこれは.NET 1.1ユニットテストも現在.NET 2.0でも実行されています。私はたぶん実行ファイルのコピーを作成して、それ自身の設定ファイルを持つことができるようにしてください...

(誰かがどうやって見つけたかあまりにも他の目的のために役立つ...))

+0

この環境変数に固有の環境変数が必要ですかprogr唯一ですか? –

答えて

59

Visual  スタジオ  2008 Visual  スタジオ  2005少なくとも、プロジェクト設定で環境変数の変更を指定できます。

プロジェクトを開きます。 「プロジェクト」 - >「プロパティー」を選択します。「構成プロパティー」 - >「デバッグ」の下で、環境変数を設定するために「環境」値を編集します。

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

Here's a screenshot of the settings dialog

+0

私はVS2008を使用していますが、プロジェクトプロパティには「構成プロパティ」または「デバッグ」がありません。プロジェクトのプロパティのどこにでも環境変数については何も見つかりません。私は間違って何をしていますか? –

+0

私はこの設定をどこのスクリーンショットで編集しますか? –

+0

こんにちは、どうやってこの画面に入りましたか?私のVS2008とVS2005では、プロジェクトのプロパティは異なって見えますが、環境設定はありません – Grzenio

0

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

+4

Visual Studioは、プログラムを起動するためのパスに実行可能ファイル(.exe)以外のものを受け入れることを拒否します。 – Tobi

1

環境を設定するためにbatファイルを使用できない場合は、システム全体の環境変数を設定することをお勧めします。あなたは右

  • プロパティを選択
  • の「マイコンピュータ」をクリックし

    1. を行うことにより、これらを見つけることができます
    2. 「高度」タブを選択し、「システム環境変数で
    3. 「環境変数」ボタンをクリックしてくださいあなたが望む新しい環境変数を追加してください。
    4. 変更を受け入れるために「OK」を入力してください。

    Visual Studioを再起動する必要があるかどうかわかりませんが、そうは思われません。 HTH

  • +0

    Mark、私は、プログラムが開始された環境の要件であり、ユーザーやシステム環境ではないと考えています。 –

    +0

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

    +0

    うん、それを逃した。ごめんなさい。 – Mark

    0

    環境は親プロセスから継承されているとして、あなたがスタートを実行する前に、あなたはその環境変数を変更するVisual Studio用アドインを書くことができます。私はあなたのプロセスにどのくらい簡単に入れられるのかが分かりません。

    4

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

    私はC/C++で_putenv()main()に使用し、任意の変数を設定しています。通常は、特定のビルドだけがそれを持っていることを確認するために、それを囲むのは#if defined DEBUG_MODE/#endifです。

    _putenv("MYANSWER=42"); 
    

    は、私はこれらだけでそのシェルプロセスのためのenvrironment変数を設定しますあなたはすなわち、()

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

    をos.putenv使ってC#で同じことを行うことができると信じて、そしてなどは短命でありますあなたが探しているものです。

    ところで、そのプロセスエクスプローラ(http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)は、sysinternalsツールです。あなたは与えられたプロセスの環境変数のコピーが何であるかを見ることができるので、あなたが設定したものがあなたが持っているものであることを検証することができます。 NUnitの2.5以降で

    1

    あなたは、例えば/フレームワークスイッチを使用することができます。:

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

    これはNUnit's help pagesからです。あなたが使用できるMacとC#のVisual Studioで

    2

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

    しかし、あなたはこれで変数の完全なリストを確認することができ、次の名前空間

    using System.Collections; 
    

    が必要になります。

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

    OMG、私は過去30分間、単純な呼び出しであるEnvironment.SetEnvironmentVariable()を探しています。ありがとう! – Alan

    関連する問題