2012-05-22 31 views
14

¿Cómo puedo obtener programáticamente la ruta de archivo de un archivo en mi proyecto?Obtener ruta de archivo de un archivo en su proyecto actual

string fileContent = File.ReadAllText(LocalConstants.EMAIL_PATH); 

EMAIL_PATH Agregué a mi proyecto como un archivo de texto. Esta línea de código arroja una excepción porque por defecto está buscando en la carpeta system32 por algún motivo. Necesito configurarlo en el directorio de proyectos.

+0

quiere el directorio de la aplicación? –

+0

Agrego un archivo de texto a mi proyecto. Necesito ese directorio –

+0

El directorio raíz de los proyectos es lo que necesito –

Respuesta

25

Usted podría utilizar Path.Combine y AppDomain.CurrentDomain.BaseDirectory:

string fileName = "SampleFile.txt"; 
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalConstants.EMAIL_PATH, fileName); 

devoluciones en un proyecto de prueba en modo de depuración este camino (cuando LocalConstants.EMAIL_PATH="Emails"):

C:\****\****\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsFormsApplication1\bin\Debug\Emails\SampleFile.txt 
+0

Este código apunta a la carpeta bin/Debug. EMAIL_PATH está en la carpeta raíz del proyecto –

+0

Tal vez mi problema es que tengo que configurar los archivos de texto para copiar a la salida. ¿Es eso lo estándar para hacer? –

+1

@NickLaMarca: ¿Se refiere a http://stackoverflow.com/a/857473/284240? Tal vez, depende de su requisito exacto. –

1

Puede utilizar Environment.CurrentDirectory

Ver: http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

Para leer más.

editar *

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

hará lo mismo y es quizás un poco más seguro.

+0

Eso apunta a la carpeta de windows system32 –

+0

Señalará donde esté su directorio de trabajo. Acabo de ejecutar una demostración en una aplicación de consola de prueba y la salida fue: "c: \ users \ duane \ documents \ visual studio 2010 \ Projects \ EnvironmentDemo \ EnvironmentDemo \ bin \ Debug", podría publicar la cadena que obtiene de esta propiedad ? – dtsg

+1

El directorio actual no es siempre el directorio de su aplicación. Si es un archivo de soporte, entonces no es seguro suponer esto. –

0

Esto funcionó para mí System.AppDomain.CurrentDomain.BaseDirectory.ToString()

Cuestiones relacionadas