NativeAOT usa el prefijo lib para las salidas de biblioteca nativa en Unix

A partir de .NET 11, NativeAOT aplica el prefijo lib (por ejemplo, libmylib.so, libmylib.dylib, libmylib.a) de forma predeterminada a salidas de biblioteca nativa no ejecutables en plataformas Unix. Una nueva propiedad de MSBuild, UseNativeLibPrefix, le permite no participar en este comportamiento.

Versión introducida

.NET 11 Preview 3

Comportamiento anterior

Anteriormente, NativeAOT no aplicaba el lib prefijo a las salidas de la biblioteca nativa en Unix. Por ejemplo:

  • Una salida de biblioteca compartida se denominaba mylib.so.
  • Una salida de biblioteca estática se denominaba mylib.a.

Nuevo comportamiento

A partir de .NET 11, NativeAOT aplica el prefijo lib de forma predeterminada a las salidas de la biblioteca nativa no ejecutable en Unix. Por ejemplo:

  • Ahora, una salida de biblioteca compartida se denomina libmylib.so.
  • Ahora, una salida de biblioteca estática se denomina libmylib.a.

Para no participar en el nuevo comportamiento, establezca UseNativeLibPrefix a false en el archivo del proyecto.

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

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

El lib prefijo es la convención de nomenclatura ampliamente aceptada para bibliotecas compartidas y estáticas en plataformas Unix. Aplicarla de forma predeterminada mejora la coherencia y la interoperabilidad con otras herramientas y sistemas basados en Unix. También elimina la necesidad de soluciones alternativas en .NET para Android, lo que requiere que los archivos binarios sigan esta convención.

Para más información, consulte la solicitud de incorporación de cambios original.

Revise las salidas de compilación y actualice los scripts, los procesos de implementación o las configuraciones que dependen de las convenciones de nomenclatura anteriores. Specifically:

  • Actualizar scripts y herramientas: si los scripts de compilación o implementación hacen referencia a las salidas de la biblioteca nativa por su nombre, actualícelos para tener en cuenta el nuevo lib prefijo.

  • Cancelar la suscripción si es necesario: si el prefijo provoca problemas en el lib flujo de trabajo, configúrelo UseNativeLibPrefixfalse en el archivo del proyecto:

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

Las APIs afectadas

Ninguno.