




В VB.NET
Dim directory as String = My.Application.Info.DirectoryPath
В C#
string directory = AppDomain.CurrentDomain.BaseDirectory;
Местоположение C# также будет работать на VB или других языках, которые не поддерживают пространство имен «My».
@Tomas Pajonk, могу я предложить изменить переменную "FileName" в C# на "directory"?
Application.Current приводит к созданию домена приложения http://msdn.microsoft.com/en-us/library/system.appdomain_members.aspx
Также это должно дать вам местоположение сборки.
AppDomain.CurrentDomain.BaseDirectory
Кажется, я припоминаю, что было несколько способов узнать местоположение приложения. но этот работал у меня, по крайней мере, в прошлом (прошло некоторое время с тех пор, как я занимался программированием winforms: /)
Это должен быть Application.CurrentDomain.
Это не работало в .NET 4.0, но Application.UserAppDataPath действительно работало.
AppDomain.CurrentDomain.BaseDirectory
string apppath =
(new System.IO.FileInfo
(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).DirectoryName;
К сожалению, пространство имен Assembly и панель отображения кода несовместимы друг с другом. Ненавижу полосы прокрутки.
System.Windows.Forms.Application.StartupPath решит вашу проблему, думаю
Проверьте это:
Imports System.IO
Imports System.Management
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = Path.GetFullPath(Application.ExecutablePath)
Process.Start(TextBox1.Text)
End Sub
End Class
Оба примера написаны на VB.NET.
Путь отладки:
TextBox1.Text = My.Application.Info.DirectoryPath
Путь EXE:
TextBox2.Text = IO.Path.GetFullPath(Application.ExecutablePath)
Private Sub Main_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Dim args() As String = Environment.GetCommandLineArgs()
If args.Length > 0 Then
TextBox1.Text = Path.GetFullPath(Application.ExecutablePath)
Process.Start(TextBox1.Text)
End If
End Sub
Отвечает ли это на ваш вопрос? Лучший способ получить путь к папке приложения