C# Application.ExecutablePath на WPF Framework 3.5

Този ред е добре в WinForm Framework3.5, но не и в WPF Framework3.5.

Path.GetDirectoryName(Application.ExecutablePath); 

Как мога да получа exe пътя на WPF приложение?


person Fred Smith    schedule 31.07.2013    source източник


Отговори (3)


Има няколко начина за получаване на exe път. Опитайте следното:

  • Application.StartupPath
  • Path.GetDirectoryName(Environment.GetCommandLineArgs()[0])
  • Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
  • Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
  • System.Reflection.Assembly.GetEntryAssembly().Location
person Dzmitry Martavoi    schedule 31.07.2013
comment
Assembly.Location може да върне null в някои случаи, по-добре е да използвате AssemblyName.CodeBase, примерът е по-долу от Нед Стоянов - person ili; 10.04.2014
comment
Процесът е IDisposable, което означава, че трябва да обвиете третата опция с using блок - person RE6; 21.04.2014

Опитайте тази:

System.IO.Path.GetDirectoryName( 
  System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
person NeddySpaghetti    schedule 31.07.2013
comment
System.IO.Path.GetDirectoryName( new Uri( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath ); - това е правилно, CodeBase връща URL, а Path.GetDirectoryName(...) не работи с URL адреси - person ili; 10.04.2014

Можете да разопаковате Uri по следния начин:

string codeBase = Assembly.GetExecutingAssembly().CodeBase;
   UriBuilder uri = new UriBuilder(codeBase);
   string path = Uri.UnescapeDataString(uri.Path);
person Joe Sonderegger    schedule 19.01.2015