我想在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);
}
我不想在编译时将其注释掉,然后再返回。调试时如何用参数启动程序?它被设置为启动项目。
转到项目->
。然后单击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);
}
}
}
这样,您就可以以自动化的方式测试参数的多个输入,而不必在每次要检查不同的内容时编辑代码或更改菜单设置。