Spremeni nastavitve clickOnce, odvisno od izbrane konfiguracije gradenja (samo različica omrežnega okvirja.NET)

Stran posodobljena :
Datum ustvarjanja strani :

okolje

Okvir
  • Obrazci sistema Windows (.NET Framework) na splošno
  • WPF (.NET Framework) na splošno

Predpostavki

Vsebina teh nasvetov so predpostavke projekta za okvir .NET. V primeru .NET (Core) lahko nastavite Nastavitve objavljanja ClickOnce v konfiguracijski enoti gradnje, zato objavite kot običajno.

Predvideva tudi, da imate dovolj znanja, da lahko normalno uporabljate ClickOnce.

Sprva

Ker ima projekt .NET Framework lahko samo eno nastavitev objavljanja ClickOnce, Če želite na primer objaviti z različnimi nastavitvami v graditev za odpravljanje napak in graditev izdaje, morate nastavitve pred objavo ročno spremeniti vsakič.

Dve nastavitvi lahko imate tako, da združite projekte v DLL in ustvarite dva ločena projekta za objavo. Dvakrat boste imeli enako konfiguracijo in če so datoteke z viri potrebne za objavo, morate imeti dve naenkrat, zato bo upravljanje težavno.

V tem razdelku je opisano, kako ustvariti paketno datoteko (.bat) toliko nastavitev, kot jih potrebujete, in objaviti ClickOnce.

Konfiguriranje funkcije ClickOnce

Tokrat sta bila »Lokacija javne mape« in »URL namestitvene mape« ločena za »Debug Build« in »Release Build«. Druge nastavitve so ustvarjene s pravilnikom, da so pogoste. Drugi parametri so lahko ločeni, vendar je lahko zahtevno, da se "datoteke aplikacije" in "predpogoji" ločeno.

Najprej odprite projekt in vnesite nastavitve clickOnce kot običajno. Vnosna vsebina je nastavljena na parametre, ki jih bo izdala napaka, vendar je vse drugo kot skupni del v redu, dokler ne povzroči napake.

To je primer konfiguracije:

Ko vtipkate, shranite projekt.

Ustvarjanje .bat datoteke za objavljanje ClickOnce

Ker je izdan z ukazom, ga je mogoče izvršiti na drugih medijih, kot je PowerShell, vendar je tokrat ustvarjen kot bat datoteko.

Datoteko lahko ustvarite kjerkoli, vendar jo bom za potrebe poenostavnosti ustvaril na mestu datoteke rešitve (.sln). Ker gre za datoteko BAT, je kodiranje znakov Shift-JIS. PS1 je lahko UTF-8 (kosovnica).

Odprite datoteko BAT v urejevalniku besedila in vnesite: Upoštevajte, da lahko PowerShell ravna drugače.

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

Prva vrstica kaže na lokacijo »Ukazni poziv razvijalca«. Ta pot je odvisna od različice Visual Studio, ki jo nameščate.

Vsak del poti je odvisen od naslednjih pogojev:

Programske datoteke
Pogoji
poti
Programske datoteke
  • Če uporabljate 32-bitni OS
  • Če uporabljate 64-bitno različico programa Visual Studio v 64-bitnem operacijskem sistemu
Programske datoteke (x86)
  • Če uporabljate 32-bitno različico programa Visual Studio v 64-bitnem operacijskem sistemu
2022
To je odvisno od različice Visual Studio, ki ga nameščate.
Skupnost
To je odvisno od izdaje Visual Studio, ki ga nameščate. "Skupnost", "Strokovno", "Podjetje" itd.

Druga vrstica premakne trenutni imenik na mesto datoteke BAT.

Tretja vrstica je ukaz za obdelavo gradenja ClickOnce. Pomen vsakega parametra je naslednji.

opis
imena parametra
msbuild Ukaz, ki izvrši proces gradnje. Zahtevano in napisano najprej.
KlikniteOnceBuildConfiguration.sln Opisuje ime datoteke rešitve, ki jo je treba zgraditi.
/t:Publish Označuje postopek gradnje ClickOnce.
/p:Configuration=Debug Določa konfiguracijo gradenja, ki ste jo nastavili za rešitev. Če želite spremeniti konfiguracijo za odpravljanje napak, ki jo želite zgraditi, spremenite besedilo v delu »Odpravljanje napak«.
/p:PublishUrl="publish\Debug\\" Z navedenim nizom prepišite vrednost »Lokacija javne mape« na zaslonu za objavljanje Visual Studio in ga izvršite.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Z navedenim nizom prepišite vrednost »URL namestitvene mape« na zaslonu za objavljanje Visual Studio in ga izvršite.

Nekateri parametri so bili izvleči, vendar si oglejte naslednje povezave za druge parametre:

Kot vzorec tokrat bomo spremenili založne parametre ClickOnce v vsaki napaki in release graditi, tako da ga bomo ustvarili na naslednji način.

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

KlikniteOnceRelease Objavljeno .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\\"

KlikOnce objavi izvršitev datoteke BAT

Poskusite zaganati vsako bat datoteko.

Ukazni poziv se zažene in zažene se graditev.

Pravzaprav je datoteka BAT, ustvarjena tokrat, samo postopek do gradnje, tako da datoteka ni ustvarjena v "lokacija javne mape". Ustvarjene so datoteke, potrebne za objavo. V primeru gradenja napak bi na primer morali imeti datoteko v »< poti projektne mape >\bin\Debug\app.publish\«. Kopirajte te datoteke v »URL namestitvene mape« in bo delovala pravilno kot ClickOnce.

Objavljanje na mestu javne mape (če je cilj mapa, do ki jo imate neposreden dostop)

To mesto se uporablja kot sklic za ta del.

To področje ni neposredno povezano z obdelavo ClickOnce, zato si za podrobnejšo razlago oglejte zgoraj navedeno mesto.

Najprej odprite projektno datoteko (.csproj) v urejevalniku besedila. To ni datoteka rešitve.

Znotraj je struktura XML in če se pomaknete na dno, </Project> dodajte naslednjo kodo v vrstico nad njim. Če gre za proces predpostavke kopiranja datotek, je vsebina fiksna, CopyPublishedApplication vendar je del samovoljen. To ime boš uporabil kasneje.

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

Shranite ga, ko ga vnesete.

Nato odprite vsako bat datoteko in dodajte v /t:CopyPublishedApplication msbuild parametre. CopyPublishedApplication To je ime, ki sem ti ga dal prej.

KlikniteOnceDebug objavlja.bat (primer)

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

Ko zaženete datoteko BAT, lahko vidite, da je datoteka kopirana na mesto javne mape. V tem trenutku ni < ime programa >.exe datoteko, vendar je nepotrebno, ker je prvotno vključena v nastavitev.exe.

dodatek

Če je v rešitvi več projektov, se izvaja CopyPublishedApplication za vse projekte. V večini primerov je nastavljen le na exe projekt, CopyPublishedApplication zato se prikaže napaka pri zagonu v drugem projektu, To je varno prezreti, ker prikazuje le sporočilo.

Objavljanje na mestu javne mape (za FTP)

Nisem ga poskusil, vendar se morda želite sklicevati na naslednja mesta.

Druge stvari, ki jih je treba imeti v mislih