NativeAOT 在 Unix 上使用 lib 前綴作為原生函式庫輸出

從 .NET 11 開始,NativeAOT 預設將 lib 前綴(例如 libmylib.so、libmylib.dylib、libmylib.a)用於 Unix 平台上的非執行原生函式庫輸出。 一個新的 MSBuild 屬性 UseNativeLibPrefix,讓你可以選擇不使用這種行為。

所推出的版本

.NET 11 預覽版 3

以前的行為

之前 NativeAOT 在 Unix 上不會對原生函式庫輸出套用 lib 前綴。 例如:

  • 一個共享函式庫輸出被命名為 mylib.so。
  • 靜態函式庫輸出被命名為 mylib.a。

新行為

從 .NET 11 起,NativeAOT 預設在 Unix 上的非可執行原生函式庫輸出上套用 lib 前綴。 例如:

  • 一個共享函式庫輸出現在命名為 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

沒有。