5

Google で検索したところ、多くの例が見つかりましたが、Windows フォーム アプリケーションを実行してコマンド ラインから引数を取ることができないようです。コンソール バージョンがなくても、アプリケーションをスケジュールするオプションが本当に必要です。しかし、cmd ライン引数を設定するたびに、CLR20r3 エラーが発生します。

static void Main(string[] args)
{
   if(args != null && args.Length > 0)
   {
      /*
      * arg[1] = Backup Location *require
      * arg[2] = Log File - Enable if present *optional
      * arg[3] = Debug Messages - Enabled if present *optional
      * arg[4] = Backup Type - Type to perform *required
      */

   }
   else
   {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.SetUnhandledExceptionMode(UnhandledExceptionMode.Automatic);
     Application.Run(new Form1());
   }
}

引数を渡そうとするたびにエラーが発生します

myapp.exe "C:\Backup\" => CLR20r3

4

1 に答える 1

6

これは、コマンド ライン引数に応じてフォーム アプリまたはフォームレス アプリとして実行するプロジェクトで使用するスタートアップ コードの例です。

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace BuildFile
{
  static class Program
  {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
      int ABCFile = -1;
      string[] args = Environment.GetCommandLineArgs();
      if ((args.Length > 1) && (args[1].StartsWith("/n")))
      {
            ... unrelated details omiited
            ABCFile = 1;
        }
      }

      if (ABCFile > 0)
      {
        var me = new MainForm(); // instantiate the form
        me.NoGui(ABCFile); // call the alternate entry point
        Environment.Exit(0);
      }
      else
      {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
      }
    }
  }
}

私の代替エントリポイントでは、ウィンドウメッセージの処理などを含むランタイム環境 Application.Run() メソッドによって提供されるイベントなどに依存するものがないため、これは機能することに注意してください。

于 2013-11-13T22:24:22.883 に答える