通过


NativeAOT 对 Unix 上的本机库输出使用 lib 前缀

从 .NET 11 开始,NativeAOT 默认将 lib 前缀(例如,libmylib.solibmylib.dyliblibmylib.a)应用于 Unix 平台上的非可执行本机库输出。 新的 MSBuild 属性 UseNativeLibPrefix允许你选择退出此行为。

已引入的版本

.NET 11 预览版 3

以前的行为

以前,NativeAOT 未将 lib 前缀应用于 Unix 上的本机库输出。 例如:

  • 输出的共享库被命名为mylib.so
  • 静态库输出被命名为mylib.a

新行为

从 .NET 11 开始,NativeAOT 默认将 lib 前缀应用于 Unix 上的非可执行本机库输出。 例如:

  • 生成的共享库文件现在命名为libmylib.so
  • 静态库生成的文件现已命名为 libmylib.a

若要选择退出新行为,请在项目文件中设置为UseNativeLibPrefixfalse

<PropertyGroup>
  <UseNativeLibPrefix>false</UseNativeLibPrefix>
</PropertyGroup>

破坏性变更的类型

此更改为行为更改

更改原因

前缀 lib 是 Unix 平台上共享和静态库被广泛接受的命名约定。 默认情况下,应用它可以提高与其他基于 Unix 的工具和系统的一致性和互操作性。 它还消除了在 .NET for Android 中使用变通方法的需求,因为这些二进制文件必须遵循此约定。

有关更多详细信息,请参阅 原始拉取请求

查看生成输出并更新依赖于以前的命名约定的任何脚本、部署过程或配置。 具体而言:

  • 更新脚本和工具:如果生成或部署脚本按名称引用本机库输出,请更新它们以考虑新 lib 前缀。

  • 根据需要选择退出:如果lib前缀导致工作流中的问题,请在项目文件中设置为UseNativeLibPrefixfalse

    <PropertyGroup>
      <UseNativeLibPrefix>false</UseNativeLibPrefix>
    </PropertyGroup>
    

受影响的 API

没有。