Je veux déboguer un programme dans Visual Studio 2008. Le problème est qu'il se ferme s'il ne reçoit pas d'arguments. Ceci est de la méthode principale:
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);
}
Je ne veux pas commenter et puis revenir dans la compilation. Comment puis-je démarrer le programme avec des arguments lors du débogage? Il est défini comme projet de démarrage.
Allez à Project-><Projectname> Properties
. Cliquez ensuite sur l'onglet Debug
et entrez vos arguments dans la zone de texte appelée Command line arguments
.
Je suggérerais d'utiliser les directives comme suit:
static void Main(string[] args)
{
#if DEBUG
args = new[] { "A" };
#endif
Console.WriteLine(args[0]);
}
Bonne chance!
Ma suggestion serait d'utiliser des tests unitaires.
Dans votre application, effectuez les changements suivants dans Program.cs
:
#if DEBUG
public class Program
#else
class Program
#endif
et la même chose pour static Main(string[] args)
.
Ou bien utilisez Friend Assemblies en ajoutant
[Assembly: InternalsVisibleTo("TestAssembly")]
à votre AssemblyInfo.cs
.
Ensuite, créez un projet de test unitaire et un test qui ressemble un peu à ceci:
[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);
}
}
}
De cette façon, vous pouvez, de manière automatisée, tester plusieurs entrées d'arguments sans avoir à modifier votre code ni à modifier un paramètre de menu à chaque fois que vous souhaitez vérifier quelque chose de différent.
Pour Code Visual Studio :
launch.json
"args": ["un argument", "un autre"],