¬ŅC√≥mo averiguamos la ruta en la que est√° un ejecutable?

Hay varias formas para todos los gustos: desde los que van a lo pr√°ctico a los que les "mola" complicarse la vida. Ve√°moslas todas ;-)

- Solución 1 (fácil):

private static string RutaActual()
{
     return Environment.CurrentDirectory;
}

- Solución 2 (fácil):

using System.IO;

private static string RutaActual()
{
     return Directory.CurrentDirectory;
}

- Solución 3 (media):

using System.Diagnostics;

private static string RutaActual()
{
     string arch = Process.GetCurrentProcess().MainModule.FileName;
     return arch.Substring(0, arch.LastIndexOf("\\"));
}

- Solución 4 (super-rebuscada: como la hace la plataforma .NET y usando la API):

private static string RutaActual()
{
      string text2;
      StringBuilder builder1 = new StringBuilder(0x105);
      if (Win32Native.GetCurrentDirectory(builder1.Capacity, builder1) == 0)
      {
            __Error.WinIOError();
      }
      string text1 = builder1.ToString();
      if (text1.EndsWith(@"\"))
      {
            text2 = text1 + ".";
      }
      else
      {
            text2 = text1 + @"\.";
      }
      string[] textArray1 = new string[] { text2 } ;
      new FileIOPermission(FileIOPermissionAccess.PathDiscovery, textArray1, false, false).Demand();
      return text1;
}

En esta √ļltima me niego a poner todas las definiciones (copiado y pegado de .NET Reflector) :-(

Escoja la que m√°s le guste, pero lo cierto es que¬†usar la 1, la 2 o¬†3 es exactamente lo mismo porque las dos primeras llaman a esta √ļltima. As√≠ que en el¬†fondo la m√°s r√°pida puede que sea la tercera que usa una manera¬†completamente distinta de hacerlo ¬Ņo no? Quien sabe...¬†;-)

💪🏻 ¬ŅEste post te ha ayudado?, ¬Ņhas aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA