命令行参数在Visual Studio中工作,但不在Visual Basic中的WindowsForm项目的命令行中工作

时间:2013-03-21 10:45:20

标签: vb.net visual-studio-2010 command-line-arguments

我在visual basic中做了一个小程序。 它压缩文件并在ftp服务器上上传文件。该程序本身运作良好。

我的问题是,如果从命令行获取参数,我希望它有不同的行为。如果给出了参数,则不会显示任何表单,如果没有,则表示已加载。

从visual basic执行时,获取命令行参数的代码工作正常(项目属性 - > debug - >启动选项 - >命令行参数使用文件路径设置)

但是当我使用此行从cmd执行程序时: pogram.exe C:\ Users \ user \ file.txt

表单显示,未检测到任何参数。

这是派遣的主要内容 Module1.vb:

   Module Module1

Declare Function AttachConsole Lib "kernel32" (ByVal dwProcessId As Int32) As Boolean
Declare Function FreeConsole Lib "kernel32.dll" () As Boolean

Sub Main()
    Dim cmdArgs As String() = GetCommandLineArgs()
    Form2.loadData()
    If cmdArgs.Length = 0 Then ' NO ARGS MODE
        mainWindow.commandLineMode = False
        Application.Run(mainWindow)
    ElseIf cmdArgs.Length < 3 And Form2.TXTnumLicence.Text = "" Then ' BAD ARGS NUMBER
        Console.WriteLine("Aucun numero de licence definit. Usage : ./ODG_exchange ['filePath'] [numeroLicence [default = ./ODG_param.xml > numero_licence]]")
        Application.Exit()
    Else ' ARGS MODE
        mainWindow.commandLineMode = True
        mainWindow.commandeLine(cmdArgs)
    End If
End Sub

在visual studio中,我还将启动对象定义为Module1。也许它会有用。

2 个答案:

答案 0 :(得分:0)

总有一个命令行arg - 执行程序的文件名。 您需要将if语句更改为cmdArgs.length = 1

答案 1 :(得分:0)

7天后,我找到了解决方案......只需使用好的.exe,它就像在视觉工作室一样......

我感到非常愚蠢,谢谢你的帮助