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.