前提 .NETでは何も付けずににpublishをすると、出力先のディレクトリに依存しているアセンブリをコピーします。 そのため、作成したアプリケーションを配布しようとしたときに、複数ファイルを配布する必要があります。 これがあんまり嬉しくない場合があるということで、複数出力されるファイルをまとめるビルドオプションが存在します。 また、単一ファイルといっても、普通の.NETのアセンブリは直接実行可能な機械語ではありません。 中間言語で記述されたバイナリであり、システムにインストールされた直接実行可能なランタイムにホストしてもらって実行されます。 単一ファイルといった場合、.NETのアセンブリだけを纏めるものと、ランタイムまでまとめるものの二種類があるわけです。 出力ファイルに関係するオプション --runtime これを指定すると、Nativeのランタイムが出力にコピーされます System