データベースのパス(いくつかのxmlファイルを含むフォルダー)をapp.configに保存します。起動時に、パスが存在するかどうかを確認します。存在しない場合は、パスをデフォルトのパスに設定したいと思います。コードは次のようになります。
public void CheckAndRepairSettings()
{
/* Check Paths */
if(GetDatabasePath() == null)
SetDatabasePath(System.AppDomain.CurrentDomain.BaseDirectory + "DataBase");
}
GetDatabasePath()
app.configからパスを読み取り、app.configSetDatabasePath()
にパスを書き込みます。これらのメソッドは正常に機能しています。
私の問題はSystem.AppDomain.CurrentDomain.BaseDirectory
です。これをアプリケーションのデバッグモードで実行すると、次のようになります。 "F:\ Office \ Project_Software \ ServiceTool \ _Work \ ServiceSoftware \ ServiceSoftware \ bin \ Debug \"
さらに、いくつかの単体テストにNUnitを使用します。NUnitをデバッグモードで実行すると、次のようになります: "F:\ Office \ Projekte_Software \ ServiceTool \ _Work \ ServiceSoftware \ ServiceSoftware.UnitTests \ bin \ Debug"
NUnitデバッグモードのパスには末尾の円記号"\"がないため、のパス文字列を連結すると、存在しないパスが取得されますCheckAndRepairSettings()
。
なぜこれがそれほど異なる動作をするのですか?