NativeAOT používá předponu knihovny lib pro výstupy nativní knihovny v Unixu.

Počínaje .NET 11 použije NativeAOT ve výchozím nastavení předponu lib (například libmylib.so, libmylib.dylib, libmylib.a) na nespustitelné výstupy nativní knihovny na platformách Unix. Nová vlastnost MSBuild umožňuje UseNativeLibPrefixvyjádřit výslovný nesouhlas s tímto chováním.

Verze byla představena

.NET 11 Preview 3

Předchozí chování

Dříve NativeAOT nepoužil předponu lib na výstupy nativních knihoven na Unixu. Například:

  • Byl pojmenován výstup sdílené knihovny mylib.so.
  • Výstup statické knihovny byl pojmenován mylib.a.

Nové chování

Počínaje .NET 11, NativeAOT ve výchozím nastavení použije předponu lib na výstupy nativní knihovny, které nejsou spustitelné na Unixu. Například:

  • Výstup sdílené knihovny je teď pojmenovaný libmylib.so.
  • Výstup statické knihovny je teď pojmenovaný libmylib.a.

Pokud chcete zrušit nové chování, nastavte UseNativeLibPrefix na false v souboru projektu:

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

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Předpona lib je široce přijímaná konvence pojmenování pro sdílené a statické knihovny na platformách Unix. Použití ve výchozím nastavení zlepšuje konzistenci a interoperabilitu s jinými nástroji a systémy se systémem Unix. Zároveň odstraňuje potřebu alternativních řešení v .NET pro Android, která vyžaduje, aby binární soubory dodržovaly tuto konvenci.

Další podrobnosti najdete v původní žádosti o přijetí změn.

Zkontrolujte výstupy sestavení a aktualizujte všechny skripty, procesy nasazení nebo konfigurace, které závisí na předchozích konvencích vytváření názvů. Konkrétně:

  • Aktualizace skriptů a nástrojů: Pokud skripty sestavení nebo nasazení odkazují podle názvu na výstupy nativní knihovny, aktualizujte je, aby zohledňovaly novou lib předponu.

  • V případě potřeby se odhlaste: Pokud lib předpona způsobuje problémy v pracovním postupu, nastavte UseNativeLibPrefix v false souboru projektu:

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

Ovlivněná rozhraní API

Žádné.