webdevqa.jp.net

デバッグ時に引数を指定してプログラムを起動するにはどうすればよいですか?

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

私はそれをコメントアウトしたくはありませんし、それからコンパイル時に元に戻りたいです。デバッグ時に引数を指定してプログラムを起動するにはどうすればよいですか?これは、スタートアッププロジェクトとして設定されます。

88
Kasper Hansen

Project-><Projectname> Propertiesに移動します。次に、[Debug]タブをクリックし、Command line argumentsというテキストボックスに引数を入力します。

151

directives を次のように使用することをお勧めします。

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

            Console.WriteLine(args[0]);
        }

幸運を!

49
Homam

私の提案は、単体テストを使用することです。

アプリケーションで_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);
        }
    }
}
_

このようにして、異なる方法をチェックするたびにコードを編集したり、メニュー設定を変更したりすることなく、自動化された方法で複数の引数入力をテストできます。

5
dav_i

Visual Studio Codeの場合:

  • 開いた launch.jsonファイル
  • 構成に引数を追加します。

「引数」:[「引数」、「別の引数」]、

0
Alamakanambra