Comment trouver la raison de l'échec de la construction sans erreur ni avertissement

145

J'ai une WebApplication qui contient une référence aux services WCF.

Lors de la création à l'aide de Visual Studio 2010, la génération échoue sans erreur ni avertissement. Cependant, la construction de l' .csprojutilisation MsBuildest réussie.

Je ne sais pas ce que je dois essayer dans Visual Studio pour résoudre / diagnostiquer le problème. Pouvez-vous nous aider?

ÉDITER:

Je découvre que la construction a échoué,

  1. À partir du texte affiché dans la barre d'état.
    entrez la description de l'image ici

  2. Depuis la fenêtre de sortie:

    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
Abhijeet
la source
5
comment savez-vous que votre build échoue?
Sam I am dit Réintégrer Monica
5
Y a-t-il quelque chose dans l'onglet Sortie?
Malice du
15
Essayez d'augmenter la verbosité de la fenêtre de sortie dans Visual Studio. Cela peut aider à déterminer le problème. Comment augmenter le niveau de verbosité: blogs.msdn.com/b/saraford/archive/2008/10/07/…
Maxim Kornilov
6
Avez-vous essayé de redémarrer VS2010 ou même de redémarrer votre PC?
comecme
2
@NahuelI. J'ai eu à nouveau un problème similaire dans un autre projet, quand j'ai cherché stackoverflow, j'ai reçu ma propre question :-)
Abhijeet

Réponses:

120

Je viens de rencontrer une situation similaire. Dans mon cas, une action personnalisée (du package MSBuildVersioning disponible sur Nuget.org - http://www.nuget.org/packages/MSBuildVersioning/ ) qui apparaissait dans la cible BeforeBuild du fichier csproj échouait sans déclencher de message d'erreur dans le endroit normal.

J'ai pu déterminer cela en définissant la "verbosité de sortie de la génération de projet MSBuild" (dans le dernier onglet Outils de Visual Studio [Chemin: Outils> Options> Générer et exécuter ]) sur " Diagnostic " comme indiqué ci-dessous. Cela a ensuite montré que l'action personnalisée (dans mon cas HgVersionFile) était ce qui avait échoué.

Capture d'écran de Visual Studio montrant le paramètre modifié.

Richard J Foster
la source
2
Excellente trouvaille Richard - Informations vraiment utiles lorsque vous définissez les deux niveaux de verbosité sur diagnostic
Dai Bok
3
Pour tous ceux qui n'ont aucune idée comme moi: pour utiliser cette méthode, vous devrez peut-être rechercher le contenu de la fenêtre de sortie. Mes erreurs de construction étaient masquées par des #pragma warning disableinstructions et n'étaient visibles que lorsque je cherchais «erreur» dans la fenêtre de sortie.
sirdank
Après avoir défini ma verbosité sur diagnostic, j'ai découvert que j'obtenais une exception System.OutOfMemoryException. J'utilisais 98% de la mémoire disponible de mon ordinateur. C'est une excellente réponse!
TxRegex
1
Cela résout également le problème sur VisualStudio 2017. Merci beaucoup.
H.Aydin
1
Pour moi, j'utilisais Queue New Build pour construire sur TFS et la boîte de dialogue Queue Build a une verbosité sur le deuxième onglet que je pourrais afficher et voir le problème dans le journal de construction.
AaronLS
136

Build + Intellisense a avalé les messages d'erreur. La sélection de Build Only les a affichés.

Capture d'écran

Abu Abdullah
la source
Je viens de me retrouver dans une situation où aucune de ces erreurs ne montre :(
Imad
1
Wow, cela a fonctionné pour moi comment diable est-ce une chose dans la nouvelle version de VS 2019. Merci mec!
Carter le
1
@AbuAbdullah a travaillé pour moi. Bon travail pour aider les autres.
nam
merci, sauvé ma journée
Bikram Limbu
59
  • Si la solution contient plusieurs projets, essayez de les créer un par un.
  • Essayez de redémarrer Visual Studio.
  • Essayez de redémarrer l'ordinateur.
  • Essayez " Tout reconstruire "
  • Essayez « Clean Solution » puis supprimez vos fichiers « vspscc » et « vssscc », puis redémarrez Visual Studio, puis « Rebuild All ».
Sasse
la source
105
Et quand ça n'aide pas, devrais-je simplement trouver un nouvel emploi?
Alex Zhukovskiy
2
Le redémarrage de VS2013 m'a aidé. Je travaillais sur une machine virtuelle avec des ressources limitées mais je ne sais pas si cela a quelque chose à voir avec cela.
Jmaurier
2
Vous ne pouvez pas nettoyer la solution si vous rencontrez ce problème.
H.Aydin
1
Ce qui m'a aidé, c'est de fermer toutes les instances de VS (pas assez pour fermer celle défectueuse), puis de supprimer le .vsdossier et de redémarrer VS.
EliSherer
22

Le redémarrage de VS (2013 Pro, Win 8.1) l'a fait pour moi.

Ignas Vyšnia
la source
VS 2015 Community Win 7 avec un seul projet MVC. Même résolution.
maplemale
2
VS 2017 Community Win 10. Je suppose que je devrais essayer de l'éteindre et de le rallumer avant de chercher une solution!
DreamTeK
12

Supprimer le dossier .vs et redémarrer VS, a fonctionné pour moi

entrez la description de l'image ici

Arun Prasad ES
la source
9

Je veux développer la réponse de Sasse .

Pour résoudre le problème avec Visual Studio 2015 Update 2, j'ai dû créer chaque projet un à la fois et regarder la fenêtre de sortie après chaque génération.

Un projet m'a donné

"Le type ou le nom d'espace de noms 'SomeNamespace' n'existe pas dans l'espace de noms 'BeforeSomeNamespace' (vous manquez une référence d'assembly?)".

Il n'y avait aucune erreur dans la fenêtre Liste d'erreurs mais l'assembly avait un panneau d'avertissement jaune sous «Références».

J'ai alors vu que le projet de référencement ciblait 4.5.1 et le projet référencé 4.6.1. La modification de 4.6.1 en 4.5.1 a permis à la compilation globale de réussir.

user764754
la source
1
Eh bien, construire un projet à la fois n'est peut-être pas nécessaire, mais une chose est sûre: regardez attentivement la fenêtre de sortie (mieux encore, copiez / collez-la dans le bloc-notes et utilisez Ctrl + F trouver) pour un mot «manquant». Cela n'apparaît pas dans la liste des erreurs, mais cela brise certainement votre solution. -.-
Dovydas Navickas
5

Rien ne fonctionnait pour moi, j'ai donc supprimé le fichier .suo, redémarré VS, nettoyé le projet, puis la construction fonctionnait.

Andy
la source
5

Il semble qu'il y ait plusieurs réponses à cette question, je vais donc ajouter la mienne à partir de mon expérience personnelle en espérant que cela fera gagner du temps / du stress à quelqu'un.

Assurez-vous que tous les projets de votre solution ciblent la même version .NET.

Semblable à OP, il y avait 0 erreur mais la construction échouait toujours. Cependant, il y avait une entrée d'avertissement (enterrée entre plusieurs centaines d'avertissements XML inutiles ...) indiquant qu'un projet ciblait une version .NET différente de celle d'un projet qui le référençait. Le problème entier était qu'un projet de ma solution ciblait .NET 4.5.2, alors que les autres ciblaient 4.5.1. Il devrait fonctionner même avec cette différence (d'où la raison pour laquelle ce n'était qu'un avertissement) mais malheureusement, cela a cassé la construction.

La partie étrange était que la construction / fonctionnait correctement pendant un certain temps, mais tout à coup, la construction a commencé à échouer une fois, ce qui a causé ce problème. Je ne sais pas ce que j'ai fait pour qu'il commence à se plaindre des différentes versions de la cible .NET, mais je pense qu'il y a juste quelques mystères dans Visual Studio qui ne seront jamais résolus.

Alan Thomas
la source
1
Il s'avère que j'avais ajouté un nouveau projet et qu'il avait une version de framework cible .Net différente - j'ai corrigé cela et, bien que la construction ait toujours échoué, j'ai ensuite pu voir l'erreur qui cassait la construction. Merci.
Fijjit
4

Aller à la fenêtre de sortie, rechercher 'erreur' dans la fenêtre de sortie, TADA

Mahdi Khalili
la source
3

Tout d'abord "Nettoyez la solution", puis Reconstruisez soln.

Si cela ne fonctionne pas, fermez la solution et redémarrez la solution.

Essayez ces choses, l'espoir fonctionne définitivement.

Santosh K
la source
3

Une autre possibilité est que Visual Studio doit s'exécuter en tant qu'administrateur, cela peut être lié au déploiement sur un serveur IIS local ou à un autre besoin de déploiement.

Bill Yang
la source
3

cela peut se produire lorsque l'un des projets référencés est une version supérieure du framework .NET à votre projet actuel.

mcmillab
la source
3

J'ai eu ce même problème et j'ai retracé ce problème jusqu'aux options de la liste d'erreurs "Build + Intellisense".

Si cette option est sélectionnée, aucune erreur n'est affichée dans la liste. Basculez vers " Build Only " et les erreurs apparaissent comme prévu.

Cela ressemble à un bogue dans Visual Studio. Le redémarrage du studio visuel a résolu ce problème .

Christlin Panneer
la source
2

J'ai eu un problème similaire après avoir ajouté un nouveau projet (appelé "TestCleaner") à ma solution: la construction a échoué, aucune erreur.

J'ai augmenté la verbosité de sortie (voir les instructions de Richard J Foster) et recherché la sortie pour "échoué". J'ai rapidement découvert quel projet échouait et pourquoi: le projet "TestRunner" avait échoué avec " erreur CS0246: Le type ou le nom de l'espace de noms" TestCleaner "est introuvable" (même si aucun problème n'a été mis en évidence dans le code).

En vérifiant les références de TestRunner, bien sûr, la référence à TestCleaner était marquée comme non résolue et le chemin était absent des propriétés de référence. La suppression et la réajout n'ont pas résolu le problème. Encore une fois, aucune explication pourquoi.

référence non résolue

J'ai finalement découvert la cause: "TestCleaner" utilisait un framework cible différent des autres projets. C'était .Net 4.5.2; les autres étaient de 4,5.

Ben Whitmore
la source
2

Juste pour terminer et peut-être aider quelqu'un à rencontrer à nouveau la même erreur à l'avenir, j'utilisais l'interface métropolitaine de Mahapps et j'ai changé le XAML d'une fenêtre, mais j'ai oublié de changer la classe partielle dans le code-behind. Dans ce cas, la construction a échoué sans erreur ni avertissement, et j'ai pu le découvrir en augmentant la verbosité de la sortie des paramètres:

Volet d'erreur

volet de sortie

mcy
la source
5
sélectionnez également «build only» et non «build + intellisense» dans le filtre des erreurs.
niico
2

J'ai eu le même problème. La fenêtre de la liste des erreurs comporte 2 listes déroulantes «Afficher les éléments contenus par» et «Afficher les problèmes générés». Ces noms sont visibles après avoir survolé la liste déroulante. La liste déroulante "Afficher les problèmes générés" a été définie sur "Build + IntelliSense" et après avoir changé en "Build Only", les erreurs sont apparues dans la liste.

Jakubiszon
la source
2

Pour moi, Target Frameworkc'était le problème.

Mon projet Target Frameworkétait 4.5.2et le projet référencé l' Target Frameworkétait 4.6.1.

Une fois que j'ai mis à jour mon projet Target Frameworken 4.6.1, le problème a été résolu.

Ankush Jain
la source
1

J'ai fait face au même problème! Supprimez simplement le dossier bin et redémarrez votre fichier VS. C'est tout. testé en VS 2013.

John
la source
Lorsque j'ai tenté de résoudre ce problème en supprimant le dossier bin et obj, cela a été corrigé. J'avais également besoin des droits d'administrateur pour supprimer le dossier obj, donc quelque chose de très étrange s'était produit.
DAG
1

Ce qui l'a résolu pour moi a été de supprimer le .vsdossier de la racine de la solution et de redémarrer Visual Studio.

Il peut également être important de dire que même si les erreurs n'apparaissaient pas dans le volet Liste des erreurs, elles étaient toujours présentes dans la sortie de la construction.

Ronald Rey
la source
1

Essayez de créer votre projet à partir de la ligne de commande Powershell:

dotnet build

Ensuite, vous pouvez voir toutes les erreurs dans la sortie de ligne de commande, même si Visual Studio joue à cache-cache avec des messages d'erreur de génération.

user3810867
la source
0

Cela m'est arrivé après avoir ajouté une nouvelle page à un projet asp.net.

Ce que j'ai fait, c'est d'exclure la page, de la reconstruire avec succès.

Ensuite, j'ai rajouté la page avec tout le code commenté. Succès.

Ensuite, j'ai décommenté le code petit à petit, puis tout a fonctionné.

Toddmo
la source
0

J'ai eu le même problème après avoir supprimé quelques formulaires. Les erreurs sont apparues une fois que je suis entré dans le code et que j'ai fait un "Afficher la définition" pour l'un des contrôles que j'ai supprimés.

Je visais également un cadre plus élevé sur l'un de mes projets, alors cela aurait pu aussi être le problème.

Dennis Kuypers
la source
0

J'ai tout essayé mais rien n'a fonctionné dans mon cas, puis j'ai changé ces paramètres mentionnés qui ont très bien résolu le problème pour moi. Essayez si cela pouvait aider les derniers téléspectateurs. Ces paramètres peuvent varier selon votre situation, mais assurez-vous de créer toutes les DLL incluses avec les mêmes paramètres de configuration que vous avez initialement conservés (mentionnés dans l'image.).Paramètres de configuration

Image ici.

À votre santé!

Iqra.
la source
0

Si le package nuget 'Microsoft.Net.Compilers' est installé, assurez-vous qu'il convient à la version de votre Visual Studio (version Build Tools).

Les versions 1.x signifient C # 6.0 (Visual Studio 2015 et mises à jour). Par exemple, 1.3.2

Donc, ne passez pas à la version supérieure à 1.x si vous utilisez VS2015

https://stackoverflow.com/a/44397905/3862615

Romain M
la source
0

J'avais un projet vraiment ancien sur une machine plus ancienne. Le projet se construisait correctement lorsque j'ai éteint la machine. Aujourd'hui, je reçois une erreur de construction mais aucun message d'erreur. Après avoir essayé quelques suggestions d'en haut, pas de chance.

Dans Visual Studio 2015, j'ai activé MSBuild détaillé sous TOOLS> Options> Projects and Solutions> Build and Run

Cela m'a donné quelques détails sur la construction, mais aucune erreur. Après cela, j'ai essayé de vérifier les extensions et les mises à jour (Outils> Extension et mises à jour) et j'ai trouvé que quelques-unes d'entre elles avaient besoin de mises à jour.

Nuget Package était coupable, après la mise à jour de Nuget - la construction a réussi.

entrez la description de l'image ici

épicé
la source
0

Cela peut être dû à une différence de version de reportviewer dans votre projet et VS

Roohi Ali
la source
3
Ceci est un commentaire
Ivan Kaloyanov
0

Étant donné que tout n'a pas fonctionné, a constaté que les erreurs ne s'affichent pas lors de l'ouverture du projet en tant que solution (.sln), tandis que l'erreur s'affiche lors de l'ouverture du projet en tant que projet.

Mosta
la source
0

J'ai eu le même problème, j'ai changé Outils -> Options -> Projets et solutions / Construire et exécuter -> Verbosité du fichier journal de construction du projet MSBuild [ Diagnostic ]. Cette option affiche une erreur dans le journal, pour certaines raisons, mon VS n'affiche pas l'erreur dans l'onglet Erreurs!

entrez la description de l'image ici

Faites les paramètres ci-dessus et dans la copie de sortie dans le bloc-notes / éditeur de texte et recherchez l'erreur. Il vous montrera toutes les erreurs.

Jenish Zinzuvadiya
la source
0

Le redémarrage de Visual Studio a fonctionné pour moi. Essayez également de redémarrer Visual Studio normalement (ne pas exécuter en tant qu'administrateur). Essayez de redémarrer le système et répétez l'étape ci-dessus.

Juned Khan Momin
la source
0

Une manière différente de reproduire ce symptôme:

J'ai ajouté un nouveau projet à une solution existante et la sortie de construction a signalé des erreurs telles que "le type ou le nom de l'espace de noms X n'a ​​pas pu être trouvé ..." mais aucune erreur n'a été présentée dans la liste des erreurs.

Les classes auxquelles j'ai fait référence étaient dans d'autres projets (qui ont été référencés) dans la même solution.

Il s'est avéré que j'avais sélectionné par erreur une version antérieure de .net dans le nouveau projet. Une fois que j'ai changé pour la même version que les autres projets, tout s'est construit sans aucune erreur.

Devosaure
la source