2011-07-11 31 views
6

私はVisual Studio(2010)でこのC#プロジェクトを持っていて、プロジェクトのApp.configファイルの<appSettings>セクションのホームディレクトリにあるファイルを参照したいと思います。それは私がこの構文を使用し、次のとおりです。App.configファイルのappSettings内のホームディレクトリを参照することはできますか?

<appSettings> 
    <add key="Database" value="sqlite:///C:\Users\arvek\test.db3" /> 
</appSettings> 

それは私のホームディレクトリを参照することが可能です:直接それをハードコーディングするのではなく、変数を経由して(C \ Users \ユーザーarvek)? F.ex .: value = "sqlite:/// $ HOME \ test.db3"。

答えて

9

ConfigurationManagerは、自由形式の文字列であるため、アプリ設定で何も自動的に展開しませんが、手動で行うこともできます。 ExpandEnvironmentVariablesメソッドをEnvironmentとすると、現在の環境に応じて%VARIABLENAME%という形式の変数が展開されます。だから、:%APPDATA%はあなたが話しているもののようなものを置くための伝統的な場所であるにもかかわらず

<appSettings> 
    <add key="Database" value="sqlite:///%APPDATA%\database\test.db3" /> 
</appSettings> 


string path = Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["Database"]); 

あなたの「ホーム」ディレクトリへのルート・パスは、%USERPROFILE%変数です。システム全体のデータには%ALLUSERSPROFILE%もあります(ただし、Windows 7では「Public」プロファイルではなく特別なシステム全体のデータフォルダに実際に移動します)。

+0

私は自分自身で変数の拡張を扱っているとは思えませんでした。でも、%APPDATA%のものをうまく呼び出せます。 – aknuds1

0

私は、この単純なコード行

string appBasePath = AppDomain.CurrentDomain.BaseDirectory; 

これは私がいつもそれを参照する方法です。

関連する問題