Canvieu la configuració de ClickOnce en funció de la configuració de compilació seleccionada (només versió .NET Framework)

Pàgina actualitzada :
Data de creació de la pàgina :

entorn

marc
  • Formularis del Windows (.NET Framework) en general
  • WPF (.NET Framework) en general

premissa

El contingut d'aquests consells són supòsits del projecte per al .NET Framework. En el cas de .NET (Core), podeu establir la configuració de publicació clickOnce a la unitat de configuració de la compilació, així que publiqueu com de costum.

També assumeix que teniu prou coneixements per utilitzar ClickOnce normalment.

Al principi

Com que un projecte .NET Framework només pot tenir una configuració de publicació clickOnce, Per exemple, per publicar amb diferents paràmetres en una compilació Debug i una versió de versió, heu de canviar manualment la configuració cada vegada abans de publicar-la.

Podeu tenir dues configuracions agrupant els projectes en una DLL i creant dos projectes separats per publicar- los. Tindreu la mateixa configuració dues vegades, i si hi ha fitxers de recursos necessaris per publicar-los, heu de tenir-ne dos alhora, de manera que la gestió serà problemàtica.

En aquesta secció es descriu com crear un fitxer per lots (.bat) tantes configuracions com necessiteu i publicar ClickOnce.

S'està configurant ClickOnce

Aquesta vegada, "Ubicació de la carpeta pública" i "URL de la carpeta d'instal·lació" es van separar per a "Debug Build" i "Release Build". Altres configuracions es creen amb la política de fer-los comuns. Altres paràmetres poden ser separats, però pot ser molest mantenir separats els "fitxers d'aplicació" i "prerequisits".

En primer lloc, obriu el projecte i introduïu la configuració de ClickOnce com de costum. El contingut d'entrada s'estableix en paràmetres que ha d'emetre Debug, però qualsevol cosa que no sigui la part comuna està bé sempre que no causi un error.

A continuació es presenta un exemple de la configuració:

Un cop hàgiu escrit, deseu el projecte.

Crea un fitxer .bat per a la publicació de ClickOnce

Com que s'emet amb una ordre, es pot executar en altres suports com powerShell, però aquesta vegada es crea com un fitxer BAT.

Podeu crear el fitxer en qualsevol lloc, però per a propòsits de simplicitat, el crearé a la ubicació del fitxer de solució (.sln). Com que és un fitxer BAT, la codificació de caràcters és Shift-JIS. PS1 pot ser UTF-8 (BOM).

Obriu el fitxer BAT en un editor de text i escriviu: Tingueu en compte que PowerShell pot gestionar l'escapament de manera diferent.

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 primera línia apunta a la ubicació de "Indicador d'ordres per a desenvolupadors". Aquest camí depèn de la versió del Visual Studio que esteu instal·lant.

Cada part del camí depèn de les condicions següents:

Fitxers de programa
Condicions del camí
Fitxers de programa
  • Si utilitzeu un sistema operatiu de 32 bits
  • Si utilitzeu una versió de 64 bits del Visual Studio en un sistema operatiu de 64 bits
Fitxers de programa (x86)
  • Si utilitzeu una versió de 32 bits del Visual Studio en un sistema operatiu de 64 bits
2022
Depèn de la versió del Visual Studio que esteu instal·lant.
Comunitat
Depèn de l'edició de Visual Studio que estiguis instal·lant. S'introduirà "Comunitat", "Professional", "Empresa", etc.

La segona línia mou el directori actual a la ubicació del fitxer BAT.

La tercera línia és l'ordre de processament de la construcció ClickOnce. El significat de cada paràmetre és el següent.

descripció del nom del paràmetre
msbuild Una ordre que executa el procés de construcció. Primer s'ha d'escriure i escriure.
ClickOnceBuildConfiguration.sln Descriu el nom del fitxer de la solució que s'ha de construir.
/t:Publish Indica un procés de construcció clickOnce.
/p:Configuration=Debug Especifica la configuració de compilació que heu definit per a la solució. Si voleu canviar la configuració de depuració que s'ha de construir, canvieu el text de la part "Depuració".
/p:PublishUrl="publish\Debug\\" Sobreescriu el valor de "Ubicació de carpeta pública" a la pantalla de publicació del Visual Studio amb la cadena especificada i executeu-la.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Sobreescriu el valor de "URL de la carpeta d'instal·lació" a la pantalla de publicació del Visual Studio amb la cadena especificada i executeu-la.

S'han extret alguns dels paràmetres, però vegeu els enllaços següents per a altres paràmetres:

Com a mostra aquesta vegada, canviarem els paràmetres de publicació de ClickOnce en cada compilació de depuració i llançament, de manera que la crearem de la següent manera.

Publicat per 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 Publicat .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 publica l'execució del fitxer BAT

Proveu d'executar cada fitxer BAT.

S'inicia l'indicador d'ordres i s'inicia la construcció.

De fet, el fitxer BAT creat aquesta vegada és només un procés fins a la construcció, de manera que el fitxer no es crea a la "ubicació de la carpeta pública". S'han creat els fitxers necessaris per a la publicació. Per exemple, en el cas d'una compilació de depuració, hauríeu de tenir un fitxer al camí de la carpeta "< de la carpeta del projecte >\bin\Debug\app.publish\". Copieu aquests fitxers a l'"URL de la carpeta d'instal·lació" i funcionarà correctament com a ClickOnce.

Publica-ho en una ubicació de carpeta pública (si la destinació és una carpeta a la qual teniu accés directe)

El lloc següent s'utilitza com a referència per a aquesta part.

Aquesta àrea no està directament relacionada amb el processament de ClickOnce, així que consulteu el lloc anterior per obtenir una explicació detallada.

En primer lloc, obriu el fitxer del projecte (.csproj) en un editor de text. No és un fitxer de solució.

A l'interior hi ha una estructura XML i, si us desplaceu fins a la part inferior, afegiu el </Project> codi següent a la línia que hi ha a sobre. Si es tracta d'un procés de premissa de còpia de fitxers, el contingut es fixa, però la part de és CopyPublishedApplication arbitrària. Més endavant utilitzareu aquest nom.

<!-- ここから 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 の発行処理 -->

Deseu-lo un cop l'hàgiu introduït.

A continuació, obriu cada fitxer BAT i afegiu-lo als /t:CopyPublishedApplication paràmetres de msbuild. CopyPublishedApplication És el nom que t'he donat abans.

ClickOnceDebug publica.bat (exemple)

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\\"

Quan executeu el fitxer BAT, podeu veure que el fitxer es copia a la ubicació de la carpeta pública. En aquest moment, no hi ha cap < nom del programa >.exe fitxer, però és innecessari perquè s'inclou originalment a la configuració.exe.

suplement

Si hi ha diversos projectes a la solució, s'executa CopyPublishedApplication per a tots els projectes. En la majoria dels casos, només s'estableix al projecte exe, de manera que es mostrarà un error quan s'executi en CopyPublishedApplication un altre projecte, És segur ignorar-lo perquè només mostra un missatge.

Publica-ho en una ubicació de carpeta pública (per a FTP)

No ho he provat, però és possible que vulgueu fer referència als llocs següents.

Altres coses a tenir en compte