web-dev-qa-db-fra.com

'Publish failed' mais la construction a réussi?

Lors de l'utilisation de Visual Studio 2008, lorsque je "Publie le site Web", l'application est générée correctement, mais le message "Publier échoué" s'affiche:

enter image description here

Quelles sont les raisons possibles pour cela, et comment puis-je l'éviter?

40
Curt

Puoi provare questo:

  1. Esegui la pré-compilazione contro l'applicazione web.

  2. Annuler le répertoire di destinazione (répertoire virtuel dans IIS cartouches de fichier fisica) et distribuer le fichier (Dell WebApp) dans le répertoire de destinataires.

Nella finestra di output est possible de vérifier en toute transparence l’opération de publication du site Web. À partir de maintenant, il n'y a pas de mots-clés en solo, mais il n'y a pas de choix. Vous êtes seul (e) dans le répertoire correspondant. Depuis le début, le répertoire virtuel IIS ne contient pas de version erronée. ASP.NET est déjà en cours de traitement. Vous pouvez également télécharger un fichier fichier. Pour le moment, la publication non précieuse de la loi sur la vie privéeIIS pose un problème de configuration ultérieure, procédez de la manière suivante ...

Link alla fonte

Vous pouvez après la fin de la sortieCtrl+W,O.

16
NaveenBhat

J'ai eu le même problème. Nightmare pour identifier le problème, car les journaux et les sorties ne montrent aucune erreur ou échec. Je reçois simplement "Build: 39 Successed" et "Publish: 1 failed".

J'ai résolu le problème en supprimant systématiquement tous les packages NuGet un par un (et en supprimant le code qui le référence) jusqu'à ce que j'identifie le problème.

Cela prend beaucoup de temps!

Cependant, la réponse pour moi était Microsoft.Net.Compilers .

Aucune idée de la façon dont j'ai abouti à cela dans mon projet, mais dès que j'ai supprimé ce paquet, tout est publié à nouveau. 

Modifier - Pour ce qui en vaut la peine, ce problème se produit sous VS 2008, 2012 et 2015, mais non se produit-il en 2017.

49
SimonGoldstone

Parfois, c'est parce que vous devez exécuter VS en tant qu'administrateur pour pouvoir écrire dans le répertoire cible. 

Vérifiez les messages de sortie, ils devraient vous aider à résoudre le problème

8
Nick

J'ai dû copier le projet dans C:\a\ et ensuite le publier. Je soupçonne des problèmes avec le long chemin. Étrange, mais a travaillé pour moi. 

4
vt100

Vous ne savez pas si cela se produit dans différentes versions de Visual Studio, mais au moins dans l'édition professionnelle de 2015, le problème survient lorsque nous essayons de mettre à jour tous les packages Nuget de la solution à l'aide du gestionnaire de packages. 

Comme l'a souligné @SimonGoldstone, le problème est causé par le package "Microsoft.Net.Compilers" . Par défaut, le package est ajouté à la solution lors de la création d'une nouvelle application Web. La version par défaut 1.0.0 n'introduit aucun problème. J'ai pu continuer à tester avec les dernières versions jusqu'à la version 2.4.0 et tout fonctionne bien, mais à partir de la version 2.6.0, c'est maintenant que tout commence. Si une mise à jour est strictement requise, je vous recommande de mettre à jour le paquet susmentionné jusqu'à la version 2.4.0. Après quelques recherches, il semble que certains bogues des versions ultérieures à la version 2.4.0 soient introduits et non résolus à long terme. Ce qui est curieux cependant, c’est de savoir comment ce problème a été inclus dans Nuget sans point de contrôle de contrôle de qualité de base.

2
José Lugo

La conclusion est: essayez une autre édition VS et voyez si ça y arrive.

Voici ce que cela a fait pour moi. 

J'ai VS 2013 Pro et Visual Studio 2015 Community. J'utilise en quelque sorte l'un ou l'autre pour travailler sur mon projet MVC et tout allait bien. Alors tout à coup, VS 2013 ne pouvait pas publier, mais sa construction serait parfaite. Il n'y a pas eu d'erreur autre que quelques idiots ... le code n'est pas renvoyé de tous les chemins ... 

Ainsi, lorsque je l'ouvre dans VS 2017, le même projet a été publié. Je soupçonne un problème de compilation - car c’est le stade où il échouerait. 

J'espère que cela vous aidera à gagner un peu de temps. 

2
Alexey Shevelyov

J'ai rencontré ce même problème aujourd'hui et cela était dû au fichier Thumbs.db créé lorsque j'ai ouvert mon dossier d'images pour rechercher une image. J'ai supprimé le fichier et le projet déployé avec succès. J'espère que cela aide quelqu'un d'autre dans la même situation.

1
Tammy Spencer

Assurez-vous de vider le dossier cible (manuellement) avant la publication. Parfois, vous ne pouvez pas supprimer un fichier qui entraînera un échec de publication

1
nvasquez

Vérifiez le répertoire BIN du projet. il doit y avoir un DLL de votre page ou de votre contrôle. qui doit être recréé lors de la publication. Alors excluez-le ou supprimez-le

1
Dilshad

Il existe de nombreuses solutions proposées pour cela. Je pense qu'ils compliquent excessivement le problème ... J'ai trouvé ce qui suit fonctionnait pour moi:

  1. Recherchez le dossier obj (Release ou Debug) dans votre solution.
  2. Dans le dossier Release ou Debug, supprimez le contenu du dossier 'AspnetCompileMerge'

Maintenant, essayez de publier.

0
NeilR

Après avoir essayé une reconstruction, les autres projets de ma solution capables de publier correctement et le changement de mon emplacement de publication sur le lecteur C: (connecté localement) au lieu de le pousser sur un lecteur réseau mappé, le problème persiste: m'a dit:

========== Build: 5 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

Ma solution cible x86, mais je pense que lors d’un Git Merge, ce projet avait changé son profil en Any CPU. Après avoir créé un profil x86 pour le projet et l'avoir fait correspondre à la cible de l'objectif de publication et à la configuration de la solution active, j'ai pu publier à nouveau avec succès.

0
legistrate

J'ai eu le même problème avec VS2017 avec un projet de site Web. Build a fonctionné, mais publier m'a donné une erreur: Error CS0012: The type 'System.Net.Http.HttpMessageHandler' is defined in an Assembly that is not referenced. You must add a reference to Assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Tous mes projets avaient déjà une référence à System.Net.Http, donc c'était vraiment déroutant.

Pour résoudre ce problème, je devais copier System.Net.Http.dll dans le dossier my website project/bin afin que la publication puisse le trouver et le copier sur mon hôte Web. J'ai trouvé System.Net.Http.dll en consultant les références d'un autre projet (une bibliothèque de classes), puis Propriétés System.Net.Http.dll et en affichant le chemin d'accès (C:\Program Files (x86)\Assemblies de références\Microsoft\Framework.NetFramework\v4.6\System.Net.Http.dll).

0
Scott Guillaudeu

Avec moi, c’était simple: le dossier dist était verrouillé. Je l'ai débloqué par un outil de déverrouillage et la publication a repris.

0
imlarry

je sais que je suis en retard, mais je pense que cela devrait servir à quelqu'un qui cherche cette question.

il suffit de désinstaller tous vos paquets de pépites, puis de nettoyer et de reconstruire la solution, maintenant, cliquez sur publier, assurez-vous que cela fonctionne et que la publication commence et fonctionne correctement maintenant

0
sathish v

J'ai plusieurs contrôles utilisateur qui sont inscrits dans le fichier web.config et qui ont un nom de classe dans l'en-tête du fichier .ascx. Pour les versions normales, tout fonctionne bien, mais avec une publication, ces noms de classes ne sont plus reconnus. À un moment donné, j'ai découvert que les erreurs ne figuraient pas dans mes fichiers de code normaux, mais dans des copies d'un répertoire temporaire destiné à la publication. 

J'avais activé "Précompiler lors de la publication" (à trouver sous Paramètres> Options de publication des fichiers). Désactiver cette option a fonctionné pour moi.

0
macnerd

Dans mon cas, je publiais dans un répertoire d'un lecteur réseau mappé, mais la fenêtre Output panel/indiquait que l'emplacement n'existait pas. Le chemin était correct et le lecteur était entièrement accessible. Le problème s'est résolu lorsque j'ai redéfini le chemin d'accès à la publication dans Visual Studio à l'aide du bouton ... .

0
Sam