0

J'ai ajouté les transformations app.config à une application client Windows Forms existante qui utilise la publication ClickOnce et qui ne sera plus publiée. Message d'erreur:Winforms La publication de ClickOnce échoue avec les transformations app.config

"obj \ Release \ Client.csproj.App.config; obj \ Release \ MyAppName.exe.config" est une valeur non valide pour le paramètre "ConfigFile" de la tâche "GenerateApplicationManifest" . Plusieurs éléments ne peuvent pas être passés dans un paramètre de type « Microsoft.Build.Framework.ITaskItem »

Quand je Décochez la case « Activer les paramètres de sécurité ClickOnce » (propriétés du projet> Sécurité), le projet construira et exécuter à partir de Visual Studio 2015 sans cette erreur, mais lorsque j'essaie de publier en utilisant ClickOnce, l'erreur renvoie. L'activation de la sécurité entraîne la non-construction du projet. De toute façon, l'erreur est la même.

Le fichier app.config est défini sur "Toujours copier".

J'ai essayé de supprimer le certificat clickonce et d'en installer un nouveau sans différence de symptômes.

Notez qu'il s'agit d'une application Windows Forms et non d'une application Web. Les transformations ont été créées en utilisant l'extension Configuration Transform (fonctionne de la même manière que SlowCheetah). J'ai utilisé cette configuration pour d'autres applications avec succès, et jusqu'à présent, je n'ai pas trouvé de différence dans les paramètres entre cette application et ceux qui ont réussi.

Cette section du fichier .csproj semble être liée à la question:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
     <Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')"> 
     <!--Generate transformed app config in the intermediate directory--> 
     <TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" /> 
     <!--Force build process to use the transformed configuration file from now on.--> 
     <ItemGroup> 
      <AppConfigWithTargetPath Remove="App.config" /> 
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config"> 
      <TargetPath>$(TargetFileName).config</TargetPath> 
      </AppConfigWithTargetPath> 
     </ItemGroup> 
     </Target> 

Un autre poste a suggéré de supprimer le nœud ItemGroup. Lorsque je fais cela, le projet génère et s'exécute dans VS et peut être publié dans un emplacement de test, mais la transformation app.config ne se produit pas.

+0

Mise à jour: pour que la publication se fasse rapidement, j'ai supprimé les transformations en faveur d'un app.config de base pour le moment. Je préférerais quand même résoudre le problème d'origine et utiliser les transformations. – jshockwave

Répondre

0

Résolu: ces problèmes étaient dus au fait que Microsoft.Bcl ne jouait pas bien avec les transformations de config et la publication ClickOnce ensemble. Cette application a été créée avec .NET 4 en utilisant Bcl afin d'utiliser le modèle async/await lors de l'exécution sur les anciennes machines XP. Nos utilisateurs ont mis à jour Windows 7 & depuis lors, donc j'ai pu mettre à jour l'application vers .NET 4.5.2 et supprimer les paquets Bcl. Avec Bcl parti, le problème est complètement résolu. (Il peut y avoir une sorte de piratage pour que Bcl fonctionne correctement avec les transformations de config et clickonce, mais puisque j'ai été en mesure de mettre à jour, je ne le poursuis pas plus loin).