Modificați setările ClickOnce în funcție de configurația de compilare selectată (numai versiunea .NET Framework)

Pagina actualizată :
Data creării paginii :

mediu

cadru
  • Formulare Windows (.NET Framework) în general
  • WPF (.NET Framework) în general

premisă

Conținutul acestor sfaturi sunt ipoteze de proiect pentru .NET Framework. În cazul .NET (Core), puteți seta setările de publicare ClickOnce în unitatea de configurare a construi, așa că vă rugăm să publicați ca de obicei.

De asemenea, presupune că aveți suficiente cunoștințe pentru a utiliza ClickOnce în mod normal.

La început

Deoarece un proiect .NET Framework poate avea o singură setare de publicare ClickOnce, De exemplu, pentru a publica cu setări diferite într-o compilare de depanare și o compilare de lansare, trebuie să modificați manual setările de fiecare dată înainte de publicare.

Puteți avea două setări grupând proiectele într-un DLL și creând două proiecte separate pentru publicare. Veți avea aceeași configurație de două ori, iar dacă există fișiere de resurse necesare pentru publicare, trebuie să aveți două dintre ele la un moment dat, astfel încât gestionarea va fi supărătoare.

Această secțiune descrie modul de a crea un fișier batch (.bat) cât mai multe setări de care aveți nevoie și de a publica ClickOnce.

Configurarea ClickOnce

De data aceasta, "Public Folder Location" și "Installation Folder URL" au fost separate pentru "Debug Build" și "Release Build". Alte setări sunt create cu politica de a le face comune. Alți parametri pot fi separați, dar poate fi greoi să păstrați "fișierele de aplicație" și "cerințele preliminare" separate.

În primul rând, deschideți proiectul și introduceți setările ClickOnce ca de obicei. Conținutul de intrare este setat la parametrii care urmează să fie emise de depanare, dar orice altceva decât partea comună este bine, atâta timp cât nu provoacă o eroare.

Iată un exemplu de configurație:

După ce ați tastat, salvați proiectul.

Creați un fișier .bat pentru publicarea ClickOnce

Deoarece este emis cu o comandă, acesta poate fi executat pe alte suporturi, cum ar fi PowerShell, dar de data aceasta este creat ca fișier BAT.

Puteți crea fișierul oriunde, dar în scopuri de simplitate, îl voi crea în locația fișierului soluție (.sln). Deoarece este un fișier BAT, codificarea caracterelor este Shift-JIS. PS1 poate fi UTF-8 (BOM).

Deschideți fișierul BAT într-un editor de text și tastați: Rețineți că PowerShell poate gestiona evadarea în mod diferit.

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

Prima linie indică locația "Promptului de comandă pentru dezvoltatori". Această cale depinde de versiunea de Visual Studio pe care o instalați.

Fiecare parte a traseului depinde de următoarele condiții:

Fișiere program
Condiții de cale
Fișiere program
  • Dacă utilizați un sistem de operare pe 32 de biți
  • Dacă utilizați o versiune de Visual Studio pe 64 de biți pe un sistem de operare pe 64 de biți
Fișiere program (x86)
  • Dacă utilizați o versiune de Visual Studio pe 32 de biți pe un sistem de operare pe 64 de biți
2022
Depinde de versiunea de Visual Studio pe care o instalați.
Comunitate
Depinde de ediția de Visual Studio pe care o instalați. Vor fi introduse "Comunitate", "Profesional", "Întreprindere" etc.

A doua linie mută directorul curent în locația fișierului BAT.

A treia linie este comanda de procesare a construi ClickOnce. Semnificația fiecărui parametru este după cum urmează.

descrierea numelui parametrului
msbuild O comandă care execută procesul de compilare. Necesar și scris mai întâi.
ClickOnceBuildConfiguration.sln Descrie numele de fișier al soluției care urmează să fie construită.
/t:Publish Indică un proces de construire ClickOnce.
/p:Configuration=Debug Specifică configurația de compilare pe care ați setat-o pentru soluția dvs. Dacă doriți să modificați configurația de depanare care urmează să fie construită, modificați textul din partea "Depanare".
/p:PublishUrl="publish\Debug\\" Suprascrieți valoarea "Locația folderului public" pe ecranul de publicare Visual Studio cu șirul specificat și executați-l.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Suprascrieți valoarea "URL folder de instalare" pe ecranul de publicare Visual Studio cu șirul specificat și executați-l.

Unii dintre parametri au fost extrase, dar consultați următoarele linkuri pentru alți parametri:

Ca un eșantion de data aceasta, vom schimba parametrii de publicare a ClickOnce în fiecare depanare și lansare construi, așa că vom crea după cum urmează.

Publicat de 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 publică executarea fișierelor BAT

Încercați să rulați fiecare fișier BAT.

Promptul de comandă este lansat și începe compilarea.

De fapt, fișierul BAT creat de această dată este doar un proces până la compilare, astfel încât fișierul nu este creat în "locația folderului public". Fișierele necesare publicării au fost create. De exemplu, în cazul unei compilări de depanare, ar trebui să aveți un fișier în calea "< folder de proiect >\bin\Debug\app.publish\". Copiați aceste fișiere în "URL-ul folderului de instalare" și va funcționa corect ca ClickOnce.

Publicarea într-o locație de folder public (dacă destinația este un folder la care aveți acces direct)

Următorul site este utilizat ca referință pentru această parte.

Această zonă nu este direct legată de prelucrarea ClickOnce, așa că vă rugăm să consultați site-ul de mai sus pentru o explicație detaliată.

Mai întâi, deschideți fișierul de proiect (.csproj) într-un editor de text. Nu este un fișier soluție.

În interior este o structură XML și, dacă defilați în partea de jos, adăugați </Project> următorul cod la linia de deasupra acesteia. Dacă este un proces de copiere a fișierelor, conținutul este fix, dar partea din este CopyPublishedApplication arbitrară. Veți folosi acest nume mai târziu.

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

Salvați-l după ce l-ați introdus.

Apoi deschideți fiecare fișier BAT și adăugați la /t:CopyPublishedApplication parametrii msbuild. CopyPublishedApplication este numele pe care vi l-am dat mai devreme.

ClickOnceDebug publică.bat (exemplu)

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

Când executați fișierul BAT, puteți vedea că fișierul este copiat în locația folderului public. În acest moment, nu există nici un nume de program < >.exe fișier, dar nu este necesar, deoarece acesta este inițial inclus în configurare.exe.

Supliment

Dacă există mai multe proiecte în soluție, se execută CopyPublishedApplication pentru toate proiectele. În majoritatea cazurilor, acesta este setat numai la proiectul exe, astfel încât o eroare va fi afișată atunci când se execută într-un CopyPublishedApplication alt proiect, Este sigur să-l ignorați, deoarece afișează doar un mesaj.

Publicarea într-o locație de folder public (pentru FTP)

Nu am încercat-o, dar poate doriți să se refere la următoarele site-uri.

Alte lucruri de reținut