2009-05-19 25 views
8

Quiero conseguir el camino de mi aplicación como: "\\ Archivos de programa \\ myApp", trato de utilizar el siguiente código:¿Cómo obtener la ruta de la aplicación (sin app.exe)?


string path = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase; 

pero devuelve un camino que tiene "\\ myapp.exe " al final.

También probé:


string path = System.IO.Directory.GetCurrentDirectory(); 

Pero se emite una “NotSupportedException”.

¿Hay alguna manera de obtener una ruta sin .exe al final?

Respuesta

9
path = System.IO.Path.GetDirectoryName(path); 
18

Application.StartupPath debería hacer eso por usted.

Actualización: de su edición veo que se está ejecutando en Compact Framework. Entonces Application.StartupPath no funcionará. Este es el constructo que yo suelo utilizar a continuación:

private static string GetApplicationPath() 
{ 
    return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
} 
+0

Lo siento por la confusión y gracias por su respuesta rápida; P –

1

Puede método Path.GetDirectoryName (cadena) que pasa a su cadena de ruta original como parámetro para este uso. ¿Que problema estas tratando de resolver? ¿Tal vez realmente necesita algo como el directorio de trabajo?

+0

Gracias y danbyStrom, su guía funciona bien. Intento reproducir el sonido usando el archivo wav en el directorio de mi aplicación, así que necesito su directorio (sin app.exe). –

0
Path.GetFileNameWithoutExtension(path); 
+0

Gracias, pero esto devolverá el nombre del archivo "myApp" al igual que el nombre del método menciona. Gracias por la guía sobre este método de todos modos. –

+0

¡Shucks! Eso es lo que pensé que querías. :) –

0

¿Qué pasa con el uso de un objeto FileInfo para extraer el nombre del directorio?

En Vb.Net:

fi = New FileInfo(System.Reflection.Assembly.GetExecutingAssembly.Location) 
path = fi.DirectoryName 
+0

"Ubicación" no se encuentra en la aplicación C#, pero todo en() se puede reemplazar por el archivo de ruta que escribí y funciona. Gracias. –

0

Si es un exe como en el caso de uso:

// Summary: 
    //  Gets the path for the executable file that started the 
    //  application, not including the executable name.  
    Application.StartupPath 
3

más simple que el resto:

using System.IO; 
using System.Reflection; 
... 
var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 
+0

ummm ... es simple, pero no se encuentra "Ubicación" (al menos en la aplicación Windows Mobile). –

Cuestiones relacionadas