NativeAOT использует префикс lib для выходных данных собственной библиотеки в Unix

Начиная с .NET 11, NativeAOT по умолчанию применяет префикс lib (например, libmylib.so, libmylib.dylib, libmylib.a) к неисполняемым выходным данным собственных библиотек на платформах Unix. Новое свойство UseNativeLibPrefixMSBuild позволяет отказаться от этого поведения.

Представленная версия

.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 для Android, что требует, чтобы двоичные файлы следовали этому соглашению.

Дополнительные сведения см. в исходном pull request.

Просмотрите выходные данные сборки и обновите все скрипты, процессы развертывания или конфигурации, зависящие от предыдущих соглашений об именовании. Specifically:

  • Обновите скрипты и средства. Если ваши скрипты сборки и развертывания ссылаются на выходные данные собственных библиотек по имени, обновите их, чтобы учесть новый префикс .

  • Откажитесь при необходимости: Если префикс lib вызывает проблемы в рабочем процессе, установите UseNativeLibPrefix в значение false в вашем файле проекта.

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

Затронутые API

Нет.