我有一个命令行实用程序可以从我的网站获得相当多的下载。我试图在用户使用/时显示用法?或/帮助参数。我有一个名为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位。
我将尝试在解决方案中创建一个单独的项目,这是一个真正的控制台程序,正如你们有些人所建议的那样。
答案 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重现问题,只接受这些帮助参数?