私は、実行時に大量のデータが渡されるコンソール アプリケーションを C# で作成しています。そのうちの 3 つは、ユーザー名、パスワードなどの短い文字列です。ただし、そのうちの 1 つはかなり長い XML ドキュメントです。
コマンドライン引数として文字列を渡す場合、文字列の長さはどれくらいですか?
実行時に C# コンソール アプリにデータを渡すためのより良い代替手段はありますか?
私は、実行時に大量のデータが渡されるコンソール アプリケーションを C# で作成しています。そのうちの 3 つは、ユーザー名、パスワードなどの短い文字列です。ただし、そのうちの 1 つはかなり長い XML ドキュメントです。
コマンドライン引数として文字列を渡す場合、文字列の長さはどれくらいですか?
実行時に C# コンソール アプリにデータを渡すためのより良い代替手段はありますか?
制限については、次の場所にあります。
CreateProcess 関数のコマンド ラインの最大長は 32767 文字です。この制限は UNICODE_STRING 構造によるものです。
CreateProcess は、プロセスを作成するためのコア関数であるため、Win32 と直接やり取りしている場合は、心配する必要がある唯一の制限です。ただし、他の方法で CreateProcess に到達している場合は、通過するパスに他の制限がある可能性があります。
CMD.EXE コマンド プロセッサを使用している場合は、CMD.EXE によって課される 8192 文字のコマンド ラインの長さ制限も適用されます。
ShellExecute/Ex 関数を使用している場合は、ShellExecute/Ex 関数によって課される INTERNET_MAX_URL_LENGTH (約 2048) コマンド ラインの長さ制限の対象になります。(Windows 95 で実行している場合、制限は MAX_PATH のみです。)
より良い方法または代替手段-すべてのパラメーターを含むファイル、おそらくXMLを使用し、このファイルをコマンドライン引数として渡します。