使用 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。