使用 CLI 發佈適用於 Windows 的未封裝 .NET MAUI 應用程式

在散發適用於 Windows 的 .NET 多平臺應用程式 UI (.NET MAUI) 應用程式時,您可以將應用程式及其相依性發佈至部署至另一個系統的資料夾。

設定專案組建設定

將下列 <PropertyGroup> 節點新增至項目檔。 只有在目標架構為 Windows 且組態設定為 Release時,才會處理這個屬性群組。 每當建置或發佈模式時 Release ,就會執行此組態區段。

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
    <RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>

<PropertyGroup>範例中的 必須解決 Windows 應用程式 SDK 中的 Bug。 如需 Bug 的詳細資訊,請參閱 WindowsAppSDK 問題 #3337

發佈

若要發佈您的應用程式,請開啟 VS 2022 終端機的開發人員命令提示字元,並流覽至 .NET MAUI 應用程式項目的資料夾。 dotnet publish執行 命令,並提供下列參數:

參數
-f 目標架構,也就是 net8.0-windows{version}。 此值是 Windows TFM,例如 net8.0-windows10.0.19041.0。 請確定此值與 .csproj 檔案中節點中的<TargetFrameworks>值相同。
-c 組建組態,也就是 Release
-p:RuntimeIdentifierOverride=win10-x64
- 或 -
-p:RuntimeIdentifierOverride=win10-x86
避免 WindowsAppSDK 問題 #3337詳述的錯誤。 -x64根據您的目標平台選擇 參數的 或 -x86 版本。
-p:WindowsPackageType 封裝類型,適用於 None 未封裝的應用程式。
-p:WindowsAppSDKSelfContained 應用程式的部署模式,可以是架構相依或獨立。 此值應該 true 適用於獨立應用程式。 如需架構相依應用程式和獨立應用程式的詳細資訊,請參閱部署概觀 Windows 應用程式 SDK。

警告

嘗試發佈 .NET MAUI 解決方案會導致 dotnet publish 命令嘗試個別發佈方案中的每個專案,這可能會導致將其他項目類型新增至方案時發生問題。 因此, dotnet publish 命令的範圍應設定為 .NET MAUI 應用程式專案。

例如:

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None

注意

在 .NET 8 中 dotnet publish ,命令預設為組 Release 態。 因此,您可以從命令行省略組建組態。

發佈會建置應用程式,將可執行檔 複製到 bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish 資料夾。 在此資料夾中,有 exe 檔案,也就是建置的應用程式。 您可以啟動此應用程式,或將整個資料夾複製到另一部電腦,並在該處啟動。

與已封裝應用程式的重要區別在於,這不會在資料夾中包含 .NET 運行時間。 這表示應用程式會要求 .NET 運行時間先安裝在最終會執行應用程式的計算機上。 為了確保應用程式也包含所有運行時間元件, -p:WindowsAppSDKSelfContained 可以在發佈時提供 自變數。 例如:

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true

如需命令的詳細資訊 dotnet publish ,請參閱 dotnet publish