- PR -

開発環境と本番環境でのアプリケーション設定切り替え方法

1
投稿者投稿内容
GO-TEN
常連さん
会議室デビュー日: 2003/12/07
投稿数: 20
投稿日時: 2006-11-08 15:14
C# WindowsForm で、SQL Server 2005 Express に接続するアプリケーションを作成しています。
DB接続文字列は、アプリケーション設定の Settings.settings に保存しています。
基本的にデータソースの作成も、ウィザードを使用しました。

開発環境と本番環境とで、接続するDBサーバのサーバ名が異なります。
そのほかにもいろいろと異なる設定がありまして、
最初はいちいち Settings.settings の接続文字列を書き換えてリリースしていましたが、
不便なので、アプリケーション設定ファイルを開発用にひとつ追加し、開発用の
接続文字列を設定しました。
イベント Settings_SettingsLoaded 内で、Settings.settings にフラグ「DEBUG_MODE」を
もち、true なら this["connectionString"] を 追加した設定ファイルの文字列に
書き換えています。
これでかなりやりやすくはなったのですが、データソースのウィザードを使用しようと
すると、どうやら Settings.settings の接続文字列を見に行ってしまい、ウィザードが
使用できません。


開発環境と本番環境のアプリケーション設定を切り替える、もっとスマートな方法は
ないでしょうか?

以下、Settings.setting のイベント発生時のコードです。

void Settings_SettingsLoaded(object sender, System.Configuration.SettingsLoadedEventArgs e)
{
if (TestApp.Properties.Settings.Default.DEBUG_MODE)
{
this["connectionString"] = TestApp.Properties.SettingsDebug.Default.connectionString;
}
}

HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-11-08 15:36
私は#ifディレクティブを使用しています。

ご参考 テスト用コードをデバッグ時にのみ実行するには?
_________________
--------------------------------------------
HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています
HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ
GO-TEN
常連さん
会議室デビュー日: 2003/12/07
投稿数: 20
投稿日時: 2006-11-08 16:01
HIRO さま、返信ありがとうございます。

#ifディレクティブ の使用も考えたのですが、DB接続に関しては Designer.cs の
private void InitConnection() にて

this._connection.ConnectionString = global::TestApp.Properties.Settings.Default.connectionString;

と取得しており、Designer.cs を触らずに ConnectionString を開発用に
設定できるような#ifディレクティブ の使い方がわかりませんでした。
Settings.setting 読み込み時に、DEBUG なら appDebug.conifig を、本番なら
app.config を読み込むような#ifディレクティブ の使い方ができれば
よいのかなと思うのですが、いったいどこに記述したら???と
悩んでおります。
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-11-08 16:29
 プロジェクトに設定ファイルを2つ追加し、Settinng1をデバッグ用、Setting2をリリース用として下記のように書いてみてはどうでしょうか?

private void Form1_Load(object sender, EventArgs e)
{
Settings1 set1 = new Setting1();
Settings2 set2 = new Setting2();

string strConn = string.Empty;
#if DEBUG
strConn = set1.Connstring;
#else
strConn = set2.Connstring;
#endif

}
_________________
--------------------------------------------
HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています
HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-08 20:34
System.Diagnostics.ConditionalAttribute 属性。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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