引用会破坏控制台应用程序在其他计算机上的运行

时间:2012-03-28 17:52:35

标签: c# reference console-application

我做了一个控制台应用程序,它将数据插入到MySql后端,并从硬盘中读取序列号

要做到这一点,我必须将References添加到MySql.Data和System.Managment。

我运行它的方法是从visual studio复制Debug目录(我认为这是问题)并在另一台机器上运行.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 个答案:

答案 0 :(得分:4)

将代码放入以检查客户端PC上可能发生的错误情况的有效性,但不检查开发错误情况的有效性。您可以通过抛出异常或以更好的方式优雅地处理错误来处理错误。

以下是检查错误情况的代码

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);