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
添加一些错误处理并将异常('ex.ToString()')记录到应用程序事件日志中。这可以让你找出究竟是什么导致了问题(或者至少它发生在哪里)。错误很可能在解析器库(我想这是:https://commandline.codeplex.com/)。图书馆看起来似乎过度杀伤IMO,但是meh。没有堆栈跟踪我不知道! –
您应该澄清标题。标题中的'Null Exception'通常表示一个NullReferenceException,而不是一个ArgumentNullException – Plutonix
@Plutonix谢谢。标题已更新。 –