2011-07-11 13 views
6

Tengo este proyecto de C# en Visual Studio (2010), y me gustaría consultar un archivo en mi directorio personal en la sección <appSettings> del archivo App.config del proyecto. Es decir, yo uso esta sintaxis:¿Es posible hacer referencia al directorio de inicio en appSettings en un archivo App.config?

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

¿Es posible hacer referencia a mi directorio (C: \ Users \ arvek) a través de una variable en lugar de codificar directamente? F.ex .: value = "sqlite: /// $ HOME \ test.db3".

Respuesta

9

El ConfigurationManager no ampliará automáticamente nada en la configuración de la aplicación, ya que son solo cadenas de forma libre, pero puede hacerlo manualmente. Use el método ExpandEnvironmentVariables de Environment, que ampliará las variables del formulario %VARIABLENAME% de acuerdo con el entorno actual. Por lo tanto:

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


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

La ruta raíz de su directorio "casa" está en la variable% USERPROFILE%, aunque% APPDATA% es el lugar tradicional para poner el tipo de lo que está hablando. También hay% ALLUSERSPROFILE% para datos en todo el sistema (aunque en Windows 7 que realmente apunta a una carpeta de datos especial para todo el sistema, no al perfil "Public")

+0

No puedo creer que no haya pensado en manejar la expansión de variables yo mismo :) Sin embargo, una buena recomendación es el% APPDATA%. – aknuds1

0

Me resulta más fácil obtener el directorio de la aplicación con esta simple línea de código

string appBasePath = AppDomain.CurrentDomain.BaseDirectory; 

Así es como siempre me refiero a él.

Cuestiones relacionadas