2009-01-13 48 views
1

我有一個命令行實用程序,它從我的網站獲取相當多的下載內容。我試圖顯示用戶使用/時的用法。或/幫助參數。我有一個名爲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旗艦版64位運行VS2008。我只檢查項目屬性並將其設置爲「Windows應用程序」。該實用程序是32位。

我要與創建該是一個真正的控制檯程序解決一個單獨的項目,因爲你們有些人建議進行試驗。

+0

後調用ShowUsage(代碼),所以我們可以看到你是如何檢查的「/?」參數。 – 2009-01-13 05:16:45

+0

爲什麼在WriteLine中使用Environment.NewLine?你想要兩條線?只是看起來很有趣。 – 2009-01-13 05:16:45

+0

你是如何得到參數的?你打電話給exe如何? – 2009-01-13 05:17:45

回答

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 

"); 
0

您是否將Console.Out重定向到其他位置?

嘗試在ShowUsage方法中拋出System.Diagnostics.Debugger.Launch(),以便在運行時查看它是否被擊中。

你能重現該問題有一個簡單的exe文件,只接受那些幫助參數?