修剪獨立式部署及可執行檔

架構相依部署模型 是自 .NET 開始以來最成功的部署模型。 在此案例中,應用程式開發人員只會將應用程式與協力廠商組件組合在一起,並預期 .NET 會在用戶端電腦中提供執行階段和執行階段程式庫。 此部署模型會繼續成為最新 .NET 版本的主要部署模型,不過在某些情況下,架構相依模型並不是最佳的選擇。 替代方式是發佈獨立式應用程式,其中 .NET 執行階段和執行階段程式庫會與應用程式和協力廠商組件組合在一起。

trim-self-contained 部署模型是獨立式部署模型的特製化版本,最適合用來減少部署大小。 將部署大小降至最低是某些用戶端案例的重要需求,例如 Blazor 應用程式。 視應用程式的複雜度而定,只會參考架構組件的子集,而且每個組件內的程式碼子集都需要執行應用程式。 程式庫的未使用部分是不必要的,而且可以從封裝的應用程式修剪。

不過,應用程式建置時間分析可能會造成執行階段失敗的風險,因為無法可靠地分析各種有問題的程式碼模式 (主要是以反映使用) 為中心。 為了減輕這些問題,每當修剪器無法完全分析程式碼模式時,就會產生警告。 如需修剪警告的意義和解決方式的相關資訊,請參閱修剪警告簡介

注意

  • .NET 6 和更新版本中完全支援修剪。 在 .NET Core 3.1 和 .NET 5 中,修剪是實驗性功能。
  • 修剪僅適用於已發佈獨立式的應用程式。

造成修剪問題的元件

警告

並非所有專案類型都可以修剪。 如需詳細資訊,請參閱已知修剪不相容性

任何造成建置時間分析挑戰的程式碼都不適合修剪。 應用程式使用時有問題的一些常見程式碼模式源自未繫結的反映使用方式,以及建置期間看不到的外部相依性。 未繫結反映的範例是舊版序列化程式,例如 XML 序列化,而隱藏的外部相依性範例是內建 COM。 若要解決應用程式中的修剪警告,請參閱 修剪警告簡介,若要讓您的程式庫與修剪相容,請參閱準備 .NET 程式庫以進行修剪

啟用調整

  1. <PublishTrimmed>true</PublishTrimmed> 新增至您的專案檔。

    此屬性會在獨立式發行上產生修剪的應用程式。 這也會關閉修剪不相容的功能,並在建置期間顯示修剪相容性警告。

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. 然後使用 dotnet publish 命令或 Visual Studio 發佈您的應用程式。

使用 CLI 來發行

下列範例會將適用於 Windows 的應用程式發佈為已修剪的獨立式應用程式。

dotnet publish -r win-x64

只有獨立式應用程式才支援修剪。

<PublishTrimmed> 應該在專案檔中設定,以便在 dotnet build 期間停用修剪不相容的功能。 不過,您也可以將此選項設定為 dotnet publish 的引數:

dotnet publish -r win-x64 -p:PublishTrimmed=true

如需詳細資訊,請參閱 使用 .NET CLI 發佈 .NET Core 應用程式

使用 Visual Studio 發佈

  1. 在 [方案總管] 中,以滑鼠右鍵按一下您要發行的專案,然後選取 [發佈]

    Solution Explorer with a right-click menu highlighting the Publish option.

    如果您還沒有發行設定檔,請遵循指示來建立一個,然後選擇 [資料夾] 目標類型。

  2. 選擇[更多動作]> [編輯]

    Visual studio publish profile with edit button.

  3. 在 [設定檔設定] 對話方塊中,設定下列選項:

    • 將 [部署模式] 設定為 [獨立式]
    • 將 [目標執行階段] 設定為您要發佈的平台。
    • 選取 [修剪未使用的程式碼]

    選擇 [儲存] 以儲存設定並返回 [發佈] 對話方塊。

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. 選擇 [發行] 以發行修剪的應用程式。

如需詳細資訊,請參閱 使用 Visual Studio 發佈 .NET Core 應用程式

使用 Visual Studio for Mac 來發行

Visual Studio for Mac 不提供發佈應用程式的選項。 您必須遵循使用 CLI 發佈一節中的指示手動發佈。 如需詳細資訊,請參閱 使用 .NET CLI 發佈 .NET Core 應用程式

另請參閱