シンプルな永続化レイヤーを必要とするデスクトップ アプリを作成しています。SubSonic について知り、SQLite を操作できることを知りました。ただし、データベース ファイルをユーザーの AppData フォルダーに保持する必要があり、そのような値を app.config に入れる方法がわかりません。絶対パスを使用したくありません。
app.config は何らかの方法で環境変数にアクセスしたり、アプリケーション データ フォルダーを参照したりできますか?
シンプルな永続化レイヤーを必要とするデスクトップ アプリを作成しています。SubSonic について知り、SQLite を操作できることを知りました。ただし、データベース ファイルをユーザーの AppData フォルダーに保持する必要があり、そのような値を app.config に入れる方法がわかりません。絶対パスを使用したくありません。
app.config は何らかの方法で環境変数にアクセスしたり、アプリケーション データ フォルダーを参照したりできますか?
接続文字列の app.config で AppData フォルダーを指定する方法はありません。
ただし、インストール中またはアプリケーションの最初の実行時に値を構成ファイルに書き込むことができます。
appdataを見つける「フレームワークの方法」は、Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)を使用することです。
これにより、プラットフォームに関係なく、正しいappdataパスが見つかります。
いずれかの言語で ASP.NET を使用している場合、いくつかの方法があります。
Server.MapPath("~") は、アプリケーションのルートをフル パス名として返します。「/app_data」を追加するだけでフル パスを取得できます。
別の方法として、HttpContext.Current.Request と HttpContext.Current.Application を調べると、同じフォルダー (フル パスとしてのアプリケーションのルート) を提供する多数の (そして、先ほど述べたものよりもはるかに優れた) プロパティがあります。
アプリケーションが仮想フォルダーとしてあり、そのフォルダーの IIS でアプリケーションが構成されている通常のフォルダーがある場合でも、これらはすべて機能することに注意してください。
ただし、これは実行時にのみ可能であるため、app.config で実際に言及することはできません。app.config が常駐する IE "../App_Data" または "/App_data" からの相対パスを使用してみることができますが、正確な要件かどうかはわかりません。
幸運を