Impossible d'appliquer les propriétés de publication pour l'élément X

89

Chaque fois que nous faisons une compilation dans notre solution principale, nous recevons l'avertissement suivant:

Impossible d'appliquer les propriétés de publication pour l'élément "microsoft.visualstudio.qualitytools.unittestframework".

Quelqu'un a-t-il déjà vu quelque chose comme ça? Des idées pour résoudre le problème? Cela se produit sur toutes nos machines de développement ainsi que sur notre serveur de build TFS. Cependant, il n'apparaît qu'en mode débogage.

Jonathan Nixon
la source

Réponses:

164

Il semble que le problème soit lié à ClickOnce. Accédez au projet, faites un clic droit dessus et cliquez sur les propriétés. Allez dans l'onglet Publier et cliquez sur Fichiers d'application. Cochez la case "Afficher tous les fichiers" et faites défiler la liste des fichiers. Finalement, vous rencontrerez le fichier qui a un point d'exclamation jaune dessus. Ce fichier est orphelin et doit être supprimé. Faites un clic droit sur le fichier et il devrait y avoir une option de suppression.

Maintenant, construisez la solution et l'avertissement devrait disparaître.

Jonathan Nixon
la source
13
C'est deux fois que j'ai recherché ce problème sur Google et trouvé cette réponse. Finalement, j'apprendrai. : p
Nick Spreitzer
4
Show all filesest la clé ici.
MEMark
4
@NickSpreitzer Troisième fois pour moi. Cette fois, j'ai même été surpris par mon propre commentaire.
MEMark
Vous pouvez également mettre à jour votre fichier csproj en prenant soin de la section «PublishFile». Bien sûr, cela doit être fait très soigneusement.
Jerome
3

La réponse la plus votée est parfaite telle qu'elle est, mais ceux d'entre nous qui font face à des explosions plus importantes peuvent bénéficier de cette réponse alternative. Il décrit un correctif analogue au niveau du fichier.

L'avertissement est causé par un élément comme celui-ci:

<PublishFile Include="THIS IS USUALLY SOME IMAGINARY DLL">
  <Visible>False</Visible>
  <Group>
  </Group>
  <TargetPath>
  </TargetPath>
  <PublishState>Exclude</PublishState>
  <IncludeHash>True</IncludeHash>
  <FileType>Assembly</FileType>
</PublishFile>

... dans le fichier projet (.csproj) émettant l'avertissement. Notez le PublishState "Exclude"; cet élément dit "veuillez ne pas publier la DLL imaginaire"; il s'agit évidemment d'une instruction inutile si aucune DLL de ce type n'est présente au moment de la publication, mais elle provoque également l'avertissement car le processus de publication ne peut pas évaluer l'identité du fichier.

Vous pouvez supprimer l'intégralité de l' PublishFileélément pour chaque élément de déploiement mentionné dans les avertissements, à condition qu'il ait PublishState "Exclude". Ne supprimez pas mécaniquement tous les éléments avec PublishState "Exclude", car s'il n'y avait pas d'avertissement à ce sujet, le fichier est probablement disponible au moment de la publication et il pourrait finir par être publié - ce qui serait un changement de produit indésirable tant que vous ne vouliez que débarrassez-vous de l'avertissement.

Jirka Hanika
la source