當你透過 apphost 啟動應用程式時,Environment.GetCommandLineArgs() 現在會保留叫用名稱,包括相對路徑或符號連結名稱。
dotnet <application.dll> 的行為未變。
所推出的版本
.NET 11 預覽版 7
以前的行為
過去,當你透過應用程式主機啟動應用程式時,Environment.GetCommandLineArgs()[0] 回傳的是受控組件路徑或已解析的可執行檔路徑,而非呼叫名稱。
新行為
從 .NET 11 開始,當你透過應用程式主機啟動應用程式時,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] 。