Zmień ustawienia ClickOnce w zależności od wybranej konfiguracji kompilacji (tylko wersja .NET Framework)

Strona zaktualizowana :
Data utworzenia strony :

środowisko

szkielet
  • Windows Forms (.NET Framework) w ogólności
  • WPF (.NET Framework) ogólnie

przesłanka

Zawartość tych porad jest założeniami projektu dla programu .NET Framework. W przypadku .NET (Core) możesz ustawić ustawienia publikowania ClickOnce w jednostce konfiguracji kompilacji, więc opublikuj jak zwykle.

Zakłada również, że masz wystarczającą wiedzę, aby normalnie korzystać z ClickOnce.

Na początku

Ponieważ projekt .NET Framework może mieć tylko jedno ustawienie publikowania ClickOnce, Na przykład, aby publikować z różnymi ustawieniami w kompilacji debugowania i kompilacji wydania, należy ręcznie zmienić ustawienia za każdym razem przed opublikowaniem.

Możesz mieć dwa ustawienia, grupując projekty w bibliotekę DLL i tworząc dwa oddzielne projekty do opublikowania. Będziesz miał tę samą konfigurację dwa razy, a jeśli istnieją pliki zasobów niezbędne do publikowania, musisz mieć dwa z nich naraz, więc zarządzanie będzie kłopotliwe.

W tej sekcji opisano sposób tworzenia pliku wsadowego (.bat) tylu ustawień, ile potrzeba i publikowania ClickOnce.

Konfigurowanie ClickOnce

Tym razem "Lokalizacja folderu publicznego" i "Adres URL folderu instalacyjnego" zostały oddzielone dla "Debug Build" i "Release Build". Inne ustawienia są tworzone zgodnie z zasadą ich upowszechniania. Inne parametry mogą być oddzielne, ale może być kłopotliwe, aby zachować oddzielne "pliki aplikacji" i "wymagania wstępne".

Najpierw otwórz projekt i wprowadź ustawienia ClickOnce jak zwykle. Zawartość wejściowa jest ustawiona na parametry, które mają być wydawane przez Debug, ale wszystko inne niż wspólna część jest w porządku, o ile nie powoduje błędu.

Poniżej przedstawiono przykład konfiguracji:

Po wpisaniu zapisz projekt.

Tworzenie pliku .bat dla publikowania ClickOnce

Ponieważ jest wydawany z poleceniem, może być wykonywany na innych nośnikach, takich jak PowerShell, ale tym razem jest tworzony jako plik.

Możesz utworzyć plik w dowolnym miejscu, ale dla uproszczenia utworzę go w lokalizacji pliku rozwiązania (.sln). Ponieważ jest to plik, kodowanie znaków to Shift-JIS. PS1 może być UTF-8 (BOM).

Otwórz plik w edytorze tekstu i wpisz: Zauważ, że PowerShell może radzić sobie z ucieczką inaczej.

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

Pierwszy wiersz wskazuje lokalizację "Developer Command Prompt". Ta ścieżka zależy od wersji instalowanego programu Visual Studio.

Każda część ścieżki zależy od następujących warunków:

Pliki programów
Warunki ścieżki
Pliki programów
  • Jeśli używasz 32-bitowego systemu operacyjnego
  • Jeśli używasz 64-bitowej wersji programu Visual Studio w 64-bitowym systemie operacyjnym
Programy Plików (x86)
  • Jeśli używasz 32-bitowej wersji programu Visual Studio w 64-bitowym systemie operacyjnym
2022
To zależy od wersji instalowanego programu Visual Studio.
Społeczność
To zależy od instalowanej wersji programu Visual Studio. Zostaną wprowadzone "Społeczność", "Professional", "Enterprise" itp.

Drugi wiersz przenosi bieżący katalog do lokalizacji pliku.

Trzeci wiersz to polecenie przetwarzania kompilacji ClickOnce. Znaczenie każdego parametru jest następujące.

opis nazwy parametru
msbuild Polecenie, które wykonuje proces kompilacji. Wymagane i napisane jako pierwsze.
ClickOnceBuildConfiguration.sln W tym artykule opisano nazwę pliku rozwiązania, które ma zostać skompilowane.
/t:Publish Wskazuje proces kompilacji ClickOnce.
/p:Configuration=Debug Określa konfigurację kompilacji ustawioną dla rozwiązania. Jeśli chcesz zmienić konfigurację debugowania, która ma zostać skompilowana, zmień tekst w części "Debugowanie".
/p:PublishUrl="publish\Debug\\" Zastąp wartość "Lokalizacja folderu publicznego" na ekranie publikowania programu Visual Studio określonym ciągiem i wykonaj go.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Zastąp wartość "Adres URL folderu instalacyjnego" na ekranie publikowania programu Visual Studio określonym ciągiem i wykonaj go.

Niektóre parametry zostały wyodrębnione, ale zobacz następujące łącza dla innych parametrów:

Jako przykład tym razem zmienimy parametry publikowania ClickOnce w każdej kompilacji debugowania i wydania, więc utworzymy ją w następujący sposób.

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

Opublikowana .bat ClickOnceRelease

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 publikuje wykonanie pliku

Spróbuj uruchomić każdy plik.

Zostanie uruchomiony wiersz polecenia i rozpocznie się kompilacja.

W rzeczywistości plik utworzony tym razem jest tylko procesem do kompilacji, więc plik nie jest tworzony w lokalizacji folderu publicznego. Pliki niezbędne do publikacji zostały utworzone. Na przykład w przypadku kompilacji debugowania powinieneś mieć plik w ścieżce folderu "< projektu >\bin\Debug\app.publish\". Skopiuj te pliki do "adresu URL folderu instalacyjnego", a będzie działać poprawnie jako ClickOnce.

Publikowanie w lokalizacji folderu publicznego (jeśli miejscem docelowym jest folder, do którego masz bezpośredni dostęp)

Poniższa strona jest używana jako odniesienie dla tej części.

Ten obszar nie jest bezpośrednio związany z przetwarzaniem ClickOnce, dlatego prosimy o zapoznanie się z powyższą stroną w celu uzyskania szczegółowego wyjaśnienia.

Najpierw otwórz plik projektu (.csproj) w edytorze tekstu. Nie jest to plik rozwiązania.

Wewnątrz znajduje się struktura XML, a jeśli przewiniesz w dół, dodaj </Project> następujący kod do wiersza nad nim. Jeśli jest to proces lokalizacji kopii pliku, zawartość jest stała, ale część jest CopyPublishedApplication dowolna. Tej nazwy użyjesz później.

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

Zapisz go po wprowadzeniu.

Następnie otwórz każdy plik i dodaj do /t:CopyPublishedApplication msbuild parametry. CopyPublishedApplication to imię, które nadałem ci wcześniej.

ClickOnceDebug publikuje.bat (przykład)

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

Po uruchomieniu pliku widać, że plik jest kopiowany do lokalizacji folderu publicznego. W tej chwili nie ma < nazwy programu >.exe pliku, ale jest to niepotrzebne, ponieważ jest pierwotnie zawarte w instalatorze.exe.

dodatek

Jeśli w rozwiązaniu znajduje się wiele projektów, działa CopyPublishedApplication dla wszystkich projektów. W większości przypadków jest on ustawiony tylko na projekt exe, więc błąd zostanie wyświetlony podczas uruchamiania w CopyPublishedApplication innym projekcie, Można go bezpiecznie zignorować, ponieważ wyświetla tylko komunikat.

Publikowanie w lokalizacji folderu publicznego (dla FTP)

Nie próbowałem tego, ale możesz odwołać się do następujących witryn.

Inne rzeczy, o których należy pamiętać