Skift ClickOnce-indstillinger afhængigt af den valgte build-konfiguration (kun .NET Framework-version)

Side opdateret :
Dato for oprettelse af side :

miljø

ramme
  • Windows Forms (.NET Framework) generelt
  • WPF (.NET Framework) generelt

forudsætning

Indholdet af disse tip er projektantagelser for .NET Framework. I tilfælde af .NET (Core) kan du indstille ClickOnce-udgivelsesindstillinger i buildkonfigurationsenheden, så udgiv som normalt.

Det forudsætter også, at du har tilstrækkelig viden til at bruge ClickOnce normalt.

Først

Da et .NET Framework-projekt kun kan have én ClickOnce-publiceringsindstilling, Hvis du f.eks. vil udgive med forskellige indstillinger i et Fejlfindingsbuild og et Release-build, skal du manuelt ændre indstillingerne hver gang, før du publicerer.

Du kan have to indstillinger ved at gruppere projekterne i en DLL og oprette to separate projekter til udgivelse. Du vil have den samme konfiguration to gange, og hvis der er ressourcefiler, der er nødvendige for udgivelse, skal du have to af dem ad gangen, så ledelsen vil være besværlig.

I dette afsnit beskrives, hvordan du opretter en batchfil (.bat) så mange indstillinger, som du har brug for, og publicerer ClickOnce.

Konfiguration af ClickOnce

Denne gang blev "Public Folder Location" og "Installation Folder URL" adskilt for "Debug Build" og "Release Build". Andre indstillinger oprettes med den politik at gøre dem almindelige. Andre parametre kan være adskilte, men det kan være besværligt at holde "applikationsfiler" og "forudsætninger" adskilt.

Åbn først projektet og indtast dine ClickOnce-indstillinger som normalt. Inputindholdet er indstillet til parametre, der skal udstedes af Debug, men alt andet end den fælles del er fint, så længe det ikke forårsager en fejl.

Følgende er et eksempel på konfigurationen:

Når du har skrevet, skal du gemme projektet.

Opret en .bat fil til ClickOnce-udgivelse

Da den udstedes med en kommando, kan den udføres på andre medier som PowerShell, men denne gang oprettes den som en BAT-fil.

Du kan oprette filen hvor som helst, men for enkelhedens skyld opretter jeg den på placeringen af løsningsfilen (.sln). Da det er en BAT-fil, er tegnkodningen Shift-JIS. PS1 kan være UTF-8 (stykliste).

Åbn BAT-filen i en teksteditor, og skriv: Bemærk, at PowerShell kan håndtere flugt anderledes.

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

Den første linje peger på placeringen af "Developer Command Prompt". Denne sti afhænger af den version af Visual Studio, du installerer.

Hver del af stien afhænger af følgende forhold:

Programfiler
Sti betingelser
Programfiler
  • Hvis du bruger et 32-bit operativsystem
  • Hvis du bruger en 64-bit version af Visual Studio på et 64-bit operativsystem
Programfiler (x86)
  • Hvis du bruger en 32-bit version af Visual Studio på et 64-bit operativsystem
2022
Det afhænger af den version af Visual Studio, du installerer.
Samfund
Det afhænger af den udgave af Visual Studio, du installerer. "Fællesskab", "Professionel", "Virksomhed" osv. vil blive indtastet.

Den anden linje flytter den aktuelle mappe til placeringen af BAT-filen.

Den tredje linje er kommandoen ClickOnce build-behandling. Betydningen af hver parameter er som følger.

beskrivelse af parameternavn
Msbuild En kommando, der udfører byggeprocessen. Påkrævet og skrevet først.
ClickOnceBuildConfiguration.sln Beskriver filnavnet på den løsning, der skal bygges.
/t:Publish Angiver en ClickOnce-buildproces.
/p:Configuration=Debug Angiver den buildkonfiguration, du har angivet for din løsning. Hvis du vil ændre den fejlfindingskonfiguration, der skal bygges, skal du ændre teksten i delen "Fejlfinding".
/p:PublishUrl="publish\Debug\\" Overskriv værdien af "Placering af offentlig mappe" på Visual Studio-udgivelsesskærmen med den angivne streng, og udfør den.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Overskriv værdien af "URL-adresse til installationsmappe" på Visual Studio-udgivelsesskærmen med den angivne streng, og udfør den.

Nogle af parametrene er udtrukket, men se følgende links for andre parametre:

Som en prøve denne gang ændrer vi udgivelsesparametrene for ClickOnce i hver fejlfinding og release build, så vi opretter det som følger.

Udgivet af 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 Publiceret .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 udgiver BAT-filudførelse

Prøv at køre hver BAT-fil.

Kommandoprompten startes, og buildet starter.

Faktisk er BAT-filen, der oprettes denne gang, kun en proces indtil buildet, så filen oprettes ikke i den "offentlige mappeplacering". De filer, der er nødvendige for offentliggørelse, er blevet oprettet. I tilfælde af en fejlfindingsopbygning skal du f.eks. have en fil i stien "< projektmappe >\bin\Debug\app.publish\". Kopier disse filer til "URL'en til installationsmappen", og den fungerer korrekt som ClickOnce.

Udgiv til en offentlig mappeplacering (hvis destinationen er en mappe, som du har direkte adgang til)

Følgende websted bruges som reference for denne del.

Dette område er ikke direkte relateret til behandlingen af ClickOnce, så se venligst ovenstående websted for en detaljeret forklaring.

Åbn først projektfilen (.csproj) i en teksteditor. Det er ikke en løsningsfil.

Inde er en XML-struktur, og hvis du ruller til bunden, skal </Project> du tilføje følgende kode til linjen over den. Hvis det er en filkopipræmissproces, er indholdet rettet, men den del af er CopyPublishedApplication vilkårlig. Du bruger dette navn senere.

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

Gem det, når du har indtastet det.

Åbn derefter hver BAT-fil og tilføj til msbuild-parametrene /t:CopyPublishedApplication . CopyPublishedApplication er det navn, jeg gav dig tidligere.

ClickOnceDebug udgiver.bat (eksempel)

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

Når du kører BAT-filen, kan du se, at filen er kopieret til placeringen af den offentlige mappe. På nuværende tidspunkt er der ikke noget < programnavn >.exe fil, men det er unødvendigt, fordi det oprindeligt er inkluderet i opsætningen.exe.

supplement

Hvis der er flere projekter i løsningen, køres der CopyPublishedApplication for alle projekter. I de fleste tilfælde er det kun indstillet til exe-projektet, så der vises en fejl, når du kører i CopyPublishedApplication et andet projekt, Det er sikkert at ignorere det, fordi det kun viser en meddelelse.

Udgiv til en offentlig mappeplacering (til FTP)

Jeg har ikke prøvet det, men du vil måske henvise til følgende websteder.

Andre ting at huske på