0

我创建了一个使用VB.Net的Windows应用程序,该应用程序使用Sub Main来确定应用程序是应该运行特定进程还是只是以用户交互的形式打开。除了当我尝试通过Windows任务计划程序安排我的应用程序时,一切都很好。我一直得到0xFF的结果代码。然后我尝试通过命令提示符直接运行我的应用程序。当这样做时,我收到了一个System.ArgumentNullException错误。所提供的其他信息非常缺乏,所以我正在努力确定我的问题究竟在哪里。我可以使用System.Diagnostics.Process命令从表单运行我的应用程序,并以这种方式将参数传递给它。我也可以通过在应用程序属性的Debug选项卡中输入命令行参数来成功运行它。以下是我的代码的一般概述。我使用命令行解析器库来解密参数。任何帮助或指导将不胜感激当通过Cmd传递参数时出现NullArgumentException

Imports CommandLine 
Imports CommandLine.Text 

Module Startup 

    Public Sub Main() 
     Dim Args() As String = Environment.GetCommandLineArgs 
     Dim Options As New Arguments 
     Dim Parser As New Parser 

     If Parser.ParseArguments(Args, Options) Then 
      ' Run application 
     Else 
      ' Open windows form 
     End If 
    End Sub 

    Public Class Arguments 
     <[Option]("p", "process", Required:=True)> Public Property ProcessOption As String 
     <[Option]("r", "run", Required:=True)> Public Property RunOption As String 
     <[Option]("d", "date", Required:=False, DefaultValue:=Nothing)> Public Property DateOption As Date 
     <[Option]("u", "user", Required:=False, DefaultValue:="")> Public Property UserOption As String 
    End Class 

End Module 
+0

添加一些错误处理并将异常('ex.ToString()')记录到应用程序事件日志中。这可以让你找出究竟是什么导致了问题(或者至少它发生在哪里)。错误很可能在解析器库(我想这是:https://commandline.codeplex.com/)。图书馆看起来似乎过度杀伤IMO,但是meh。没有堆栈跟踪我不知道! –

+0

您应该澄清标题。标题中的'Null Exception'通常表示一个NullReferenceException,而不是一个ArgumentNullException – Plutonix

+0

@Plutonix谢谢。标题已更新。 –

回答

0

我能够用我的调试测试机器上运行,发现这个地方我的问题。它实际上与通过命令提示符传递的参数无关。这是另一个我打的子电话。我将不得不使用它,如果我不能弄明白,我会打开另一个问题。感谢您的帮助。