适用于单文件发布格式的与程序集相关 API 行为更改

与程序集的文件位置相关的多个 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

在发布为单个文件时,避免依赖程序集的文件位置。

受影响的 API