调试时如何启动带参数的程序?

时间:2011-01-25 08:00:58

标签: c# visual-studio visual-studio-2008 visual-studio-debugging

我想在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);
}

我不想评论它,然后在编译时再回来。如何在调试时使用参数启动程序?它被设置为StartUp Project。

5 个答案:

答案 0 :(得分:148)

转到Project-><Projectname> Properties。然后点击Debug标签,在名为Command line arguments的文本框中填写您的参数。

答案 1 :(得分:49)

我建议使用directives,如下所示:

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

            Console.WriteLine(args[0]);
        }
祝你好运!

答案 2 :(得分:5)

我的建议是使用单元测试。

在您的应用程序中,在Program.cs中执行以下切换:

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

static Main(string[] args)相同。

或者通过添加

来使用Friend Assemblies
[assembly: InternalsVisibleTo("TestAssembly")]

AssemblyInfo.cs

然后创建一个单元测试项目和一个看起来有点像这样的测试:

[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);
        }
    }
}

通过这种方式,您可以以自动方式测试多个参数输入,而无需在每次要检查不同内容时编辑代码或更改菜单设置。

答案 3 :(得分:0)

对于 Visual Studio代码

  • 打开launch.json文件
  • 将args添加到您的配置中:
  

“ args”:[“一些参数”,“另一个”,]

答案 4 :(得分:0)

对于.NET Core控制台应用程序,您可以通过以下两种方式执行此操作-从launchsettings.json或属性菜单中。

Launchsettings.json

enter image description here

或右键单击左侧的项目>属性>调试选项卡

请参阅“应用程序参数:”

  • 这是用“(”)分隔的,不需要任何逗号。刚开始输入。每个空格“”都代表一个新的输入参数。
  • (您在此处所做的任何更改都会反映在launchsettings.json文件中...)

enter image description here