Member 10242311 Ответов: 2

Нежелательная ошибка при выполнении EXE-файла. Но он работал в приложении visual studio, какие здесь проблемы?


Привет Друзья,
У меня есть работа с некоторыми XML-операциями. Я разработал консольное приложение, я не сталкивался с какими-либо проблемами в части загрузки xml, работающей с visual studio.

но когда я запускаю EXE-файл с командной строкой, я столкнулся с проблемой загрузки XML.
Каково же здесь решение?

Что я уже пробовал:

public XmlDocument xmlDoc = new XmlDocument();
string xml="E:\before.xml";
xmlDoc.LoadXml(xml);

Nirav Prabtani

Что такое ошибка ?

Member 10242311

C:\Users\201875>E:\Files\AutoUpdater.exe E:\Updater\00560-ch0003_Release_141_Jan2019.docx E:\Updater\00560-ch0003_before.xml
Недопустимый XML-документ. Документ не имеет корневого элемента.


В этой второй строке находится ошибка. это происходит только при запуске с исполняемыми файлами в командной строке.

Richard MacCutchan

Пожалуйста, покажите содержимое вашего XML-файла. И для чего передается документ Word?

Patrice T

"Я столкнулся с проблемой загрузки XML."
Наша проблема заключается в том, что вы не сказали нам, в чем ваша проблема.

Member 10242311

C:\Users\201875>E:\Files\AutoUpdater.exe E:\Updater\00560-ch0003_Release_141_Jan2019.docx E:\Updater\00560-ch0003_before.xml
Недопустимый XML-документ. Документ не имеет корневого элемента.


В этой второй строке находится ошибка. это происходит только при запуске с исполняемыми файлами в командной строке.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

F-ES Sitecore

"\"- это специальный символ, чтобы использовать его в пути к файлу, сделайте что-то вроде

строка xml=@"E:\before.xml";

Учитывая, что он работает нормально в VS, маловероятно, что это проблема, хотя, как было сказано выше, сообщение об ошибке говорит вам, почему оно потерпело неудачу, если вы не опубликуете сообщение об ошибке, то никто не сможет вам помочь.

Member 10242311

C:\Users\201875>E:\Files\AutoUpdater.exe E:\Updater\00560-ch0003_Release_141_Jan2019.docx E:\Updater\00560-ch0003_before.xml
Недопустимый XML-документ. Документ не имеет корневого элемента.


В этой второй строке находится ошибка. это происходит только при запуске с исполняемыми файлами в командной строке.

F-ES Sitecore

Это проблема с xml, он должен иметь один корневой элемент, чтобы это было допустимо

<персона>
.... остальные узлы
</персона>

Это не так

<персона>
.... остальные узлы
</персона>
<персона>
.... остальные узлы
</персона>

Потому что на корневом уровне есть два элемента

Member 10242311

XML имеет один элемент только в качестве корневого, это прекрасно работает при работе с visual studio. но не работает запуск как исполняемый файл в командной строке

F-ES Sitecore

Вы, вероятно, не читаете файл, который, как вам кажется, вы читаете. Добавить какие-то выходы отладка приложения консоль где консоль.напишите полный путь к файлу, который Вы читаете.

Member 10242311

XML имеет только один корневой элемент.

Member 10242311

строка xml="E:\before.xml"; изменяется и получает значения из аргумента командной строки.

C:\Users\201875>E:\Files\AutoUpdater.exe "E:\Updater\00560-ch0003_Release_141_Jan2019.docx" E:\Updater\00560-ch0003_before.xml"

тем не менее я сталкиваюсь с проблемами

2 Ответов

Рейтинг:
1

OriginalGriff

Если он работает в dev, но терпит неудачу в производстве, то наиболее вероятная причина заключается просто в том, что ваши данные отличаются, а файлы, которые вы читаете в производстве, не являются допустимыми XML-файлами.

Начните с регистрации путей к файлам, которые ваш код использует в производстве, когда он терпит неудачу (блок try...catch помогает в этом), и включите фактические данные в журнал, если он не слишком велик. Таким образом, вы можете сделать анализ после сбоя, чтобы выяснить, с чем именно ваш пользователь пытается работать, и использовать это в dev, чтобы воспроизвести проблему и исправить ее.
Но без этого? Вы просто догадываетесь, в чем может быть проблема, и не можете ее решить!


Member 10242311

Привет OriginalGriff, я использовал только допустимый XML-файл. как в dev, так и в production я использовал один и тот же файл.

но это прекрасно работает в dev, но выбрасывает исключение в production (выполняемый файл).

OriginalGriff

И как вы в этом убедились?
Вы добавили ведение журнала и посмотрели, что именно Вы читаете, откуда?

Рейтинг:
0

lmoelleb

Как и предполагалось, скорее всего, просто разные данные. Например, попытка загрузить документ word в формате XML. И как было предложено, вы можете вывести точный путь и т. д., чтобы попытаться выяснить, что происходит.

В качестве альтернативы, если вы можете воспроизвести ошибку в своей системе разработки, попробуйте добавить следующий вызов метода в начале вашей программы, а затем скомпилировать ее и снова запустить из командной строки:
Отладчик.Метод Запуска (Система.Диагностика) | Microsoft Docs[^]

Когда он будет запущен, вы увидите то, что выглядит как сообщение об ошибке. Но это не так - это сообщение, которое позволяет отлаживать приложение без необходимости запускать его из Visual Studio.

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