【发布时间】:2012-08-13 08:57:27
【问题描述】:
我创建了一个方法,它根据传递的命令行参数给出不同的消息框输出结果。
目前我每次想要更改命令行参数字符串时都必须开始调试。
有没有办法在调试会话期间更改命令行参数?
编辑:我添加了一些示例代码
private static class MyParsers
{
public static List<string> args;
static MyParsers()
{
args = Environment.GetCommandLineArgs().ToList();
}
public static List<string> ParseOptions()
{
return ParseOptions(true);
}
public static List<string> ParseOptions(bool caseSensitive)
{
return caseSensitive
? args
: args.MyExtToLower();
}
public static bool OptionExists(string option)
{
return OptionExists(option, true);
}
public static bool OptionExists(string option, bool caseSensitive)
{
return caseSensitive
? ParseOptions().Contains(option)
: ParseOptions().MyExtToLower().Contains(option);
}
public static bool OptionExists(string option, string delimiter)
{
return OptionExists(option, false, delimiter);
}
public static bool OptionExists(string option, bool caseSensitive, string delimiter)
{
var args = ParseOptions(caseSensitive);
for (var i = 1; i < args.Count; i++)
{
if (args[i].Contains(option + delimiter)) return true;
}
return false;
}
}
然后我打电话给MessageBox.Show(MyParsers.OptionExists("/list","=").ToString());
如果命令行参数是 /list=blah,则返回 true。
如果命令行参数是 /listary,则返回 false。
您建议使用什么方法快速更改命令行参数?考虑到我正在使用的上述代码。
【问题讨论】:
-
在 VS2010 中,您可以通过在断点处将鼠标悬停在适当的变量上,然后单击要修改的属性值来更改任何您想要的值。
-
@eyossi 代码无关。我只需要在调试时更改传递给应用程序的命令行参数。
-
@veredesmarald 是的,我知道,但我没有将命令行参数存储在任何变量中,并且项目属性的命令行参数部分在调试时显示为灰色。
-
args 仅在程序运行后才存在于 Main 的堆栈中。如果不重新启动程序,您将无法返回以新参数重新运行 Main。相反,您可以使用 gui 或即时窗口来操作值(可能不直接存储在 args 中?),但您可以在程序开始时轻松地将它们移动到另一个本地变量或类变量中,并将其操作到您的心中内容
-
@IneedHelp 如果您没有将命令行参数存储在
main的参数中,那么您将如何使用它们呢?您实际上要完成什么,因为听起来您确实采用了错误的方法...如果您在问题中添加一些代码,我们几乎可以肯定会为您指明更好的方向。
标签: c# visual-studio-2010 debugging visual-studio-debugging