适用于单文件发布格式的与程序集相关 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