MW211 EXIT

devlog
VB.net/デバッグDB環境
2015年04月29日
デバッグ時だけDBの接続先を評価環境にしたい場合。

まず、以下のような部分クラスを用意し、接続文字列を書き換えられるようにする。
┌──────────────────────────────────────┐
│Namespace My                                                                │
│    Partial Friend NotInheritable Class MySettings                          │
│        Friend Sub SetConnectionString(ByVal 接続文字列 As String)          │
│            Me("■■DBConnectionString") = 接続文字列                       │
│        End Sub                                                             │
│    End Class                                                               │
│End Namespace                                                               │
└──────────────────────────────────────┘

そして、適宜それを呼ぶ。
┌──────────────────────────────────────┐
│#If DEBUG Then                                                              │
│    My.Settings.SetConnectionString("Data Source=…(略)")                   │
│#End If                                                                     │
└──────────────────────────────────────┘
設定する内容については、「SetConnectionString」あたりでソースをgrepしてみて
既定の設定方法を探しそれを参考にし、一部を書き換えてあげる感じとなる。

さて、上記をどこに置けばよいかが問題となる。
開始処理に置くのが望ましいので、エントリポイント(Main())が最適だ。
ただ、「アプリケーションフレームワーク」が有効な場合(*1)、
そこは自動生成されるソース(My Project/Application.Designer.vb)の
中となってしまう。

さすがにそこに記述できない(記述はできるが上書される恐れあり)ということで代替案。

この場合、「スタートアップフォーム」に設定されたフォーム(*1)が
まず最初に起動される訳なので、
そこのコンストラクタ(New())に記述してしまえば間違いないだろう。
┌──────────────────────────────────────┐
│Public Class Formスタートアップ                                             │
│    Sub New()                                                               │
│        ' この呼び出しはデザイナーで必要です。                              │
│        InitializeComponent()                                               │
│        ' InitializeComponent() 呼び出しの後で初期化を追加します。          │
│#If DEBUG Then                                                              │
│        My.Settings.SetConnectionString("Data Source=…(略)")               │
│#End If                                                                     │
└──────────────────────────────────────┘

起動からの処理の流れ。
┌──────────────────────────────────────┐
│エントリポイント(Main())  ←★ここに置くか                                  │
│↓                                                                          │
│スタートアップフォーム                                                      │
││コンストラクタ          ←★ここに置く                                    │
││↓                                                                        │
└──────────────────────────────────────┘

*1:いずれも「My Project/アプリケーション」にて設定
分類:VB.net