c # программа работает из командной строки cmd, но не запускается отдельно? - PullRequest
1 голос
/ 05 августа 2009

Я бы опубликовал фрагмент, но я, честно говоря, понятия не имею, какая часть моего кода могла бы делать это. Программа огромна, я не хочу, чтобы вы все прошли через нее. Какие вещи могут быть причиной этого? Все отлично работает при вызове из командной строки: «readoo.exe». Но когда я нажимаю exe в его файле. , , "Возникла ошибка в приложении readoo.exe. Приложение будет закрыто."

это предназначено, чтобы в конечном счете быть запланированной задачей -> я волнуюсь, это будет работать?

Я никогда не отлаживал, все, что я когда-либо использовал, - это блокнот. Я учусь и чувствую, что это укрепляет мое понимание проекта.

он падает почти сразу. ярлыки отсутствуют, хотя пути к файлам относительные.

пробуя этот метод: ярлык -> свойства -> ярлык -> Пуск в. У меня нет опции «ярлык»

моя программа читает файлы журналов, анализирует и создает 4 новых файла на основе найденного содержимого

В отчете об ошибке Microsoft говорится, что файл не найден. Но как это может быть? файлы есть, хотя и относительные.

Ответы [ 7 ]

3 голосов
/ 05 августа 2009

Возьмите копию своего проекта, а затем начните взламывать биты из него. Когда он больше не падает, вы удалили бит, вызвавший проблему.

В какой момент происходит сбой при двойном щелчке по нему? Сразу или только тогда, когда вы совершаете определенное действие?

Вы также можете добавить к нему много логов, которые могли бы указать, где проблема тоже.

3 голосов
/ 05 августа 2009

Это, вероятно, ищет DLL, которую он не может найти или находит версию, отличную от того, что он хочет.

Вы можете попробовать Process Monitor или Process Explorer из sysinternals, чтобы увидеть, какие библиотеки он загружает, когда работает, и где он их находит.

2 голосов
/ 05 августа 2009

Попробуйте ввести System.Diagnostics.Debugger.Break() вызов как первое в Main(), и вас попросят подключить отладчик - это определенно должно показать вам, что отличается от двух вызовов.

1 голос
/ 05 августа 2009

Есть 2 вещи, которые могут быть:

  • Текущий каталог может отличаться при нажатии на программу или запуске из командной строки.
  • Параметры и путь могут отличаться, когда вы щелкаете по программе, в которой вы используете стандартную командную строку, открываете ли вы командную строку Visual Studio при запуске программы из командной строки.
1 голос
/ 05 августа 2009

Если ваше приложение использует какой-то файл, который должен находиться по тому же пути, что и исполняемый файл, это может произойти.

Вам придется изменить свойства исполняемого файла (или ярлыка для исполняемого файла) на «Start In» каталог, в котором находится ваш исполняемый файл. Для ярлыка щелкните правой кнопкой мыши ярлык -> свойства -> ярлык -> Начать ввод.

Полагаю, это может быть причиной.

РЕДАКТИРОВАТЬ: добавьте Console.ReadLine к концу вашего кода, чтобы сделать паузу для просмотра любого исключения. Это должно помочь, когда вы запускаете его с помощью проводника Windows.

1 голос
/ 05 августа 2009

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

  • Начальный каталог?
  • Счет исполнения?
  • аргументы командной строки?
0 голосов
/ 05 августа 2009

Поместите try / catch вокруг вашего кода и выведите сообщение об исключении на консоль в блоке catch. Это должно дать вам некоторые подсказки.

...