NativeAOT では、Unix 上のネイティブ ライブラリ出力に lib プレフィックスを使用します

.NET 11 以降では、NativeAOT は既定で lib プレフィックス (libmylib.solibmylib.dyliblibmylib.a) を Unix プラットフォーム上の非実行可能なネイティブ ライブラリ出力に適用します。 新しい MSBuild プロパティ ( UseNativeLibPrefix) を使用すると、この動作をオプトアウトできます。

導入されたバージョン

.NET 11 Preview 3

以前の動作

以前は、NativeAOT は Unix 上のネイティブ ライブラリ出力に lib プレフィックスを適用していませんでした。 例えば次が挙げられます。

  • 共有ライブラリの出力には、 mylib.soという名前が付けられています。
  • スタティック ライブラリの出力には、 mylib.aという名前が付けられています。

新しい動作

.NET 11 以降では、NativeAOT は既定で lib プレフィックスを Unix 上の実行可能でないネイティブ ライブラリ出力に適用します。 例えば次が挙げられます。

  • これで、共有ライブラリの出力に libmylib.so という名前が付けられます。
  • これで、スタティック ライブラリの出力に libmylib.a という名前が付けられます。

新しい動作を無効にするには、 UseNativeLibPrefix をプロジェクト ファイルで false に設定します。

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

破壊的変更の種類

この変更は 動作の変更です。

変更理由

lib プレフィックスは、Unix プラットフォーム上の共有ライブラリと静的ライブラリで広く受け入れわれている名前付け規則です。 これを既定で適用すると、他の Unix ベースのツールやシステムとの一貫性と相互運用性が向上します。 また、.NET for Android での回避策も不要になります。これには、バイナリがこの規則に従う必要があります。

詳細については、 元のプル要求を参照してください。

ビルド出力を確認し、前の名前付け規則に依存するスクリプト、デプロイ プロセス、または構成を更新します。 具体的な内容は次のとおりです。

  • スクリプトとツールを更新する: ビルドまたはデプロイ スクリプトがネイティブ ライブラリの出力を名前で参照している場合は、新しい lib プレフィックスを考慮するように更新します。

  • 必要に応じてオプトアウトする: lib プレフィックスによってワークフローに問題が発生する場合は、 UseNativeLibPrefix をプロジェクト ファイルに false するように設定します。

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

影響を受ける API

なし。