Получить путь к каталогу выполнения приложения Windows Forms

Я хочу получить путь к каталогу выполнения приложения Windows Forms. (То есть каталог, в котором находится исполняемый файл.)

Кто-нибудь знает о встроенном в .NET методе для этого?

Отвечает ли это на ваш вопрос? Лучший способ получить путь к папке приложения

Michael Freidgeim 01.10.2020 05:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
51
1
169 071
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

В VB.NET

Dim directory as String = My.Application.Info.DirectoryPath

В C#

string directory = AppDomain.CurrentDomain.BaseDirectory;

Местоположение C# также будет работать на VB или других языках, которые не поддерживают пространство имен «My».

Joel Coehoorn 17.11.2008 17:53

@Tomas Pajonk, могу я предложить изменить переменную "FileName" в C# на "directory"?

grenade 21.04.2010 13:32

Это могло помочь;

Path.GetDirectoryName(Application.ExecutablePath);

также вот Справка

Ответ принят как подходящий

Application.Current приводит к созданию домена приложения http://msdn.microsoft.com/en-us/library/system.appdomain_members.aspx

Также это должно дать вам местоположение сборки.

AppDomain.CurrentDomain.BaseDirectory

Кажется, я припоминаю, что было несколько способов узнать местоположение приложения. но этот работал у меня, по крайней мере, в прошлом (прошло некоторое время с тех пор, как я занимался программированием winforms: /)

Это должен быть Application.CurrentDomain.

Max 20.04.2011 19:08

Это не работало в .NET 4.0, но Application.UserAppDataPath действительно работало.

criticalfix 20.02.2014 18:22

AppDomain.CurrentDomain.BaseDirectory

A Khudairy 19.01.2016 11:17
string apppath = 
    (new System.IO.FileInfo
    (System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).DirectoryName;

К сожалению, пространство имен Assembly и панель отображения кода несовместимы друг с другом. Ненавижу полосы прокрутки.

MusiGenesis 17.11.2008 17:51

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

Другие вопросы по теме