Necesito la ruta bin del ensamblaje en ejecución. ¿Cómo lo conseguiste? Tengo una carpeta de complementos en Bin / Debug y necesito obtener la ubicación
Tenga en cuenta que el valor en pathtendrá la forma de file:\c:\path\to\bin\folder, por lo que antes de usar la ruta, es posible que deba file:\quitar el frente. P.ej:
Hola, gracias por tu pronta respuesta. ¿Por qué si codifico la ruta, la encuentra y si hago el siguiente código, no lo hace? La única diferencia que puedo ver es el "\\". ¿Me estoy perdiendo de algo? var binpath = Path.GetDirectoryName (Assembly.GetExecutingAssembly (). GetName (). CodeBase); var fullpath = Path.Combine (binpath, folderName); if (! Directory.Exists (fullpath)) return;
user9969
6
En mi caso, el problema fue que System.IO.Path.GetDirectoryName () devuelve una ruta con un "archivo: \\" al principio. Lo quité de la cuerda y todo funcionó.
Heitor Corrêa
Esto parece ir al directorio de salida
Demodave
1
ruta = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly (). CodeBase); esto funcionó para mí
m1m1k
6
Sugiero usar .Replace ("file: \\", "") para eliminar el prefijo del archivo, ya que es más específico del problema.
Esto funcionó perfectamente en alojamiento IIS y Winform, gracias.
dynamiclynk
¡Gracias! Esto parece funcionar para la aplicación ASP.NET y la aplicación de consola. En asp.net RelativeSearchPathcontiene la carpeta "bin" real y en la aplicación de consola esto es nully BaseDirectorycontiene la ruta "bin" real.
Mariusz Pawelski
8
var assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
Respuestas:
Así es como obtiene la ruta de ejecución de la aplicación:
var path = System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
MSDN tiene una referencia completa sobre cómo determinar la ruta de la aplicación en ejecución .
Tenga en cuenta que el valor en
path
tendrá la forma defile:\c:\path\to\bin\folder
, por lo que antes de usar la ruta, es posible que debafile:\
quitar el frente. P.ej:path = path.Substring(6);
fuente
Podrías hacer esto
Assembly asm = Assembly.GetExecutingAssembly(); string path = System.IO.Path.GetDirectoryName(asm.Location);
fuente
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
Esto es lo que solía lograr con esto:
System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? "");
fuente
RelativeSearchPath
contiene la carpeta "bin" real y en la aplicación de consola esto esnull
yBaseDirectory
contiene la ruta "bin" real.var assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
fuente
p.ej. valor:
fuente
var path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)?.Replace("file:\\", "");
fuente