70

我想在Visual Studio 2008中調試一個程序。問題是,如果它沒有獲取參數,它就會退出。這是從主要方法:如何在調試時使用參數啓動程序?

if (args == null || args.Length != 2 || args[0].ToUpper().Trim() != "RM") 
{ 
    Console.WriteLine("RM must be executed by the RSM."); 
    Console.WriteLine("Press any key to exit program..."); 
    Console.Read(); 
    Environment.Exit(-1); 
} 

我不想評論它,然後回來編譯時。如何在調試時使用參數啓動程序?它被設置爲啓動項目。

+0

[Visual Studio C#傳遞命令行參數]可能的重複(http://stackoverflow.com/questions/6475887/passing-command-line-parameters-with-visual-studio-c-sharp) – horns 2015-05-04 13:49:45

+2

可能的重複[用Visual Studio中的命令行參數調試](http://stackoverflow.com/questions/298708/debugging-with-command-line-parameters-in-visual-studio) – 2015-10-15 09:24:15

回答

130

轉到Project-><Projectname> Properties。然後點擊Debug選項卡,並在名爲Command line arguments的文本框中填寫您的參數。

+0

參數可以(必須)是填入'命令行參數'空間分隔(就像使用命令行一樣)。我不確定是否有其他方法,但也許可以將其添加到答案中。 – d4Rk 2015-04-01 17:08:10

44

我會建議使用directives類似如下:

 static void Main(string[] args) 
     { 
#if DEBUG 
      args = new[] { "A" }; 
#endif 

      Console.WriteLine(args[0]); 
     } 

祝你好運!

4

我的建議是使用單元測試。

在應用程序中執行以下操作交換機Program.cs

#if DEBUG 
    public class Program 
#else 
    class Program 
#endif 

與同爲static Main(string[] args)

或者通過添加

[assembly: InternalsVisibleTo("TestAssembly")] 

AssemblyInfo.cs使用Friend Assemblies

然後創建一個單元測試項目和測試,看起來有點像這樣:

[TestClass] 
public class TestApplication 
{ 
    [TestMethod] 
    public void TestMyArgument() 
    { 
     using (var sw = new StringWriter()) 
     { 
      Console.SetOut(sw); // this makes any Console.Writes etc go to sw 

      Program.Main(new[] { "argument" }); 

      var result = sw.ToString(); 

      Assert.AreEqual("expected", result); 
     } 
    } 
} 

這樣你可以在一個自動化的方式,測試參數的多個輸入,無需編輯您的代碼或變化每次你想檢查一些不同的菜單設置。

相關問題