getfilename current combine c# path

current - ¿Cómo puedo eliminar el ''archivo: //' del valor de retorno de Path.GetDirectoryName() en C#



path combine c# (6)

string path = Path.GetDirectoryName( Assembly.GetAssembly(typeof(MyClass)).CodeBase);

salida:

archivo: / d: / learning / cs / test / test.xml

¿Cuál es la mejor manera de devolver solo d: / learning / cs / test / test.xml

file:// lanzará una excepción cuando llame a doc.Save(returnPath) , sin embargo doc.Load(returnPath) ; funciona bien. Gracias.


De esta manera, se agrega el nombre exe al final (C: / Folder / project / project / bin / debug / myapp.exe / xyz.txt).

Cadena de reemplazo es la solución más segura en mi opinión.


Mi primer acercamiento sería así ...

path = path.Replace("file://", "");


Si desea el directorio del conjunto de esa clase, puede usar la propiedad Assembly.Location :

string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(MyClass)).Location);

Sin embargo, esto no es exactamente lo mismo que la propiedad CodeBase . La Location es la "ruta o ubicación UNC del archivo cargado que contiene el manifiesto", mientras que la CodeBase es la "ubicación del ensamblaje como se especificó originalmente, por ejemplo, en un objeto AssemblyName".


use el método de cadena de subcadena para tomar el nombre del archivo después del archivo: /


string path = new Uri(Assembly.GetAssembly(typeof(MyClass)).CodeBase).LocalPath;


System.Uri uri = new System.Uri(Assembly.GetAssembly(typeof(MyClass)).CodeBase); string path = Path.GetDirectoryName(uri.LocalPath);