我如何在调试时带参数启动程序?
我如何在调试时带参数启动程序?
我想在Visual Studio 2008中调试一个程序。问题是,如果没有获取到参数,它会退出。以下是主方法的代码:
if (args == null || args.Length != 2 || args[0].ToUpper().Trim() != "RM") { Console.WriteLine("RM必须由RSM执行。"); Console.WriteLine("按任意键退出程序..."); Console.Read(); Environment.Exit(-1); }
我不想在编译时将其注释掉,然后再取消注释。在调试时如何启动带有参数的程序?它已设置为启动项目。
我来到这个页面是因为我的命令行参数中有敏感信息,不希望它们存储在代码库中。我使用系统环境变量来保存这些值,可以根据需要在每个构建或开发机器上进行设置。环境变量扩展在Shell批处理中非常有效,但在Visual Studio中不起作用。
然而,Visual Studio不会返回变量的值,而是返回变量的名称。
在尝试了几种在S.O.上找到的解决方法后,我最终的解决方案是在我的参数处理器中编写一个快速查找环境变量的方法。我添加了一个检查来查找传入变量值中的%,如果找到了%,则查找环境变量并替换值。这在Visual Studio和我的构建环境中都有效。
这样我就可以在我的示例批处理文件和使用Visual Studio进行调试时使用相同的语法。没有账户信息或URL保存在GIT中。
以下是在参数处理器中的示例代码:
foreach (string thisParameter in args) { if (thisParameter.Contains("=")) { string parameter = thisParameter.Substring(0, thisParameter.IndexOf("=")); string value = thisParameter.Substring(thisParameter.IndexOf("=") + 1); if (value.Contains("%")) { //Workaround for VS not expanding variables in debug value = Environment.GetEnvironmentVariable(value.Replace("%", "")); } } }
这使我能够在批处理文件和使用Visual Studio进行调试时使用相同的语法。没有账户信息或URL保存在GIT中。
以下是在批处理文件中的使用示例:

问题出现的原因是在调试程序时如何使用参数启动程序。解决方法如下:
1. 打开项目的属性窗口,路径为Project-><Projectname> Properties
。
2. 点击Debug
选项卡。
3. 如果使用的是Visual Studio 2022版本:
- 点击Open debug launch profiles UI
按钮。
- 在标有Command line arguments
的文本框中填入参数。
4. 如果使用的是Visual Studio 2022之前的版本:
- 在Debug选项卡中找到Command Line Arguments
文本框。
- 在文本框中填入参数。
5. 参数需要以空格分隔,就像在命令行中使用参数一样。
6. 如果参数中包含空格,请使用引号将其括起来。
7. 如果使用类似命令行解析器的库,是否可以使用命名参数?例如,如何传递类似-url https://google.com -p pass -u user
的参数?
这些方法可以帮助你在调试程序时使用参数启动程序。希望对你有帮助!
在调试时如何使用参数启动程序?
问题的原因:当我们在调试一个程序时,有时我们需要在启动程序时传递一些参数。然而,直接在项目属性中设置命令行参数可能不是一个直接且容易的方法,特别是对于大型应用程序。因此,我们需要找到一种更简洁、更方便的方式来在调试时传递参数。
解决方法:我们可以使用指令来解决这个问题。下面是一个示例代码:
static void Main(string[] args)
{
#if DEBUG
args = new[] { "A" };
#endif
Console.WriteLine(args[0]);
}
在这个示例代码中,我们首先检查是否处于调试模式下(通过#DEBUG指令)。如果是调试模式,我们将参数args设置为一个包含一个参数"A"的新数组。这样,当我们在调试时运行程序,args[0]就会输出"A"。这样,我们就可以在调试时方便地传递参数。
通过使用指令,我们可以在调试时方便地传递参数,而不需要每次都修改项目属性中的命令行参数。这种方法更加简洁、方便,特别适用于需要频繁调试不同参数的情况。