Развертывание проблем приложения c # - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть приложение с одной папкой, которое я добавил, щелкнув правой кнопкой мыши по проекту и выбрав «Добавить папку». Внутри этой папки у меня есть xml-файлы, которые настроены для создания действия: содержимое, копирование в выходной каталог: копирование, если новее (я пробовал установить встроенный ресурс), а также несколько текстовых файлов и так далее.

В моем каталоге вывода bin / debug у меня есть exe, папка с xml, отдельные файлы .txt и так далее. Моя проблема в том, что если я отправляю exe своему другу, чтобы попытаться, он всегда получает исключение.

Скажем, он ставит exe-файл на рабочий стол, моя программа в какой-то момент считывает имена файлов xml в папке. Для этого используется следующий код

String[] filePaths = Directory.GetFiles(@"DataSources\");

Я предполагаю, что из-за этого, когда exe запускается с рабочего стола, он ожидает, что папка .xml файлов находится в том же месте? У меня такой же тип исключения, когда я пытаюсь читать файлы .txt. Что я здесь не так делаю?

Спасибо за ваше время

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

При чтении из файлов с использованием относительных путей вы получаете тот, который относится к текущему каталогу приложений. tip: В C # вы можете видеть, какой каталог использует Environment.CurrentDirectory.

Итак, если вы создаете ярлык на рабочем столе, вам нужно убедиться, что вы щелкнули правой кнопкой мыши по ярлыку и в его папке «Start in» указали каталог вашего приложения. Таким образом, его текущий каталог будет установлен, когда его начальный и относительный пути будут относительно этого пути, а не пути ярлыка.

Если вы на самом деле переместили exe-файл на рабочий стол, вам также нужно переместить все необходимые ему ресурсы, поэтому, если ему нужна папка с именем «datasources», вам также придется переместить эту папку или установить текущий каталог, Вы запускаете приложение.

1 голос
/ 20 декабря 2010

Вы пробовали что-то вроде: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx или http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx?

Итак Directory.GetFiles (environment.currentdirectory + @ "\ DataSources \");

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