apphost を使用してアプリを起動すると、 Environment.GetCommandLineArgs() は相対パスやシンボリック リンク名を含む呼び出し名を保持するようになりました。
dotnet <application.dll>の動作は変わりません。
導入されたバージョン
.NET 11 Preview 7
以前の動作
以前は、apphost を使用してアプリを起動したときに、 Environment.GetCommandLineArgs()[0] は呼び出し名ではなく、マネージド アセンブリ パスまたは解決された実行可能パスを返しました。
新しい動作
.NET 11 以降、apphost を使用してアプリを起動すると、Environment.GetCommandLineArgs()[0]は、相対パスやシンボリック リンク名などの呼び出し名を保持します。 たとえば、special_myapp が myapp へのシンボリック リンクであり、./special_myapp を実行する場合、値は ./special_myapp です。
dotnet <application.dll>を使用してアプリを起動すると、動作は変更されません。
破壊的変更の種類
この変更は 動作の変更です。
変更理由
.NETをネイティブ プロセスの動作に合わせるために、実行時に指定されたargv[0]の値が保持されるようになりました。 この動作により、どのシンボリック リンク名でアプリが起動されたかを区別することもできます。
推奨されるアクション
実行可能ファイルのパスを取得するには、 Environment.ProcessPathを使用します。 マネージド エントリ アセンブリの場所を取得するには、 Assembly.GetEntryAssembly()?.Location を使用します ( Assembly.GetEntryAssembly() と Assembly.Locationを参照)。 場所は、単一ファイル アプリ内のバンドルされたアセンブリでは空の文字列になります。 呼び出し名が必要な場合は、Environment.GetCommandLineArgs()[0] を使い続けてください。
影響を受ける API
.NET