Как получить путь к приложению (без app.exe)? - PullRequest
8 голосов
/ 19 мая 2009

Я хочу получить путь к моему приложению, например: "\\ ProgramFiles \\ myApp", я пытаюсь использовать следующий код:


string path = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;

Но он возвращает путь, в конце которого стоит \\ myapp.exe.

Я тоже пробовал:


string path = System.IO.Directory.GetCurrentDirectory();

Но выдается исключение NotSupportedException.

Есть ли способ получить путь без .exe в конце?

Ответы [ 7 ]

18 голосов
/ 19 мая 2009

Application.StartupPath должен сделать это для вас.

Обновление: из ваших правок я вижу, что вы работаете на Compact Framework. Тогда Application.StartupPath не будет работать. Это конструкция, которую я обычно использую тогда:

private static string GetApplicationPath()
{
    return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
}
10 голосов
/ 19 мая 2009
path = System.IO.Path.GetDirectoryName( path );
3 голосов
/ 19 мая 2009

Проще, чем остальные:

using System.IO;
using System.Reflection;
...
var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
1 голос
/ 19 мая 2009

Вы можете использовать метод Path.GetDirectoryName (string), передавая исходную строку пути в качестве параметра для этого. Какую проблему ты пытаешься решить? Может быть, вам действительно нужно что-то вроде рабочего каталога?

0 голосов
/ 19 мая 2009

Если это exe, как в вашем случае используйте:

    // Summary:
    //     Gets the path for the executable file that started the 
    //     application, not including the executable name.    
    Application.StartupPath
0 голосов
/ 19 мая 2009

Как насчет использования объекта FileInfo для извлечения имени каталога?

В Vb.Net:

fi = New FileInfo(System.Reflection.Assembly.GetExecutingAssembly.Location)
path = fi.DirectoryName
0 голосов
/ 19 мая 2009
Path.GetFileNameWithoutExtension(path);
...