J'ai une application Web qui contient une référence aux services WCF.
Lors de la génération à l'aide de Visual Studio 2010, la génération échoue sans erreur ni avertissement. Cependant, la construction de .csproj
à l'aide de MsBuild
réussit.
Je ne peux pas comprendre ce que je devrais essayer dans Visual Studio pour résoudre/diagnostiquer le problème. Pouvez-vous s'il vous plaît aider?
MODIFIER:
Je découvre que la construction a échoué,
Du texte affiché dans la barre d'état.
De la fenêtre de sortie:
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
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 apparaît dans la cible BeforeBuild du fichier csproj échouait sans déclencher la moindre action. message d'erreur à la place normale.
J'ai pu le déterminer en définissant le détail de la production du projet MSBuild (dans la zone de paramètre Options/Projets et Solutions/Construire et exécuter de Visual Studio) sur "Diagnostic", comme indiqué ci-dessous. Cela a ensuite montré que l'action personnalisée (dans mon cas, HgVersionFile) était ce qui avait échoué.
VS (2013 Pro, Win 8.1) le redémarrage l’a fait pour moi.
Je veux développer la réponse de Sasse .
Pour résoudre le problème avec Visual Studio 2015 Update 2, je devais construire chaque projet un par un et consulter la fenêtre de sortie après chaque génération.
Un projet m'a donné
"Le nom de type ou d 'espace de noms' SomeNamespace 'n'existe pas dans l' espace de noms 'BeforeSomeNamespace' (il manque une référence Assembly?)".
Il n'y avait pas d'erreur dans la fenêtre Liste des erreurs, mais l'assemblage avait un panneau d'avertissement jaune sous "Références".
J'ai ensuite vu que le projet de référencement ciblé 4.5.1 et le projet référencé 4.6.1. Changer de 4.6.1 à 4.5.1 a permis à la construction globale de réussir.
Rien ne fonctionnait pour moi, alors j'ai supprimé le fichier .suo, redémarré VS, nettoyé le projeté, puis la compilation fonctionnait.
Il semble y avoir plusieurs réponses à cette question, je vais donc ajouter la mienne de mon expérience personnelle en espérant que cela permettra à quelqu'un de gagner du temps/du stress.
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. Cependant, il y avait une entrée d'avertissement (enterrée entre plusieurs centaines d'avertissements XML inutiles ...) indiquant qu'un projet visait une version .NET différente de celle d'un projet qui le référençait. Le problème était que l'un des projets de ma solution visait .NET 4.5.2, alors que les autres visaient 4.5.1. Il devrait fonctionne même avec cet écart (d'où la raison pour laquelle il s'agissait simplement d'un avertissement), mais malheureusement, il a cassé la construction.
Ce qui est étrange, c’est que la construction a fonctionné pendant un certain temps, mais soudainement, la construction a commencé à échouer une fois, ce qui a provoqué ce problème. Je ne suis pas sûr de ce que j'ai fait pour que je commence à me plaindre de différentes versions de la cible .NET, mais j'estime qu'il existe quelques mystères dans Visual Studio qui ne seront jamais résolus.
Tout d'abord "Nettoyer la solution", puis Reconstruire le solution.
Si ne fonctionne pas, fermez la solution et redémarrez-la.
Essayez ces choses, espérons que ça marche vraiment.
Une autre possibilité est que Visual Studio doive être exécuté en tant qu'administrateur. Cela peut être lié au déploiement sur un serveur local IIS ou à un autre besoin de déploiement.
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 la sortie (voir les instructions de Richard J Foster) et recherché dans la sortie "échec". J'ai rapidement découvert quel projet échouait et pourquoi: le projet "TestRunner" avait échoué avec "error CS0246: le nom de type ou d'espace de nom" TestCleaner "était introuvable" (même si aucun problème n'a été mis en évidence dans le code) .
Vérification des références de TestRunner, la référence à TestCleaner a été marquée comme non résolue et le chemin manquait dans les propriétés de la référence. Supprimer et rajouter n'a pas résolu le problème. Encore une fois, aucune explication pourquoi.
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 4,5.
J'ai eu ce même problème et j'ai retracé ce problème jusqu'aux options Error List "Build + Intellisense".
Si cette option est sélectionnée, aucune erreur ne s'affiche dans la liste. Basculez sur "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.
Juste pour compléter et peut-être aider quelqu'un qui rencontrait à nouveau la même erreur à l'avenir, j'utilisais l'interface de métro Mahapps et changeais le XAML d'une fenêtre, mais j'oubliais 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:
J'ai eu le même problème. La fenêtre de la liste des erreurs contient 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é le menu déroulant. La liste déroulante "Afficher les problèmes générés" était configurée sur "Construire + IntelliSense" et, après le passage à "Générer uniquement", les erreurs apparaissaient dans la liste.
cela peut se produire lorsqu'un des projets référencés est une version du framework .NET supérieure à celle de votre projet actuel.
Pour moi, ce qui a été résolu, a été de supprimer le dossier .vs
de la racine de la solution et de redémarrer Visual Studio.
Il est également peut-être important de dire que même si les erreurs ne figuraient pas dans le volet Liste des erreurs, elles étaient toujours présentes dans la sortie de la construction.
Aller à la fenêtre de sortie, rechercher 'erreur' dans la fenêtre de sortie, TADA
Essayez de construire votre projet à partir de la ligne de commande Powershell:
dotnet build
Vous pouvez ensuite voir les erreurs éventuelles dans la sortie de la ligne de commande, même si Visual Studio lit et cherche avec des messages d'erreur de génération.
Une façon différente de reproduire ce symptôme:
J'ai ajouté un nouveau projet à une solution existante et la sortie de génération signalait des erreurs telles que "le type ou le nom d'espace de nom X est introuvable ..." mais aucune erreur n'a été présentée dans la liste des erreurs.
Les classes auxquelles j'ai fait référence appartenaient à d'autres projets (référencés) dans la même solution.
Il s’est avéré que j’avais choisi 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 a été construit sans erreur.
J'ai eu le même problème, j'ai changé Outils -> Options -> Projets et solutions/Construire et exécuter -> Compte-rendu du fichier journal de construction du projet MSBuild [Diagnostic]. Cette option affiche une erreur dans le journal, pour certaines raisons, mon VS n’affichant pas d’erreur dans l’onglet Erreurs!
Faites les réglages ci-dessus et la copie de sortie dans le bloc-notes/éditeur de texte et recherchez l'erreur. Il vous montrera toutes les erreurs.
Étant donné que tout ne fonctionnait pas, il a été constaté que les erreurs n'apparaissaient pas à l'ouverture du projet en tant que solution (.sln), alors que l'erreur apparaissait à l'ouverture du projet en tant que projet.
Si le package de nuget 'Microsoft.Net.Compilers' est installé, assurez-vous qu'il correspond à la version de 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 mettez pas à niveau vers la version supérieure à 1.x si vous utilisez VS2015
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 fait une "Show Definition" pour l'un des contrôles que j'ai supprimé.
Je visais aussi un cadre plus élevé sur l’un de mes projets, alors c’était peut-être aussi le problème.
Le redémarrage de Visual Studio a fonctionné pour moi. Essayez également de redémarrer Visual Studio normalement (non exécuté en tant qu'administrateur). Essayez de redémarrer le système et répétez l’étape ci-dessus.
C'est peut-être dû à la différence version de reportviewer dans votre projet et votre VS
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.
Puis 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é.
J'ai eu un très vieux projet sur une machine plus ancienne. Le projet a été construit 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é certaines des suggestions ci-dessus, pas de chance.
Dans Visual Studio 2015, j'ai activé MSBuild détaillé sous TOOLS> Options> Projets et solutions> Construire et exécuter.
Il m'a donné peu de détails sur la construction mais pas d'erreurs. Après cela, j'ai essayé de vérifier les extensions et les mises à jour (Outils> Extension et mises à jour) et trouvé que peu d'entre elles nécessitaient une mise à jour.
Nuget Package était le coupable après la mise à jour de Nuget - build est réussi.
J'ai fait face au même problème! Supprimez simplement le dossier bin et redémarrez votre VS
. C'est tout . Testé dans VS 2013
.
J'ai essayé tout mais rien n'a fonctionné dans mon cas, puis j'ai modifié les paramètres mentionnés, ce qui a très bien résolu le problème pour moi ... Essayez si cela pouvait aider les derniers spectateurs mais assurez-vous de créer toutes les DLL, y compris les mêmes paramètres de configuration que ceux conservés au départ (mentionnés dans l’image).
À votre santé!