.NETランタイムの引数分割

.NETランタイムがWindowsでコマンドラインから引数配列を得る仕組み。apphostやdotnet.exeで起動した通常の構成では、ホスト自身がMSVCのCランタイムで作られたwmainのプログラムなので分割はCランタイム起動コードが行い、ホストは自分のオプションとアプリのパスを除いた残りを、アプリのパスと一緒にランタイムに渡す。ランタイムは起動時に、先頭にプログラム名(ホストから渡された起動名、無ければアセンブリのパス)を置いた配列を作ってEnvironment.GetCommandLineArgs用に保持し、Mainのargsにはプログラム名を除いた引数だけを渡す。起動時の引数を受け取らないホストされたライブラリの構成では、フォールバックとしてランタイム自身の分割コード(SegmentCommandLine)がGetCommandLineWの戻り値を分割する。この分割コードはMSVCのCランタイムの文書に合わせて実装され、CommandLineToArgvWは挙動がわずかに異なるため使っていない。ネイティブホストが独自のargc/argvを渡してMainを呼ぶ構成では、Mainのargsはホストが渡した値になる。

概念URI
https://comcomponent.com/knowledge/dotnet-command-line-segmentation/
別名・表記
SegmentCommandLine / Environment.GetCommandLineArgs
最終確認日
2026-08-01
機械可読データ
JSON-LD

この概念が関わる関係

この概念を扱う記事

一次資料

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。