@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

VisualStudio デバッグ時の環境変数をプロジェクトにひもづけて管理

1
投稿者投稿内容
DSCH
常連さん
会議室デビュー日: 2005/10/23
投稿数: 24
投稿日時: 2006-12-14 19:38
VisualStudioのバージョンは2003、2005どちらでもかまいません。

DBの接続先などを最終的に環境変数から(App.config経由で)取得するプログラムを作成しています。デバッグするためには環境変数の設定が必要なのですが、システムのプロパティで設定することは避けたいと思っています。

「実行時のコマンドライン引数」や「ビルド前に実行するコマンドライン」
と同じような感覚でプロジェクトにひもづけて管理したいと思っています。
デバッグの開始動作を「外部プログラムからの開始」にして、
そこに環境変数を設定した後exeを実行するbatファイルを指定してみましたが、
exeファイル以外は指定できないようでだめでした。

現在は
1、環境変数を設定した後exeを起動するbatファイルを実行し、プロセスのアタッチでデバッグをする。
2、環境変数を設定した後VisualStudioでプロジェクトを開くbatファイルを用意する。
といった方法をとっています。

他にプロジェクトごとに環境変数を簡単に設定してデバッグするよい方法はございませんでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-14 19:47
引用:

DSCHさんの書き込み (2006-12-14 19:38) より:

「実行時のコマンドライン引数」や「ビルド前に実行するコマンドライン」と同じような感覚でプロジェクトにひもづけて管理したいと思っています。
(snip)
他にプロジェクトごとに環境変数を簡単に設定してデバッグするよい方法はございませんでしょうか?


デバッグならば、「条件付きコンパイル引数」 ではダメでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
DSCH
常連さん
会議室デビュー日: 2005/10/23
投稿数: 24
投稿日時: 2006-12-14 20:38
じゃんぬねっとさん、返答ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2006-12-14 19:47) より:

デバッグならば、「条件付きコンパイル引数」 ではダメでしょうか?



「条件付きコンパイル引数」というのは存在自体殆ど知りませんでした。
ちょっと調べて見ましたが以下のような感じでしょうか?

コード:
   string dbUser;
   #if DEBUG
   dbUser = "scott";// デバッグ時に使いたい値を直接指定 
   #else
   dbUser =Environment.GetEnvironmentVariable("DB_USER"); // 環境変数から取得
   #endif
   MessageBox.Show(dbUser);



環境変数を扱うのが難しいなら、扱わなくてよくする。
逆に考えるんだ。というわけですね。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-14 21:59
引用:

DSCHさんの書き込み (2006-12-14 20:38) より:

環境変数を扱うのが難しいなら、扱わなくてよくする。
逆に考えるんだ。というわけですね。


ゴゴゴゴゴゴゴゴゴ... って、ジョージ・ジョースターさん。
こんなもので、解決しましたでしょうか?

ちなみに、.NET Framework 2.0 では、Conditional 属性と組み合わせると、さらに COOL! です。
#if ディレクティブは、見難くなるのであまり好きではないです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
DSCH
常連さん
会議室デビュー日: 2005/10/23
投稿数: 24
投稿日時: 2006-12-14 23:28
引用:

じゃんぬねっとさんの書き込み (2006-12-14 21:59) より:

ちなみに、.NET Framework 2.0 では、Conditional 属性と組み合わせると、さらに COOL! です。
#if ディレクティブは、見難くなるのであまり好きではないです。





確かにあちこちに登場すると見づらくなりますね。
実際にはApp.Config→環境変数で値を取得する用のメソッドがあるので、そこだけで使用するのもありかなって思います。デバッグ時はアプリケーション構成ファイルに値を直に書けるほうがやりやすいですし。

コード:
        public static string GetEnvValiableViaConfig(string configKey)
        {
            string evKey = ConfigurationManager.AppSettings[configKey];
            #if DEBUG
            return evKey;
            #else
            return Environment.GetEnvironmentVariable(evKey);
            #endif
        }




Conditional 属性も面白いですね。
戻り値は void じゃないといけないと。
この属性を付けたメソッドでデリゲートは作成できないと。

引用:

ゴゴゴゴゴゴゴゴゴ... って


実は@ITならぬ、別の@某でもじゃんぬねっとさんのお名前を見かけたことが・・
1

スキルアップ/キャリアアップ(JOB@IT)