NativeAOT använder lib-prefix för inbyggda biblioteksutdata i Unix

Från och med .NET 11 tillämpar NativeAOT prefixet lib (till exempel libmylib.so, libmylib.dylib, libmylib.a) som standard för icke-körbara interna biblioteksutdata på Unix-plattformar. Med en ny MSBuild-egenskap kan UseNativeLibPrefixdu välja bort det här beteendet.

Version lanserad

.NET 11 Förhandsversion 3

Tidigare beteende

Tidigare tillämpade NativeAOT inte prefixet lib på inbyggda biblioteksutdata i Unix. Som exempel:

  • Ett delat bibliotek namngavs mylib.so.
  • Ett statiskt bibliotek hade filnamnet mylib.a.

Nytt beteende

Från och med .NET 11 tillämpar NativeAOT prefixet lib som standard på icke-körbara interna biblioteksutdata på Unix. Som exempel:

  • Ett delat biblioteksutdata heter nu libmylib.so.
  • Ett statiskt biblioteksutdata heter nu libmylib.a.

Om du vill välja bort det nya beteendet anger du UseNativeLibPrefix till false i projektfilen:

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

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Prefixet lib är den allmänt accepterade namngivningskonventionen för delade och statiska bibliotek på Unix-plattformar. Om du använder den som standard förbättras konsekvensen och samverkan med andra Unix-baserade verktyg och system. Det tar också bort behovet av lösningar i .NET för Android, vilket kräver binärfiler för att följa den här konventionen.

Mer information finns i den ursprungliga pull-begäran.

Granska dina byggutdata och uppdatera eventuella skript, distributionsprocesser eller konfigurationer som är beroende av tidigare namngivningskonventioner. Specifikt:

  • Uppdatera skript och verktyg: Om dina bygg- eller distributionsskript refererar till inhemska bibliotekutdata efter namn uppdaterar du dem för att ta hänsyn till det nya lib-prefixet.

  • Avregistrera dig om det behövs: Om prefixet lib orsakar problem i arbetsflödet anger du UseNativeLibPrefix till false i projektfilen:

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

Berörda API:er

Ingen.