Modificare le impostazioni ClickOnce in base alla configurazione di compilazione selezionata (solo versione di .NET Framework)

Pagina aggiornata :
Data di creazione della pagina :

ambiente

struttura
  • Windows Form (.NET Framework) in generale
  • WPF (.NET Framework) in generale

premessa

Il contenuto di questi suggerimenti è costituito da presupposti di progetto per .NET Framework. Nel caso di .NET (Core), è possibile impostare le impostazioni di pubblicazione ClickOnce nell'unità di configurazione della build, quindi pubblicare come al solito.

Si presuppone inoltre che si disponga di conoscenze sufficienti per utilizzare clickOnce normalmente.

Dapprima

Poiché un progetto .NET Framework può avere una sola impostazione di pubblicazione ClickOnce, Ad esempio, per pubblicare con impostazioni diverse in una build di debug e in una build di rilascio, è necessario modificare manualmente le impostazioni ogni volta prima della pubblicazione.

È possibile avere due impostazioni raggruppando i progetti in una DLL e creando due progetti separati per la pubblicazione. Avrai la stessa configurazione due volte e, se ci sono file di risorse necessari per la pubblicazione, devi averne due alla volta, quindi la gestione sarà problematica.

In questa sezione viene descritto come creare un file batch (.bat) tutte le impostazioni necessarie e pubblicare ClickOnce.

Configurazione di ClickOnce

Questa volta, "Percorso cartella pubblica" e "URL cartella di installazione" sono stati separati per "Debug Build" e "Release Build". Altre impostazioni vengono create con la politica di renderle comuni. Altri parametri possono essere separati, ma può essere complicato mantenere separati i "file dell'applicazione" e i "prerequisiti".

Innanzitutto, apri il progetto e inserisci le impostazioni ClickOnce come al solito. Il contenuto di input è impostato su parametri che devono essere emessi da Debug, ma qualsiasi cosa diversa dalla parte comune va bene purché non causi un errore.

Di seguito è riportato un esempio della configurazione:

Dopo aver digitato, salva il progetto.

Creare un file .bat per la pubblicazione ClickOnce

Poiché viene emesso con un comando, può essere eseguito su altri supporti come PowerShell, ma questa volta viene creato come file BAT.

È possibile creare il file ovunque, ma per semplicità, lo creerò nella posizione del file della soluzione (.sln). Poiché si tratta di un file BAT, la codifica dei caratteri è Shift-JIS. PS1 può essere UTF-8 (BOM).

Aprire il file BAT in un editor di testo e digitare: Si noti che PowerShell potrebbe gestire l'escape in modo diverso.

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

La prima riga punta alla posizione di "Developer Command Prompt". Questo percorso dipende dalla versione di Visual Studio che si sta installando.

Ogni parte del percorso dipende dalle seguenti condizioni:

Programmi
Condizioni del percorso
Programmi
  • Se si utilizza un sistema operativo a 32 bit
  • Se si utilizza una versione a 64 bit di Visual Studio in un sistema operativo a 64 bit
Programmi (x86)
  • Se si utilizza una versione a 32 bit di Visual Studio in un sistema operativo a 64 bit
2022
Dipende dalla versione di Visual Studio che si sta installando.
Comunità
Dipende dall'edizione di Visual Studio che si sta installando. Verranno inseriti "Community", "Professional", "Enterprise", ecc.

La seconda riga sposta la directory corrente nel percorso del file BAT.

La terza riga è il comando di elaborazione della compilazione ClickOnce. Il significato di ogni parametro è il seguente.

descrizione del nome del parametro
MSBuild Comando che esegue il processo di compilazione. Richiesto e scritto prima.
Metodo ClickOnceBuildConfiguration.sln Viene descritto il nome file della soluzione da compilare.
/t:Publish Indica un processo di compilazione ClickOnce.
/p:Configuration=Debug Specifica la configurazione di compilazione impostata per la soluzione. Se si desidera modificare la configurazione di debug da compilare, modificare il testo nella parte "Debug".
/p:PublishUrl="publish\Debug\\" Sovrascrivere il valore di "Percorso cartella pubblica" nella schermata di pubblicazione di Visual Studio con la stringa specificata ed eseguirlo.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Sovrascrivere il valore di "URL cartella di installazione" nella schermata di pubblicazione di Visual Studio con la stringa specificata ed eseguirlo.

Alcuni dei parametri sono stati estratti, ma vedere i seguenti collegamenti per altri parametri:

Come esempio questa volta, cambieremo i parametri di pubblicazione di ClickOnce in ogni build di debug e rilascio, quindi lo creeremo come segue.

Pubblicato da ClickOnceDebug.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease pubblicato .bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce pubblica l'esecuzione di file BAT

Prova a eseguire ogni file BAT.

Il prompt dei comandi viene avviato e viene avviata la compilazione.

In realtà, il file BAT creato questa volta è solo un processo fino alla compilazione, quindi il file non viene creato nella "posizione della cartella pubblica". Sono stati creati i file necessari per la pubblicazione. Ad esempio, nel caso di una build di debug, è necessario disporre di un file nella cartella "< del progetto >\bin\Debug\app.publish\". Copia questi file nell'"URL della cartella di installazione" e funzionerà correttamente come ClickOnce.

Pubblicare in un percorso di cartelle pubbliche (se la destinazione è una cartella a cui si dispone dell'accesso diretto)

Il seguente sito viene utilizzato come riferimento per questa parte.

Quest'area non è direttamente correlata al trattamento di ClickOnce, quindi si prega di fare riferimento al sito di cui sopra per una spiegazione dettagliata.

Innanzitutto, aprire il file di progetto (con estensione csproj) in un editor di testo. Non è un file di soluzione.

All'interno c'è una struttura XML e, se scorri verso il basso, aggiungi il </Project> codice seguente alla riga sopra di essa. Se si tratta di un processo di copia del file, il contenuto è fisso, ma la parte di è CopyPublishedApplication arbitraria. Utilizzerai questo nome in seguito.

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

Salvalo una volta inserito.

Quindi aprire ogni file BAT e aggiungerlo /t:CopyPublishedApplication ai parametri msbuild. CopyPublishedApplication è il nome che ti ho dato prima.

ClickOnceDebug pubblica.bat (esempio)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

Quando si esegue il file BAT, è possibile vedere che il file viene copiato nel percorso della cartella pubblica. Al momento, non esiste un nome di programma < >.exe file, ma non è necessario perché è originariamente incluso nell.exe installazione.

supplemento

Se nella soluzione sono presenti più progetti, viene eseguito CopyPublishedApplication per tutti i progetti. Nella maggior parte dei casi, è impostato solo sul progetto exe, quindi verrà visualizzato un errore durante l'esecuzione in CopyPublishedApplication un altro progetto, È sicuro ignorarlo perché visualizza solo un messaggio.

Pubblicare in un percorso di cartelle pubbliche (per FTP)

Non l'ho provato, ma potresti voler fare riferimento ai seguenti siti.

Altre cose da tenere a mente