Compilare applicazioni ClickOnce .NET dalla riga di comando
In Visual Studio è possibile compilare progetti dalla riga di comando, anche se vengono creati nell'ambiente di sviluppo integrato (IDE). In effetti, è possibile ricompilare un progetto creato con Visual Studio in un altro computer in cui è installato solo .NET 5 o versione successiva. Questa funzionalità consente di riprodurre una compilazione usando un processo automatizzato, ad esempio in un lab di compilazione centrale o con tecniche di scripting avanzate oltre l'ambito di compilazione del progetto stesso.
Nota
Per compilare applicazioni ClickOnce di .NET Framework dalla riga di comando, vedere Compilare applicazioni ClickOnce dalla riga di comando.
Usare MSBuild per riprodurre le distribuzioni di applicazioni ClickOnce .NET
Quando si richiama msbuild /target:publish
dalla riga di comando, questo comando indica al sistema MSBuild di compilare il progetto e creare un'applicazione ClickOnce nella cartella publish. Questo comando equivale a selezionare il comando Pubblica nell'IDE.
Questo comando esegue msbuild.exe, che si trova nel percorso nell'ambiente del prompt dei comandi di Visual Studio.
Una "destinazione" è un indicatore di MSBuild su come elaborare il comando. Le destinazioni chiave sono la destinazione "build" e la destinazione "publish". La destinazione di compilazione equivale a selezionare il comando Compila (o premere F5) nell'IDE. Se si vuole compilare solo il progetto, è possibile immettere msbuild
. Questo comando funziona perché la destinazione di compilazione è la destinazione predefinita per tutti i progetti generati da Visual Studio. Di conseguenza, non è necessario specificare in modo esplicito la destinazione di compilazione. Pertanto, l'immissione msbuild
è la stessa operazione di immissione msbuild /target:build
di .
Il /target:publish
comando indica a MSBuild di richiamare la destinazione di pubblicazione. La destinazione di pubblicazione dipende dalla destinazione di compilazione, il che significa che l'operazione di pubblicazione è un superset dell'operazione di compilazione. Ad esempio, se è stata apportata una modifica ai file di origine di Visual Basic o C#, l'operazione di pubblicazione ricompila automaticamente l'assembly corrispondente.
Per informazioni sulla generazione di una distribuzione ClickOnce completa tramite lo strumento da riga di comando Mage.exe per creare il manifesto ClickOnce, vedere Procedura dettagliata: Distribuire manualmente un'applicazione ClickOnce.
Creare e compilare un'applicazione ClickOnce di base con MSBuild
Il modo più semplice per creare un profilo di pubblicazione consiste nell'usare Visual Studio. Per pubblicare con MSBuild è necessario un profilo di pubblicazione.
Creare e pubblicare un progetto ClickOnce
Aprire Visual Studio e creare un nuovo progetto.
Scegliere il modello di progetto app Windows Form o applicazione WPF e denominare il progetto
CmdLineDemo
e quindi creare il progetto.In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e selezionare Pubblica.
Questo passaggio garantisce che il progetto sia configurato correttamente per produrre una distribuzione dell'applicazione ClickOnce.
Verrà visualizzata la pagina Pubblica.
Nella pagina Pubblica selezionare Aggiungi un profilo di pubblicazione, fare clic su ClickOnce e quindi selezionare Fine.
Per questo esercizio, è possibile ignorare le altre impostazioni di configurazione nella pagina Pubblica.
Al termine del processo, selezionare Chiudi per uscire dalla finestra di dialogo Pubblica pagina.
Seleziona Pubblica.
Visual Studio genera l'output della distribuzione ClickOnce.
Salvare il progetto e prendere nota del percorso della cartella in cui è archiviato.
I passaggi precedenti creano un progetto ClickOnce pubblicato per la prima volta. È ora possibile riprodurre la compilazione all'esterno dell'IDE.
Riprodurre la compilazione dalla riga di comando
Uscire da Visual Studio.
Dal menu Start di Windows selezionare Strumenti>riga di comando Prompt dei comandi>per sviluppatori.
Verrà visualizzato il prompt dei comandi per gli sviluppatori di Visual Studio.
Nel prompt dei comandi di Visual Studio verificare che la directory corrente mostri il percorso del progetto compilato in precedenza.
Se non si lavora nella directory del progetto, immettere un comando per passare al percorso desiderato, ad esempio
chdir C:\Users\username\source\repos\CmdLineDemo
.Per rimuovere i file esistenti prodotti nella sezione precedente, immettere
rmdir /s publish
.Questo passaggio è facoltativo, ma garantisce che la compilazione della riga di comando produa tutti i nuovi file.
Per .NET 5 e versioni successive, la compilazione di applicazioni ClickOnce .NET dalla riga di comando è un'esperienza simile. La differenza è che è necessario fornire una proprietà aggiuntiva per il profilo di pubblicazione nella riga di comando di MSBuild.
Immetti
msbuild /target:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>"
.I passaggi precedenti producono una distribuzione completa dell'applicazione ClickOnce in una sottocartella del progetto denominato publish. CmdLineDemo.application è il manifesto della distribuzione ClickOnce. La cartella CmdLineDemo_1.0.0.0 contiene i file CmdLineDemo.exe e CmdLineDemo.exe.manifest, il manifesto dell'applicazione ClickOnce. Setup.exe è il programma di avvio automatico, che per impostazione predefinita è configurato per installare .NET. I file in questa cartella comprendono l'intero set di file che è necessario distribuire l'applicazione sul Web o tramite UNC o CD/DVD.
Nota
Il sistema MSBuild usa l'opzione PublishDir per specificare il percorso per l'output, ad esempio msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>"
.
Pubblicare l'output del processo
MSBuild usa la PublishDir
proprietà per impostare il percorso di output della compilazione, inclusi gli artefatti di compilazione. Il PublishDir
valore usato da MSBuild come destinazione per la pubblicazione viene ottenuto per impostazione predefinita dalla PublishDir
proprietà nel file pubxml (.NET). È anche possibile eseguire l'override di questo comportamento nella riga di comando di MSBuild usando l'opzione /p
. Se si esegue l'override dell'impostazione, l'output di pubblicazione passa al percorso specificato. L'output viene generato durante il passaggio di pubblicazione di MSBuild. Qualsiasi destinazione MSBuild con AfterTargets="ClickOncePublish"
viene eseguita dopo l'esecuzione di questa copia.
La PublishUrl
proprietà, diversamente da PublishDir
, non viene usata nel passaggio MSBuild. PublishUrl
viene ignorato quando si richiama MSBuild direttamente per la pubblicazione dalla riga di comando.
Quando la pubblicazione viene avviata nell'IDE di Visual Studio, Visual Studio richiama MSBuild per pubblicare gli artefatti nel PublishDir
percorso. Al termine di questo passaggio di MSBuild, Visual Studio pubblica quindi i file specifici di ClickOnce nel percorso a PublishUrl
cui punta . Questo secondo passaggio viene eseguito all'interno del processo di Visual Studio. Non è possibile inserire alcuna destinazione/attività da eseguire durante questo passaggio perché si tratta di un processo di Visual Studio.
Per le distribuzioni di MSBuild che non usano Visual Studio, copiare tutti i file nella directory di distribuzione nella destinazione o nel supporto di distribuzione. La directory di distribuzione può essere una cartella in un sito Web o in un sito FTP, una condivisione file o un CD-ROM. Ad esempio, è possibile usare uno strumento di terze parti o un'attività MSBuild personalizzata per copiare i file ClickOnce.
Per qualsiasi post-elaborazione nella PublishUrl
cartella, è necessario disporre di uno script separato.
Importante
Se PublishDir
è impostato sullo stesso percorso di PublishUrl
, l'output di compilazione duplicato viene copiato nel PublishUrl
percorso. È possibile evitare questo problema in Visual Studio 2022 versione 17.4 e successive creando un nuovo profilo. Il nuovo profilo imposta PublishDir
su una posizione diversa da PublishUrl
. Al termine dell'operazione di pubblicazione, i file ClickOnce pertinenti vengono copiati dal PublishDir
percorso in PublishUrl
.
Pubblica proprietà
Quando si pubblica l'applicazione usando le procedure precedenti, le proprietà seguenti vengono inserite nel file del profilo di pubblicazione per i progetti .NET (.NET 5 e versioni successive). Queste proprietà influiscono direttamente sulla modalità di produzione dell'applicazione ClickOnce.
In .pubxml:
<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>
È possibile eseguire l'override di queste proprietà nella riga di comando senza modificare il file di progetto stesso. Ad esempio, il codice seguente compila la distribuzione dell'applicazione ClickOnce senza il programma di avvio automatico:
msbuild /target:publish /p:PublishProfile=<pubxml file> /property:BootstrapperEnabled=false
Le proprietà di pubblicazione vengono controllate in Visual Studio dalle pagine delle proprietà Pubblica, Sicurezza e Firma di Progettazione progetti. Per i progetti .NET (.NET 5 e versioni successive), queste impostazioni vengono fornite nel file pubxml, accessibile in Visual Studio tramite lo strumento Pubblica.
Le proprietà di pubblicazione seguenti vengono impostate in varie pagine delle proprietà della finestra di progettazione dell'applicazione.
AssemblyOriginatorKeyFile
determina il file di chiave usato per firmare i manifesti dell'applicazione ClickOnce. Questa stessa chiave può essere usata anche per assegnare un nome sicuro agli assembly. Questa proprietà viene impostata nella pagina Firma di Progettazione progetti. Per le applicazioni Windows .NET, questa impostazione rimane nel file di progetto.
Nella pagina Pubblica sono impostate le proprietà seguenti:
PublishUrl
è il percorso in cui l'applicazione viene pubblicata nell'IDE. Viene inserito nel manifesto dell'applicazione ClickOnce se entrambe leInstallUrl
proprietà eUpdateUrl
non sono specificate.ApplicationVersion
specifica la versione dell'applicazione ClickOnce. La versione è un numero a quattro cifre. Se l'ultima cifra è un "*" (asterisco), vieneApplicationRevision
sostituito dal valore inserito nel manifesto in fase di compilazione.ApplicationRevision
specifica la revisione. Questo valore è un numero intero, che incrementa ogni volta che si pubblica nell'IDE. Si noti che non viene incrementato automaticamente per le compilazioni eseguite nella riga di comando.Install
determina se l'applicazione è un'applicazione installata o un'applicazione run-from-Web.InstallUrl
(non visualizzato) è il percorso da cui gli utenti installano l'applicazione. Se specificato, questo valore viene masterizzato nel programma di avvio automatico setup.exe se laIsWebBootstrapper
proprietà è abilitata. Viene inoltre inserito nel manifesto dell'applicazione seUpdateUrl
non è specificato .SupportUrl
(non visualizzato) è il percorso collegato nella finestra di dialogo Installazione applicazioni per un'applicazione installata.
Le proprietà seguenti vengono impostate nella finestra di dialogo Applicazione Aggiornamenti, a cui si accede dalla pagina Pubblica.
UpdateEnabled
indica se l'applicazione deve verificare la disponibilità di aggiornamenti.UpdateMode
specifica gli aggiornamenti in primo piano. Per i progetti .NET (.NET 5 e versioni successive), Lo sfondo non è supportato.UpdateUrl
(non visualizzato) è il percorso da cui l'applicazione riceve gli aggiornamenti. Se specificato, questo valore viene inserito nel manifesto dell'applicazione.
Le proprietà seguenti vengono impostate nella finestra di dialogo Opzioni di pubblicazione, a cui si accede dalla pagina Pubblica .
PublisherName
specifica il nome del server di pubblicazione visualizzato nel prompt visualizzato durante l'installazione o l'esecuzione dell'applicazione. Per un'applicazione installata, viene usato anche per specificare il nome della cartella nel menu Start .ProductName
specifica il nome del prodotto visualizzato nel prompt visualizzato durante l'installazione o l'esecuzione dell'applicazione. Per un'applicazione installata, viene usato anche per specificare il nome del collegamento nel menu Start .
Nella finestra di dialogo Prerequisiti sono impostate le proprietà seguenti, a cui si accede dalla pagina Pubblica.
BootstrapperEnabled
determina se generare il programma di avvio automatico setup.exe .IsWebBootstrapper
determina se il programma di avvio automatico setup.exe funziona sul Web o in modalità basata su disco.
Opzioni di utilizzo: InstallURL, SupportUrl, PublishURL, UpdateURL
La tabella seguente illustra le quattro opzioni URL per la distribuzione ClickOnce.
Opzione URL | Descrizione |
---|---|
PublishURL |
Obbligatorio per pubblicare l'applicazione ClickOnce in un sito Web. |
InstallURL |
Facoltativo. Impostare questa opzione URL se il sito di installazione è diverso da PublishURL . Ad esempio, è possibile impostare su PublishURL un percorso FTP e impostare su InstallURL un URL Web. |
SupportURL |
Facoltativo. Impostare questa opzione URL se il sito di supporto è diverso da PublishURL . Ad esempio, è possibile impostare sul SupportURL sito Web del supporto tecnico dell'azienda. |
UpdateURL |
Facoltativo. Impostare questa opzione URL se il percorso di aggiornamento è diverso da InstallURL . Ad esempio, è possibile impostare su PublishURL un percorso FTP e impostare su UpdateURL un URL Web. |