Ссылки отключают консольное приложение от запуска на других машинах - PullRequest
1 голос
/ 28 марта 2012

Я создал консольное приложение, которое вставляет данные в бэкэнд MySql и считывает серийный номер с жесткого диска

Для этого мне пришлось добавить References в MySql.Data и в System.Managment.

Я запускаю его, копируя каталог Debug из Visual Studio (я думаю, что это проблема) и запуская файл .exe на другом компьютере. Когда я запускаю приложение на другом компьютере, ошибка трассировки стека:

PhDD >C:\Users\User\File\Indexer\WMI\Debug
Your key: 634685018347902535133
Exception getting SMART Object: reference not set to an instance of an object.
Exception in main thread:    at System.ThrowHelper.ThrowArgumentOutOfRangeExcept
ion()
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at WMITest.Menu.Run() in C:\Users\fps700\Music\WMITest\Menu.cs:line 49
Updated HDD Stats at28/03/2012 18:46:57

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

Может кто-нибудь подсказать мне, как решить эту проблему? Ура за чтение.

P.S. я попытался добавить ссылочные пути (щелкнув правой кнопкой мыши по проекту, выбрав параметры, а затем выбрав ссылочные пути и добавив два файла DLL)

Строка 49 bool conversion = int.TryParse(smartData[1].ToString(), out temp);

После добавления поддельного значения int просто для того, чтобы убедиться, что преобразование не является ошибкой, возникает новая ошибка трассировки стека:

PhDD >C:\Users\bborisov\Dropbox\Indexer\WMI\Debug
Your key: 634685018347902535133
Exception getting SMART Object reference not set to an instance of an object.
Exception in main thread:    at System.ThrowHelper.ThrowArgumentOutOfRangeExcept
ion()
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at WMITest.Menu.Run() in C:\Users\fps700\Music\WMITest\Menu.cs:line 53
Updated HDD Stats at28/03/2012 19:00:24

строка 53:

DBHandler.insertData(smartData[0].Trim(),
                            3, smartData[2], file.getKey());

1 Ответ

4 голосов
/ 28 марта 2012

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

Вот код, который проверяет наличие ошибок

if (smartData == null)
   throw new Exception("Smart data is null; aborting");

if (smartData.Any() == false)
   throw new Exception("Smart data instance is valid but has no elements; aborting");

bool conversion = int.TryParse(smartData[1].ToString(), out temp);
...