當組件以單一檔案發佈格式叫用時,與組件檔案位置相關的多個 API 都會有行為變更。
變更描述
.NET 5 和更新版本在進行單一檔案發佈時,配套的組件會從記憶體中載入,而不是解壓縮到磁碟。 對於單一檔案發佈的應用程式,這意味著特定位置相關 API 在 .NET 5 (和更新版本) 與舊版 .NET 會傳回不同的值。 其變更如下:
API | 舊版 | .NET 5 和更新版本 |
---|---|---|
Assembly.Location | 傳回解壓縮的 DLL 檔案路徑 | 針對配套組件傳回空字串 |
Assembly.CodeBase | 傳回解壓縮的 DLL 檔案路徑 | 針對配套組件擲回例外狀況 |
Assembly.GetFile(String) | 針對配套組件傳回 null |
針對配套組件擲回例外狀況 |
Environment.GetCommandLineArgs()[0] |
值是進入點 DLL 的名稱 | 值是主機可執行檔的名稱 |
AppContext.BaseDirectory | 值是暫存解壓縮目錄 | 值是包含主機可執行檔的目錄 |
導入的版本
5.0
建議的動作
以單一檔案的形式發佈時,請避免相依於組件的檔案位置。