Skift ClickOnce-indstillinger afhængigt af den valgte build-konfiguration (kun .NET Framework-version)
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 iCopyPublishedApplication
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å
- Selvom du opdeler udstedelsen af ClickOnce i flere dele, behandles objektet som det samme program, så du for eksempel ikke kan installere et program, der er offentliggjort i Debug og et program, der er udgivet med Release i det samme miljø. For at installere er det nødvendigt at træffe foranstaltninger såsom at ændre navnet på hver samling. Se venligst følgende websted for at se, hvad der er identificeret af det.