121

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

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

4

6 に答える 6

191

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

于 2011-01-25T08:02:21.853 に答える
58

次のようなディレクティブを使用することをお勧めします。

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

            Console.WriteLine(args[0]);
        }

幸運を!

于 2011-01-25T08:10:27.300 に答える
5

私の提案は、ユニットテストを使用することです。

アプリケーションで、次のスイッチを実行します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);
        }
    }
}

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

于 2013-12-19T16:04:02.487 に答える
3

このページにアクセスしたのは、コマンドラインパラメーターに機密情報があり、それらをコードリポジトリに保存したくないためです。私はシステム環境変数を使用して値を保持していました。値は、目的ごとに必要に応じて各ビルドまたは開発マシンで設定できます。環境変数の拡張は、シェルバッチプロセスではうまく機能しますが、VisualStudioでは機能しません。

Visual Studioの開始オプション:

VisualStudioの起動オプション

ただし、Visual Studioは変数値を返しませんが、変数の名前を返します。

問題の例:

VisualStudioでのエラーの例

ここでSOでいくつか試した後の私の最終的な解決策は、引数プロセッサで環境変数のクイックルックアップを作成することでした。着信変数値に%のチェックを追加し、見つかった場合は、環境変数を検索して値を置き換えます。これは、VisualStudioと私のビルド環境で機能します。

foreach (string thisParameter in args)
            {
                if (thisParameter.Contains("="))
                {
                    string parameter = thisParameter.Substring(0, thisParameter.IndexOf("="));
                    string value = thisParameter.Substring(thisParameter.IndexOf("=") + 1);

                    if (value.Contains("%"))
                    {   //Workaround for VS not expanding variables in debug
                        value = Environment.GetEnvironmentVariable(value.Replace("%", ""));
                    }

これにより、サンプルバッチファイルとVisualStudioでのデバッグで同じ構文を使用できます。アカウント情報やURLはGITに保存されていません。

バッチでの使用例

バッチファイルの例

于 2020-01-18T13:55:24.710 に答える
2

Visual Studio Codeの場合:

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

"args":["いくつかの引数"、 "別の引数"]、

于 2019-02-10T10:57:07.673 に答える
1

.NET Coreコンソールアプリの場合、これは2つの方法で実行できます。launchsettings.jsonまたはプロパティメニューからです。

Launchsettings.json

ここに画像の説明を入力してください

または、左側のプロジェクト>プロパティ>デバッグタブを右クリックします

「アプリケーション引数」を参照してください。

  • これは""(スペース)で区切られ、コンマは必要ありません。入力を開始するだけです。各スペース""は、新しい入力パラメーターを表します。
  • (ここで行った変更はすべて、launchsettings.jsonファイルに反映されます...)

ここに画像の説明を入力してください

于 2020-10-14T05:01:53.527 に答える