从 .NET 11 开始,NativeAOT 默认将 lib 前缀(例如,libmylib.so、libmylib.dylib、libmylib.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
没有。