Compartilhar via


NativeAOT usa o prefixo lib para saídas de biblioteca nativa no Unix

A partir do .NET 11, NativeAOT aplica o prefixo lib (por exemplo, libmylib.so, libmylib.dylib, libmylib.a) por padrão a saídas de biblioteca nativa não executáveis em plataformas Unix. Uma nova propriedade UseNativeLibPrefixdo MSBuild permite que você opte por não usar esse comportamento.

Versão introduzida

.NET 11 Versão Prévia 3

Comportamento anterior

Anteriormente, NativeAOT não aplica o lib prefixo a saídas de biblioteca nativas no Unix. Por exemplo:

  • Uma saída de biblioteca compartilhada foi nomeada mylib.so.
  • Uma saída de biblioteca estática foi nomeada mylib.a.

Novo comportamento

A partir do .NET 11, NativeAOT aplica o prefixo lib por padrão a saídas de biblioteca nativa não executáveis no Unix. Por exemplo:

  • Uma saída de biblioteca compartilhada agora é nomeada libmylib.so.
  • Uma saída de biblioteca estática agora é nomeada libmylib.a.

Para recusar o novo comportamento, defina UseNativeLibPrefixfalse no arquivo de projeto:

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

Tipo de mudança disruptiva

Essa alteração é uma mudança comportamental.

Razão da alteração

O lib prefixo é a convenção de nomenclatura amplamente aceita para bibliotecas compartilhadas e estáticas em plataformas Unix. A aplicação por padrão melhora a consistência e a interoperabilidade com outros sistemas e ferramentas baseadas em Unix. Ele também remove a necessidade de soluções alternativas no .NET para Android, o que exige que os binários sigam essa convenção.

Para obter mais detalhes, consulte a solicitação de pull original.

Examine as saídas de build e atualize os scripts, os processos de implantação ou as configurações que dependem das convenções de nomenclatura anteriores. Especificamente:

  • Atualizar scripts e ferramentas: se os scripts de build ou implantação fizerem referência a saídas de biblioteca nativa por nome, atualize-as para levar em conta o novo lib prefixo.

  • Desative se necessário: Se o prefixo lib causar problemas no seu fluxo de trabalho, configure UseNativeLibPrefix para false em seu arquivo de projeto.

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

APIs afetadas

Nenhum.