提问者:小点点

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


我想在Visual Studio2008中调试一个程序。问题是,如果它没有得到参数,它就会退出。这是从主要的方法:

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

我不想在编译时将其注释掉,然后再返回。调试时如何用参数启动程序?它被设置为启动项目。


共3个答案

匿名用户

转到项目->;属性。然后单击debug选项卡,在名为命令行参数的文本框中填写参数。

匿名用户

我建议使用如下指令:

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

            Console.WriteLine(args[0]);
        }

祝你好运!

匿名用户

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

在应用程序中,在program.cs中执行以下开关:

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

对于static Main(string[]args)也是如此。

或者通过添加

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

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