È possibile utilizzare:
string path = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
Alcuni suggerimenti nei commenti sono di passare che attraverso System.Uri.UnescapeDataString
(da vvnurmi) per garantire che qualsiasi percentuale di codifica viene gestita, e di utilizzare Path.GetFullpath
(da TrueWill per garantire che il percorso sia in formato Windows standard (anziché avere barre anziché barre rovesciate). Ecco un esempio di quello che si ottiene in ogni fase:
string s = Assembly.GetExecutingAssembly().CodeBase;
Console.WriteLine("CodeBase: [" + s + "]");
s = (new Uri(s)).AbsolutePath;
Console.WriteLine("AbsolutePath: [" + s + "]");
s = Uri.UnescapeDataString(s);
Console.WriteLine("Unescaped: [" + s + "]");
s = Path.GetFullPath(s);
Console.WriteLine("FullPath: [" + s + "]");
Output se stiamo correndo C:\Temp\Temp App\bin\Debug\TempApp.EXE
:
CodeBase: [file:///C:/Temp/Temp App/bin/Debug/TempApp.EXE]
AbsolutePath: [C:/Temp/Temp%20App/bin/Debug/TempApp.EXE]
Unescaped: [C:/Temp/Temp App/bin/Debug/TempApp.EXE]
FullPath: [C:\Temp\Temp App\bin\Debug\TempApp.EXE]
fonte
2009-05-14 16:55:43
Assembly.GetExecutingAssembly(). Posizione – RichieHindle