Исполняемый каталог, из которого запускается приложение? - PullRequest
18 голосов
/ 07 апреля 2010

Мне нужно получить путь (не исполняемый файл), из которого запускается мое приложение:

System.AppDomain.CurrentDomain.BaseDirectory()

Когда я запускаю приведенный выше оператор с помощью & "/images/image.jpg" на моей локальной машинеон работает нормально, но когда я устанавливаю приложение на другой компьютер, он говорит, что не может найти файл, и есть много дополнительной информации о пути.

Мне просто нужен каталог, в котором запущено приложение.Я кодирую в VB.NET с Visual Studio 2008.

Спасибо!

Ответы [ 6 ]

26 голосов
/ 07 января 2016

Это первое сообщение в Google, поэтому я подумал, что я буду публиковать различные доступные способы и их сравнение. К сожалению, я не могу понять, как создать таблицу здесь, так что это изображение. Код для каждого ниже изображения с использованием полностью определенных имен.

enter image description here

My.Application.Info.DirectoryPath

Environment.CurrentDirectory

System.Windows.Forms.Application.StartupPath

AppDomain.CurrentDomain.BaseDirectory

System.Reflection.Assembly.GetExecutingAssembly.Location

System.Reflection.Assembly.GetExecutingAssembly.CodeBase

New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase)

Path.GetDirectoryName(Uri.UnescapeDataString((New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase).Path)))

Uri.UnescapeDataString((New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase).Path))
25 голосов
/ 07 апреля 2010
Dim strPath As String = System.IO.Path.GetDirectoryName( _
    System.Reflection.Assembly.GetExecutingAssembly().CodeBase)

Взято из КАК: Определить путь исполняемого приложения (MSDN)

12 голосов
/ 07 сентября 2014
Dim P As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
P = New Uri(P).LocalPath
10 голосов
/ 22 сентября 2016

Мне нужно было это знать, и я пришел сюда, прежде чем вспомнил о классе окружающей среды.

Если у кого-то еще возникла эта проблема, просто используйте это: Environment.CurrentDirectory.

Пример:

Dim dataDirectory As String = String.Format("{0}\Data\", Environment.CurrentDirectory)

При запуске из Visual Studio в режиме отладки выдается:

C:\Development\solution folder\application folder\bin\debug

Это именно то поведение, которое мне было нужно, и оно достаточно простое и понятное.

5 голосов
/ 07 апреля 2010

Вы можете использовать статическое свойство StartupPath класса Application.

0 голосов
/ 07 апреля 2010

Вы можете написать следующее:

Path.Combine(Path.GetParentDirectory(GetType(MyClass).Assembly.Location), "Images\image.jpg")
...