适用于单文件发布格式的与程序集相关 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
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈