Modifier les paramètres ClickOnce en fonction de la configuration de build sélectionnée (version du .NET Framework uniquement)

Page mise à jour :
Date de création de la page :

environnement

cadre
  • Windows Forms (.NET Framework) en général
  • WPF (.NET Framework) en général

prémisse

Le contenu de ces conseils est constitué d’hypothèses de projet pour le .NET Framework. Dans le cas de .NET (Core), vous pouvez définir les paramètres de publication ClickOnce dans l’unité de configuration de build, veuillez donc publier comme d’habitude.

Il suppose également que vous avez suffisamment de connaissances pour utiliser ClickOnce normalement.

Au début

Étant donné qu’un projet .NET Framework ne peut avoir qu’un seul paramètre de publication ClickOnce, Par exemple, pour publier avec des paramètres différents dans une build Debug et une Release build, vous devez modifier manuellement les paramètres à chaque fois avant la publication.

Vous pouvez avoir deux paramètres en regroupant les projets dans une DLL et en créant deux projets distincts pour la publication. Vous aurez la même configuration deux fois, et s’il y a des fichiers de ressources nécessaires pour la publication, vous devez en avoir deux à la fois, donc la gestion sera gênante.

Cette section décrit comment créer un fichier de commandes (.bat) autant de paramètres que nécessaire et publier ClickOnce.

Configuration de ClickOnce

Cette fois, « Emplacement du dossier public » et « URL du dossier d’installation » ont été séparés pour « Debug Build » et « Release Build ». D’autres paramètres sont créés avec la politique de les rendre communs. D’autres paramètres peuvent être séparés, mais il peut être fastidieux de séparer les « fichiers d’application » et les « prérequis ».

Tout d’abord, ouvrez le projet et entrez vos paramètres ClickOnce comme d’habitude. Le contenu de l’entrée est défini sur les paramètres à émettre par Debug, mais tout ce qui n’est pas la partie commune est correct tant qu’il ne provoque pas d’erreur.

Voici un exemple de configuration :

Une fois que vous avez tapé, enregistrez le projet.

Créer un fichier .bat pour la publication ClickOnce

Comme il est émis avec une commande, il peut être exécuté sur d’autres supports tels que PowerShell, mais cette fois, il est créé en tant que fichier BAT.

Vous pouvez créer le fichier n’importe où, mais pour des raisons de simplicité, je vais le créer à l’emplacement du fichier solution (.sln). Comme il s’agit d’un fichier BAT, l’encodage des caractères est Shift-JIS. PS1 peut être UTF-8 (BOM).

Ouvrez le fichier BAT dans un éditeur de texte et tapez : Notez que PowerShell peut gérer l’échappement différemment.

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

La première ligne pointe vers l’emplacement de « Developer Command Prompt ». Ce chemin dépend de la version de Visual Studio que vous installez.

Chaque partie du chemin dépend des conditions suivantes :

Fichiers programme
Conditions de chemin
Fichiers programme
  • Si vous utilisez un système d’exploitation 32 bits
  • Si vous utilisez une version 64 bits de Visual Studio sur un système d’exploitation 64 bits
Program Files (x86)
  • Si vous utilisez une version 32 bits de Visual Studio sur un système d’exploitation 64 bits
2022
Cela dépend de la version de Visual Studio que vous installez.
Communauté
Cela dépend de l’édition de Visual Studio que vous installez. « Communauté », « Professionnel », « Entreprise », etc. seront saisis.

La deuxième ligne déplace le répertoire actif vers l’emplacement du fichier BAT.

La troisième ligne est la commande clickOnce build processing. La signification de chaque paramètre est la suivante.

description du nom du paramètre
msbuild Commande qui exécute le processus de génération. Obligatoire et écrit en premier.
ClickOnceBuildConfiguration.sln Décrit le nom de fichier de la solution à générer.
/t:Publish Indique un processus de génération ClickOnce.
/p:Configuration=Debug Spécifie la configuration de build que vous avez définie pour votre solution. Si vous souhaitez modifier la configuration de débogage à générer, modifiez le texte dans la partie « Déboguer ».
/p:PublishUrl="publish\Debug\\" Remplacez la valeur « Emplacement des dossiers publics » sur l’écran de publication Visual Studio par la chaîne spécifiée et exécutez-la.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Remplacez la valeur de « URL du dossier d’installation » sur l’écran de publication Visual Studio par la chaîne spécifiée et exécutez-la.

Certains des paramètres ont été extraits, mais consultez les liens suivants pour d’autres paramètres :

En tant qu’exemple cette fois, nous allons modifier les paramètres de publication de ClickOnce dans chaque version de débogage et de version, nous allons donc le créer comme suit.

Publié par 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 Publié .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 publie l’exécution de fichiers BAT

Essayez d’exécuter chaque fichier BAT.

L’invite de commande est lancée et la génération démarre.

En fait, le fichier BAT créé cette fois n’est qu’un processus jusqu’à la génération, de sorte que le fichier n’est pas créé dans le « emplacement du dossier public ». Les fichiers nécessaires à la publication ont été créés. Par exemple, dans le cas d’une version de débogage, vous devez avoir un fichier dans le chemin d’accès au dossier du projet < >\bin\Debug\app.publish\ ». Copiez ces fichiers dans l'"URL du dossier d’installation » et cela fonctionnera correctement en tant que ClickOnce.

Publier dans un emplacement de dossier public (si la destination est un dossier auquel vous avez un accès direct)

Le site suivant est utilisé comme référence pour cette partie.

Cette zone n’est pas directement liée au traitement de ClickOnce, veuillez donc vous référer au site ci-dessus pour une explication détaillée.

Tout d’abord, ouvrez le fichier projet (.csproj) dans un éditeur de texte. Il ne s’agit pas d’un fichier solution.

À l’intérieur se trouve une structure XML, et si vous faites défiler vers le bas, ajoutez le </Project> code suivant à la ligne au-dessus. S’il s’agit d’un processus local de copie de fichier, le contenu est fixe, mais la partie de est CopyPublishedApplication arbitraire. Vous utiliserez ce nom plus tard.

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

Enregistrez-le une fois que vous l’avez entré.

Ouvrez ensuite chaque fichier BAT et ajoutez-le /t:CopyPublishedApplication aux paramètres msbuild. CopyPublishedApplication est le nom que je vous ai donné plus tôt.

ClickOnceDebug publie.bat (exemple)

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

Lorsque vous exécutez le fichier BAT, vous pouvez voir que le fichier est copié dans l’emplacement des dossiers publics. À l’heure actuelle, il n’y a pas de nom de programme < >.exe fichier, mais il est inutile car il est initialement inclus dans le programme d’installation.exe.

supplément

S’il y a plusieurs projets dans la solution, s’exécute CopyPublishedApplication pour tous les projets. Dans la plupart des cas, il est uniquement défini sur le projet exe, de sorte qu’une erreur s’affichera lors de l’exécution dans CopyPublishedApplication un autre projet, Il est prudent de l’ignorer car il n’affiche qu’un message.

Publier dans un emplacement de dossier public (pour FTP)

Je ne l’ai pas essayé, mais vous voudrez peut-être vous référer aux sites suivants.

Autres choses à garder à l’esprit