Compilare applicazioni ClickOnce 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 Framework. 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 .NET dalla riga di comando, vedere Compilare applicazioni ClickOnce .NET dalla riga di comando.

Usare MSBuild per riprodurre le distribuzioni di applicazioni ClickOnce di .NET Framework

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:builddi .

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

  1. Aprire Visual Studio e creare un nuovo progetto.

    Scegliere il modello di progetto app Windows Form (.NET Framework) o app WPF (.NET Framework) e denominare il progetto CmdLineDemo.

  2. Scegliere il comando Pubblica dal menu Compila.

    Questo passaggio garantisce che il progetto sia configurato correttamente per produrre una distribuzione dell'applicazione ClickOnce.

    Verrà visualizzata la Pubblicazione guidata.

  3. Nella Pubblicazione guidata selezionare Fine.

    Visual Studio genera e visualizza la pagina Web predefinita, denominata Publish.htm.

  4. 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

  1. Uscire da Visual Studio.

  2. 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.

  3. 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.

  4. 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.

  5. Immetti msbuild /target:publish.

    I passaggi precedenti producono una distribuzione completa dell'applicazione ClickOnce in una sottocartella del progetto denominata 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 Framework. La cartella DotNetFX contiene i file ridistribuibili per .NET Framework. I file in questo percorso 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: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 di progetto (.NET Framework). È 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 PublishUrlcui 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 utilizzando le procedure precedenti, le proprietà seguenti vengono inserite nel file di progetto dalla Pubblicazione guidata. Queste proprietà influiscono direttamente sulla modalità di produzione dell'applicazione ClickOnce.

In CmdLineDemo.vbproj / CmdLineDemo.csproj:

<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>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

Per i progetti .NET Framework, è 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 /property:BootstrapperEnabled=false

Le proprietà di pubblicazione vengono controllate in Visual Studio dalle pagine delle proprietà Pubblica, Sicurezza e Firma di Progettazione progetti.

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.

Nella pagina Sicurezza sono impostate le proprietà seguenti:

  • Abilita la sicurezza ClickOnce Impostazioni determina se vengono generati manifesti ClickOnce. Quando un progetto viene creato inizialmente, la generazione del manifesto ClickOnce è disattivata per impostazione predefinita. La procedura guidata attiva automaticamente questo flag quando si pubblica per la prima volta.

  • TargetZone determina il livello di attendibilità da generare nel manifesto dell'applicazione ClickOnce. I valori possibili sono "Internet", "LocalIntranet" e "Custom". Internet e LocalIntranet causano l'emissione di un set di autorizzazioni predefinito nel manifesto dell'applicazione ClickOnce. LocalIntranet è l'impostazione predefinita e significa fondamentalmente attendibilità totale. Custom specifica che solo le autorizzazioni specificate in modo esplicito nel file app.manifest di base devono essere generate nel manifesto dell'applicazione ClickOnce. Il file app.manifest è un file manifesto parziale che contiene solo le definizioni delle informazioni di attendibilità. Si tratta di un file nascosto, aggiunto automaticamente al progetto quando si configurano le autorizzazioni nella pagina Sicurezza .

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 le InstallUrl proprietà e UpdateUrl non sono specificate.

  • ApplicationVersion specifica la versione dell'applicazione ClickOnce. La versione è un numero a quattro cifre. Se l'ultima cifra è un "*" (asterisco), viene ApplicationRevision 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 la IsWebBootstrapper proprietà è abilitata. Viene inoltre inserito nel manifesto dell'applicazione se UpdateUrl 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 o gli aggiornamenti in background.

  • UpdateInterval specifica la frequenza con cui l'applicazione deve verificare la disponibilità di aggiornamenti.

  • UpdateIntervalUnits specifica se il UpdateInterval valore è espresso in unità di ore, giorni o settimane.

  • 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.