2010-07-21 109 views
1

我有一個正常編譯的C#項目。當我通過Visual Studio的IDE運行該項目時,它運行良好並且乾淨地結束。但是,當我導航到項目目錄並嘗試通過雙擊「exe」文件或通過運行窗口引用它時運行該程序時,它會出錯。C#命令行項目 - 通過.exe運行時出錯

我已經縮小的問題降到

Console.WriteLine("output ->" + any_variable); 

出於某種原因,如果我使用Console.WriteLine命令的應用程序,如果如前面所述RAN將錯誤打印的任何變量。

如果我把這行寫出來,Visual Studio創建的可執行文件將運行得很好,如果我雙擊它。我真的很困惑。我的目標是將此命令行項目創建爲計劃任務。

+0

如果運行命令提示符下的應用程序,它應該打印如果堆棧跟蹤在調試模式下運行,則退出堆棧跟蹤。應該給你更多的想法,如果不是,請發佈堆棧跟蹤。 (並從問題中刪除asp.net標記) – Jaymz 2010-07-21 21:06:00

+0

請檢查我的更新並向我們提供更多代碼或異常詳細信息。 – 2010-07-21 21:34:07

回答

4

我會認爲錯誤沒有任何關係WriteLine甚至Console。從IDE運行和雙擊運行之間的常見區別可能是權限(也就是說,您可以以管理員身份啓動IDE,或者您正在寫入/讀取的位置不同,並且具有不同的ACL附加到它),這裏似乎並不是這種情況。

要捕捉到您的實際錯誤,請編譯爲調試模式。啓動您的應用程序(可能帶有某種消息框)。啓動IDE並選擇「調試並附加」進行處理(如果用消息框暫停應用程序,則可以隨時使用)。選擇你的過程。運行,直到收到錯誤。即使應用程序是通過雙擊EXE運行的,您現在仍應該在IDE中收到錯誤。您可以像往常一樣查看堆棧並進行調試。

我的猜測是?您正在打印的變量會引起錯誤。

替代方案:圍繞違規聲明的簡單嘗試/捕獲以及帶有Exception.Message的消息框應該會給你更多的英特爾。

+0

謝謝,原來這是我參考過的一個項目的問題。捕捉到錯誤清楚的異常後。我不確定爲什麼被引用的項目沒有被應用到.exe文件,而在IDE中正常工作,但我會繼續搜索。如果有人可能知道答案,它也會有很大幫助。 – Ryan 2010-07-22 16:38:22

+0

@Ryan,新的信息對於一個新問題聽起來很棒。如果你認爲這個或那個問題是你的(原始)問題的答案,一定要將它標記爲(左邊的綠色複選標記),你甚至可以在這樣做時獲得積分。歡迎來到SO!並看看這裏的一些提示:http://stackoverflow.com/faq – Abel 2010-07-23 07:31:01

1

對不起,我錯了......所以編輯

將你的代碼嘗試{}趕上{}結構:

try 
{ 
//your code goes here 
} 
catch (Exception ex) 
{ 
    Console.WriteLine("An error occured: {0}", ex.Message); 
    if (ex.InnerException != null) 
     Console.WriteLine("Inner Exception: {0}", ex.InnerException.Message); 
    Console.WriteLine("Stack Trace: {0}", ex.StackTrace); 
} 

這時,只需要找出均是你的問題,在哪一行代碼等

+0

雖然我同意你的觀察,但爲什麼會在IDE和外部運行之間產生差異呢?它實際上應該給你一個編譯時錯誤。 – Abel 2010-07-21 21:08:31

+1

實際上,字符串「+」運算符的第二個參數可以是任何類型。字符串會自動調用'ToString()'。 – 2010-07-21 21:10:08

+0

啊,現在我覺得很蠢,你說得對!我應該停止混合語言:) – Abel 2010-07-21 21:20:35