2013-07-31 2 views

ответ

10

Существует несколько способов получить EXE-путь. Попробуйте следующее:

  • Application.StartupPath
  • Path.DirectoryName (Environment.GetCommandLineArgs() [0])
  • Path.DirectoryName (. System.Diagnostics.Process.GetCurrentProcess() MainModule.FileName) .
  • Path.DirectoryName (. Assembly.GetEntryAssembly() Location)
  • System.Reflection.Assembly.GetEntryAssembly() Местонахождение
+1

'Assembly.Location' может возвращать' null' в некоторых случаях лучше использовать 'AssemblyName.CodeBase', пример ниже Ned Stoyanov – ili

+0

Процесс является IDisposable, что означает, что вы должны обернуть третью опцию блоком 'using' –

1

Попробуйте это:

System.IO.Path.GetDirectoryName( 
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
+0

' System.IO.Path.GetDirectoryName (новый Uri ( System.Reflection.Assembly.GetExecutingAssembly(). GetName () .CodeBase) .LocalPath); '- это правильно,' CodeBase' возвращает URL-адрес, а 'Path.GetDirectoryName (...)' не работает с URL-адресами – ili

0

Вы можете распаковать Ури так:

string codeBase = Assembly.GetExecutingAssembly().CodeBase; 
    UriBuilder uri = new UriBuilder(codeBase); 
    string path = Uri.UnescapeDataString(uri.Path); 
Смежные вопросы