Ответ 1
Dim strPath As String = System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
Мне нужно получить путь (а не исполняемый файл), в котором работает мое приложение:
System.AppDomain.CurrentDomain.BaseDirectory()
Когда я запускаю вышеуказанный оператор и "/images/image.jpg" на моем локальном компьютере, он отлично работает, но когда я устанавливаю приложение на другой компьютер, он говорит, что не может найти файл, и есть много дополнительного пути информация некоторые.
Мне просто нужен каталог того, где приложение работает. Я кодирую в VB.NET с Visual Studio 2008.
Спасибо!
Dim strPath As String = System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
Это первое сообщение в 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))
Dim P As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
P = New Uri(P).LocalPath
Вы можете использовать статическое свойство StartupPath класса Application.
Мне нужно было знать это и приходило сюда, прежде чем я вспомнил класс Environment.
Если у кого-то еще была эта проблема, просто используйте это: Environment.CurrentDirectory
.
Пример:
Dim dataDirectory As String = String.Format("{0}\Data\", Environment.CurrentDirectory)
При запуске из Visual Studio в режиме отладки yeilds:
C:\Development\solution folder\application folder\bin\debug
Это точное поведение, в котором я нуждался, и его простой и понятный.
Вы можете написать следующее:
Path.Combine(Path.GetParentDirectory(GetType(MyClass).Assembly.Location), "Images\image.jpg")