web-dev-qa-db-fra.com

Comment démarrer un programme avec des arguments lors du débogage?

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.

81
Kasper Hansen

Allez à Project-><Projectname> Properties. Cliquez ensuite sur l'onglet Debug et entrez vos arguments dans la zone de texte appelée Command line arguments.

145
Øyvind Bråthen

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!

48
Homam

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.

4
dav_i

Pour Code Visual Studio :

  • Ouvrir le fichier launch.json
  • Ajoutez des arguments à votre configuration:

"args": ["un argument", "un autre"],

0
Alamakanambra