Исполняемый каталог, из которого выполняется приложение?

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

System.AppDomain.CurrentDomain.BaseDirectory()

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

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

Спасибо!

Ответы

Ответ 2

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

введите описание изображения здесь

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))

Ответ 3

Dim P As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
P = New Uri(P).LocalPath

Ответ 4

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

Ответ 5

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

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

Пример:

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

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

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

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

Ответ 6

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

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