GetCommandLineArgs 在 VB.NET 上触发“索引超出数组范围”异常

问题描述 投票:0回答:1

我有一个用 vb.net 编写的程序,当我从调试器运行时运行良好,但当我运行 .exe 文件时,我收到“索引超出数组范围”异常。经典的“之前运行良好”的情况。

我在代码中放置了一堆日志,试图捕获异常在哪里被触发,重建并运行 .exe,我发现它在运行此命令时失败:

myIntVariable= CInt(Environment.GetCommandLineArgs()(1))
lblStationNum.Text = "Station " + myIntVariable.ToString()

我的属性选项中的命令行参数设置为1,但似乎当我运行可执行文件时它默认为0。(我的变量用于将值分配给“estacion”)

我在微软开发者社区的不同帖子中看到这个问题在很多更新之前就被修复了,所以我很困惑,显示这个问题的站运行的是VS2019 v16.11.23。运行 .NET Framework 4.6.1

欢迎任何反馈,如果您需要更多详细信息,请告诉我,因为这件事发生在周末回来后,所以几乎没有。

我尝试对值进行硬编码,这会导致冲突,因为我需要同时运行应用程序的 6 个单独实例。

vb.net visual-studio-2019 command-line-arguments indexoutofboundsexception
1个回答
0
投票

在 .Net 中,数组索引以

0
开头。这意味着
(1)
第二个 参数,而不是第一个。由于参数框中只有单个
1
值,因此它超出了参数数组的末尾,从而导致错误。你想要这个:

myIntVariable= CInt(Environment.GetCommandLineArgs()(0))

此外,您应该至少更新到 4.6.2,因为 4.6.1 不再接收安全补丁。 4.8 系列会更好,甚至可能不需要任何代码更改。

© www.soinside.com 2019 - 2024. All rights reserved.