VB.net: Проблемы с приложением.Путь к стартапу

#vb.net

Вопрос:

Я хочу получить доступ к пути к папке, из которой было запущено мое опубликованное приложение.

Все, что я могу найти, говорит об использовании приложения.StartupPath(), но это не работает.

Я написал простую программу для их отображения, опубликовал в одном отдельном файле, а затем запустил ее из каталога C:UsersjeremDownloadssplit .

Вот что у меня есть:

 Application.StartupPath = "C:UsersjeremAppDataLocalTemp.netgetlaunchdirjvi1ji54.zau"
Application.ExecutablePath = "C:UsersjeremAppDataLocalTemp.netgetlaunchdirjvi1ji54.zaugetlaunchdir.dll"
 

Похоже, что запуск файла .exe создает временную папку с загрузкой файлов в ней, которые затем запускаются. Хорошо, но он возвращает «неправильные» результаты для StartupPath, то есть не то, что я хочу.

Как мне это исправить?

Спасибо

** изображение настроек публикации добавлено по запросу Кая Ярда. изображение настроек публикации

Я не уверен, как вы получаете свое изображение, показывающее приложение.startuppath как C:temp — это похоже на снимок в режиме отладки, и моя проблема возникает только при запуске опубликованной программы.

Ответ №1:

Я подозреваю, что вы опубликовали его с помощью ClickOnce? Если вы опубликуете его в папке, он должен вести себя так, как вы ожидаете

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

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

И когда бегут:

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

Комментарии:

1. Спасибо, но я опубликовал в папке.

2. Добавьте шаги, которые вы предприняли, в свой вопрос в качестве скриншотов; как вы можете видеть из шагов, которые я включил в свой ответ, у меня не было проблем с публикацией папки..

Ответ №2:

Возможно, это то, что вы ищете:

 Private uriBuilder As New UriBuilder(Reflection.Assembly.GetExecutingAssembly().CodeBase)

    Public FullAssemblyPath As String = Uri.UnescapeDataString(uriBuilder.Path)
    Public ExeDirectory As String = IO.Path.GetDirectoryName(FullAssemblyPath)
 

Комментарии:

1. Я получаю тот же результат с этим — извините.

2. Жаль — похоже на «Сетевое ядро»; нацеливание на фреймворки «старого» стиля 4.x не приводит к таким извилистым путям, хотя щелчок один раз делает то, что следует из первого ответа. У Скотта Хансельмана есть запись в блоге на эту тему.