我想在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。
答案 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”:[“一些参数”,“另一个”,]
答案 4 :(得分:0)