Ändra ClickOnce-inställningarna beroende på den valda byggkonfigurationen (endast .NET Framework-versionen)

Sidan uppdaterad :
Datum för skapande av sida :

miljö

ramverk
  • Windows Forms (.NET Framework) i allmänhet
  • WPF (.NET Framework) i allmänhet

premiss

Innehållet i dessa tips är projektantaganden för .NET Framework. När det gäller .NET (Core) kan du ange ClickOnce-publiceringsinställningar i byggkonfigurationsenheten, så publicera som vanligt.

Det förutsätter också att du har tillräckligt med kunskap för att använda ClickOnce normalt.

Först

Eftersom ett .NET Framework-projekt bara kan ha en ClickOnce-publiceringsinställning, Om du till exempel vill publicera med olika inställningar i en felsökningsversion och en version måste du manuellt ändra inställningarna varje gång innan du publicerar.

Du kan ha två inställningar genom att gruppera projekten i en DLL-filen och skapa två separata projekt för publicering. Du kommer att ha samma konfiguration två gånger, och om det finns resursfiler som krävs för publicering måste du ha två av dem åt gången, så hanteringen blir besvärlig.

I det här avsnittet beskrivs hur du skapar en batchfil (.bat) så många inställningar du behöver och publicerar ClickOnce.

Konfigurera ClickOnce

Den här gången separerades "Public Folder Location" och "Installation Folder URL" för "Debug Build" och "Release Build". Andra inställningar skapas med policyn att göra dem gemensamma. Andra parametrar kan vara separata, men det kan vara besvärligt att hålla "applikationsfilerna" och "förutsättningarna" åtskilda.

Öppna först projektet och ange dina ClickOnce-inställningar som vanligt. Indatainnehållet är inställt på parametrar som ska utfärdas av Debug, men allt annat än den gemensamma delen är bra så länge det inte orsakar ett fel.

Följande är ett exempel på konfigurationen:

Spara projektet när du har skrivit.

Skapa en .bat fil för ClickOnce-publicering

Eftersom det utfärdas med ett kommando kan det köras på andra medier som PowerShell, men den här gången skapas det som en BAT-fil.

Du kan skapa filen var som helst, men för enkelhetens skull skapar jag den på platsen för lösningsfilen (.sln). Eftersom det är en BAT-fil är teckenkodningen Shift-JIS. PS1 kan vara UTF-8 (BOM).

Öppna BAT-filen i en textredigerare och skriv: Observera att PowerShell kan hantera flykt på olika sätt.

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örsta raden pekar på platsen för "Developer Command Prompt". Den här sökvägen beror på vilken version av Visual Studio du installerar.

Varje del av banan beror på följande villkor:

Program filer
Banförhållanden
Program filer
  • Om du använder ett 32-bitars operativsystem
  • Om du använder en 64-bitarsversion av Visual Studio på ett 64-bitars operativsystem
Programfiler (x86)
  • Om du använder en 32-bitarsversion av Visual Studio på ett 64-bitars operativsystem
2022
Det beror på vilken version av Visual Studio du installerar.
Gemenskap
Det beror på vilken utgåva av Visual Studio du installerar. "Community", "Professional", "Enterprise" etc. kommer att anges.

Den andra raden flyttar den aktuella katalogen till platsen för BAT-filen.

Den tredje raden är kommandot ClickOnce build processing. Betydelsen av varje parameter är som följer.

beskrivning av parameternamn
msbuild Ett kommando som kör byggprocessen. Krävs och skrivs först.
Klicka påOnceBuildConfiguration.sln Beskriver filnamnet på lösningen som ska skapas.
/t:Publish Anger en ClickOnce-byggprocess.
/p:Configuration=Debug Anger den byggkonfiguration som du har angett för din lösning. Om du vill ändra felsökningskonfigurationen som ska byggas ändrar du texten i delen "Felsök".
/p:PublishUrl="publish\Debug\\" Skriv över värdet för "Plats för gemensam mapp" på Visual Studio publiceringsskärmen med den angivna strängen och kör den.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Skriv över värdet för "URL för installationsmapp" på Visual Studio publiceringsskärmen med den angivna strängen och kör den.

Några av parametrarna har extraherats, men se följande länkar för andra parametrar:

Som ett exempel den här gången kommer vi att ändra publiceringsparametrarna för ClickOnce i varje felsöknings- och lanseringsversion, så vi skapar det enligt följande.

Publicerad av 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 Publicerad .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 publicerar BAT-filkörning

Prova att köra varje BAT-fil.

Kommandotolken startas och bygget startar.

Egentligen är BAT-filen som skapades den här gången bara en process fram till bygget, så filen skapas inte på "public folder location". De filer som krävs för publicering har skapats. När det till exempel gäller en felsökningsversion bör du ha en fil i "< projektmappsökväg >\bin\Debug\app.publish\". Kopiera dessa filer till "URL för installationsmappen" så fungerar den korrekt som ClickOnce.

Publicera till en gemensam mappplats (om målet är en mapp som du har direkt åtkomst till)

Följande webbplats används som referens för denna del.

Detta område är inte direkt relaterat till behandlingen av ClickOnce, så se ovanstående webbplats för en detaljerad förklaring.

Öppna först projektfilen (.csproj) i en textredigerare. Det är inte en lösningsfil.

Inuti är en XML-struktur, och om du bläddrar till botten lägger du </Project> till följande kod i raden ovanför den. Om det är en filkopieringspremissprocess är innehållet fixat, men delen av är CopyPublishedApplication godtycklig. Du kommer att använda det här namnet senare.

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

Spara den när du har angett den.

Öppna sedan varje BAT-fil och lägg till i /t:CopyPublishedApplication msbuild-parametrarna. CopyPublishedApplication är namnet jag gav dig tidigare.

ClickOnceDebug publicerar.bat (exempel)

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ör BAT-filen kan du se att filen kopieras till platsen för den gemensamma mappen. För närvarande finns det inget < programnamn >.exe fil, men det är onödigt eftersom det ursprungligen ingår i installationen.exe.

bilaga

Om det finns flera projekt i lösningen körs för CopyPublishedApplication alla projekt. I de flesta fall är det bara inställt på exe-projektet, så ett fel visas när det körs i CopyPublishedApplication ett annat projekt, Det är säkert att ignorera det eftersom det bara visar ett meddelande.

Publicera till en gemensam mappplats (för FTP)

Jag har inte provat det, men du kanske vill hänvisa till följande webbplatser.

Andra saker att tänka på