显示命令行实用程序的帮助

时间:2009-01-13 05:11:29

标签: c# visual-studio-2008 .net-2.0

我有一个命令行实用程序可以从我的网站获得相当多的下载。我试图在用户使用/时显示用法?或/帮助参数。我有一个名为ShowUsage()的函数,它在可用参数上具有格式良好的文本。

当我在项目属性中使用命令行参数时,我看到ShowUsage()从Visual Studio 2008中调用得很好。但是,从命令行运行时,exe不会显示帮助文本。这是ShowUsage()的缩短版本:

private static void ShowUsage()
{
    Console.WriteLine(Environment.NewLine);
    Console.WriteLine("Text File Splitter v1.4.1  released: December 14, 2008");
    Console.WriteLine("Copyright (C) 2007-2008 Hector Sosa, Jr");
    Console.WriteLine("http://www.systemwidgets.com");
    Console.WriteLine("");
}

我在谷歌的搜索中尝试了很多不同的东西,但都没有。我知道这必须是简单/容易的事情,但对于我的生活,我无法想象这一点。

修改

调用ShowUsage()的代码:

if (!Equals(cmdargs["help"], null) || !Equals(cmdargs["?"], null))
{
    ShowUsage();
}

我有一个类将参数解析为cmdargs数组。我确认参数在数组中。 ShowUsage()内部的东西阻止显示文本。

我将尝试调试技巧,看看我发现了什么。

我没有在任何地方使用Console.Out。

d03boy - 只是个人喜好。它使文字在屏幕上不那么混乱,至少对我而言。

编辑#2

好的,更多信息......我在Vista Ultimate 64位运行VS2008。我只是检查项目属性,它被设置为“Windows应用程序”。该实用程序是32位。

我将尝试在解决方案中创建一个单独的项目,这是一个真正的控制台程序,正如你们有些人所建议的那样。

2 个答案:

答案 0 :(得分:2)

你能定义“不工作”吗?什么都不做?抛出异常?我希望问题出现在Main(...)方法中 - 即ShowUsage()未被调用。另一个常见问题是没有在正确的配置中重建它,因此bin/release(或其他)不会更新。

您是否已将应用程序构建为控制台exe?即项目属性中的“输出类型”=“控制台应用程序”?它需要是为了访问控制台......

有关信息,我发现执行控制台帮助屏幕(一旦超出少数几行)的最简单方法是将.txt文件嵌入到exe中;然后我只写出文本文件(如果我想替换tokes,可能仍然使用string.Format。)

或者,还有替代字符串格式:

    Console.WriteLine(@"
Text File Splitter v1.4.1  released: December 14, 2008
Copyright (C) 2007-2008 Hector Sosa, Jr
http://www.systemwidgets.com

");

答案 1 :(得分:0)

您是否将Console.Out重定向到其他地方?

尝试在ShowUsage方法中抛出System.Diagnostics.Debugger.Launch(),以便查看它是否在运行时被点击。

您是否可以使用简单的exe重现问题,只接受这些帮助参数?