Condividi tramite


Pubblicare un'app .NET MAUI non in pacchetto per Windows con l'interfaccia della riga di comando

Quando si distribuisce l'app .NET Multi-platform App UI (.NET MAUI) per Windows, è possibile pubblicare l'app e le relative dipendenze in una cartella per la distribuzione in un altro sistema.

Configurare le impostazioni di compilazione del progetto

Aggiungere il nodo seguente <PropertyGroup> al file di progetto. Questo gruppo di proprietà viene elaborato solo quando il framework di destinazione è Windows e la configurazione è impostata su Release. Questa sezione di configurazione viene eseguita ogni volta che una compilazione o una pubblicazione in Release modalità .

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

Nell'esempio <PropertyGroup> è necessario risolvere un bug nel SDK per app di Windows. Per altre informazioni sul bug, vedere Problema di WindowsAppSDK #3337.

Pagina

Per pubblicare l'app, aprire il prompt dei comandi per gli sviluppatori per il terminale VS 2022 e passare alla cartella per il progetto di app MAUI .NET. Eseguire il dotnet publish comando specificando i parametri seguenti:

Parametro Valore
-f Framework di destinazione, ovvero net8.0-windows{version}. Questo valore è un TFM di Windows, ad esempio net8.0-windows10.0.19041.0. Assicurarsi che questo valore sia identico al valore nel <TargetFrameworks> nodo nel file con estensione csproj .
-c Configurazione di compilazione, ovvero Release.
-p:RuntimeIdentifierOverride=win10-x64
- oppure -
-p:RuntimeIdentifierOverride=win10-x86
Evita il bug dettagliato in WindowsAppSDK Problema 3337. Scegliere la -x64 versione o -x86 del parametro in base alla piattaforma di destinazione.
-p:WindowsPackageType Tipo di pacchetto, che è None per le app non in pacchetto.
-p:WindowsAppSDKSelfContained La modalità di distribuzione per l'app, che può essere dipendente dal framework o autonoma. Questo valore deve essere true per le app autonome. Per altre informazioni sulle app dipendenti dal framework e sulle app autonome, vedere SDK per app di Windows panoramica della distribuzione.

Avviso

Se si tenta di pubblicare una soluzione MAUI .NET, il dotnet publish comando tenta di pubblicare ogni progetto nella soluzione singolarmente, causando problemi quando sono stati aggiunti altri tipi di progetto alla soluzione. Di conseguenza, il dotnet publish comando deve essere limitato al progetto di app .NET MAUI.

Ad esempio:

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

Nota

In .NET 8 il dotnet publish comando usa per impostazione predefinita la Release configurazione. Di conseguenza, la configurazione della compilazione può essere omessa dalla riga di comando.

La pubblicazione compila l'app copiando il file eseguibile nella cartella bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish . In questa cartella è presente un file exe ed è l'app compilata. Questa app può essere avviata o l'intera cartella può essere copiata in un altro computer e avviata lì.

Una differenza importante da un'app in pacchetto è che questo non includerà il runtime .NET nella cartella. Ciò significa che l'app richiederà che il runtime .NET venga prima installato nei computer che eseguiranno l'app. Per assicurarsi che l'app contenga anche tutti i componenti di runtime, è possibile specificare l'argomento durante la -p:WindowsAppSDKSelfContained pubblicazione. Ad esempio:

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

Per altre informazioni sul dotnet publish comando, vedere dotnet publish.