Les générations de projets Visual Studio 2015 ont échoué mais aucune erreur

110

Mon projet se construit tous échouent mais aucune erreur ne s'affiche. J'ai essayé de nettoyer et de reconstruire, cela n'a pas fonctionné.

J'ai changé la verbosité de sortie de MSBuild en «Diagnostic» en espérant que cela m'aiderait à identifier le problème et maintenant je suis bloqué. Voici à quoi ressemble la sortie:

1>Project 'ProjectMM.Data.Models' is not up to date. Input file 'C:\Projects\ProjectMM\ProjectMM.Data.Models\ProjectMM.Data.Models.csproj' is modified after output file 'C:\Projects\ProjectMM\ProjectMM.Data.Models\bin\Debug\ProjectMM.Data.Models.pdb'.
All packages are already installed and there is nothing to restore.
1>------ Build started: Project: ProjectMM.Data.Models, Configuration: Debug Any CPU ------
2>Project 'ProjectMM.Data' is not up to date. Input file 'C:\Projects\ProjectMM\ProjectMM.Data\ProjectMM.Data.csproj' is modified after output file 'C:\Projects\ProjectMM\ProjectMM.Data\bin\Debug\ProjectMM.Data.pdb'.
2>------ Build started: Project: ProjectMM.Data, Configuration: Debug Any CPU ------
3>Project 'ProjectMM' is not up to date. Input file 'c:\projects\projectmm\projectmm\app_start\bundleconfig.cs' is modified after output file 'C:\Projects\ProjectMM\ProjectMM\bin\ProjectMM.pdb'.
3>------ Build started: Project: ProjectMM, Configuration: Debug Any CPU ------
========== Build: 0 succeeded, 3 failed, 0 up-to-date, 0 skipped ==========
Rob Greenlee
la source
1
La fenêtre de votre liste d'erreurs s'affiche-t-elle ou non?
Karthik
Allez dans le menu Affichage -> Sélectionnez Liste des erreurs et vérifiez si vous avez des erreurs. Idéalement, vous devriez l'obtenir dans la liste des erreurs. Gardez votre fenêtre de liste d'erreurs ouverte et essayez de construire le projet et voyez ce qui se passe.
Karthik
4
Alors, voici ce qui vient de se passer: j'ai posté cette question et en supposant que je n'obtiendrais pas de réponse tout de suite, j'ai fermé le projet. Vous m'avez demandé de l'ouvrir de nouveau, d'ouvrir la liste des erreurs et de la reconstruire. Cela a parfaitement fonctionné, aucune erreur, tout a réussi!
Rob Greenlee
@RobGreenlee: Voir ma réponse, je parie que l'onglet "Erreur" était actif lorsque vous avez rouvert la solution!
jpo38

Réponses:

101

J'ai eu le même problème et la fermeture et la réouverture de Visual Studio le résolvent.

J'avais également essayé de nettoyer la solution et le nettoyage a également échoué.

Il peut y avoir d'autres scénarios où cela ne fonctionne pas, mais dans mon cas, le redémarrage a résolu cela pour moi.

Carson Evans
la source
22
Si cela n'aide pas à redémarrer. Je rencontre souvent ce problème lorsque j'ajoute un projet à ma solution, avec un autre framework Target référençant différents projets framework.
Bastiaan Linders
7
Dans mon cas, redémarrer VS ou nettoyer la solution n'a pas aidé. Cependant, la suppression du .suo sous le dossier .vs a résolu le problème
cellik
@cellik: Cela ne fonctionne pas dans mon cas. Ce qui vaut ... J'utilise l'édition Entreprise.
KMC
4
J'ai eu le même problème après avoir changé l'heure de mon ordinateur du fuseau horaire CEST (GMT + 1) au fuseau horaire américain (GMT-7), il semble qu'il ne pouvait pas gérer que l'horodatage de la dernière version était dans le futur. Après avoir redémarré VS tout est OK.
martinh_kentico
2
La suppression des fichiers .suo a également fonctionné pour moi, mais pas le redémarrage et le nettoyage.
Johann Marx
117

Il est possible que vous ne voyiez pas toutes les erreurs de compilation.

En changeant la liste déroulante après l'icône «Messages» de «Build + Intellisense» à «Build Only», vous pourrez voir les erreurs générées pendant la construction qui ne sont pas détectées par Intellisense. Voir la capture d'écran ci-dessous:

Construire

S.Mohamed Mahdi Ahmadian zadeh
la source
3
Mec, tu es mon sauveur!
KMC
19
Pourquoi les erreurs "Build Only" ne seraient-elles pas présentes dans "Build + Intellisense"?
CodyF
Cela a aidé à montrer les erreurs dans la liste des erreurs, mais les lignes de code avec les erreurs ne sont pas soulignées en rouge. Je suppose que cela doit être un problème Intellisense alors.
Drew
Travaille pour moi. Le mien était passé à Build et Intellisense, qui cachaient les erreurs de construction. Build Only fonctionne et affiche les erreurs de build.
HerrimanCoder
1
Vous monsieur a sauvé la journée pour moi .. excellent travail .. Merci beaucoup
MA9H
32

J'ai vu des instances régulières de VS2015 signalant «l'échec de la construction», mais je n'ai affiché aucune erreur dans la fenêtre d'erreur. Venant d'un ancien fond de ligne de commande, je suis finalement allé regarder la fenêtre de sortie. La fenêtre de sortie montrait les erreurs de rapport du compilateur mais ces erreurs n'étaient pas capturées dans la fenêtre d'erreur. Je n'ai jamais vu ce problème sous VS2013.

La fermeture habituelle de VS et sa réouverture n'ont pas effacé cette condition. (Dans VS2013, c'était un moyen courant de lancer l'intellisense XAML à l'arrière et de l'empêcher de se fixer sur une «erreur» qui avait été corrigée.)

Jusqu'à présent, cela a toujours été lié à des erreurs de compilation dans un fichier CS de page XAML. Je ne me souviens pas l'avoir vu dans un fichier CS sans page.

Jusqu'à ce que l'on découvre d'aller vérifier la fenêtre de sortie, des choses comme le rapport intellisense dans la fenêtre d'erreur des références non valides aux objets dans le XAML, mais aucune erreur du compilateur affichée dans la fenêtre d'erreur peut être TRÈS confuse car elle "apparaît" comme les erreurs sont les erreurs XAML de rapport d'intellisense. Mais ils ne le sont pas vraiment. Les erreurs XAML ne sont que des symptômes de l'échec de la compilation des fichiers CS, mais sans leur rapport d'erreurs dans la fenêtre d'erreur.

Keith
la source
20
Pour ceux d'entre vous qui ont encore du mal avec une fenêtre d'erreurs invisibles, il semble que vous pouvez faire apparaître les erreurs du compilateur dans la fenêtre en sélectionnant Construire uniquement dans la liste déroulante Filtrer la liste d'erreurs à dans la fenêtre Liste des erreurs (la liste déroulante n'est pas étiquetée ... Vous pouvez déterminer de quoi il s'agit en passant la souris dessus et en observant l'info-bulle).
Robert Harvey
2
@RobertHarvey ... c'est la clé ... mais POURQUOI dans le monde Intellisense remplacerait-il la construction?
felickz
@RobertHarvey c'était exactement ça. Il s'avère que, comme quelqu'un l'a suggéré ici, je faisais référence à un projet .net incompatible, mais je ne pouvais pas dire quel était le problème jusqu'à ce que j'aie basculé la sortie sur "Build Only" dans le volet Erreur. Dès que je l'ai fait, cela m'a orienté directement vers le problème. Merci pour le tuyau.
David Gunderson
Cette réponse a été l'indice pour moi. Recherchez "error CS" (sans guillemets) pour d'éventuelles exceptions de construction bloquantes.
granadaCoder
PS. Mon erreur était que j'avais utilisé le même nom de variable dans ma méthode. "string x = string.Empty;" par exemple. J'avais un gestionnaire d'exceptions qui contenait également une déclaration "string x".
granadaCoder
11

La suppression du .vsdossier caché a fonctionné pour moi pour VS2015.

(Notez que c'est là que les fichiers SUO vivent maintenant)

Mike Asdf
la source
9

Cela peut se produire lorsque vous faites référence à un autre projet de version de framework .net (v4.5.2 vs v4.5 dans mon cas). Corriger cela résoudra votre problème.

Claudiu Constantin
la source
C'était exactement mon problème. Ajout d'un nouveau projet à la solution qui était v4.5.2 et je l'ai référencé à partir d'un autre projet qui était v4.5. Passé le nouveau projet à la v4.5 et cela a bien fonctionné.
Drew
7

Ce qui m'est arrivé, c'est de changer le fuseau horaire de l'ordinateur à +5: 30, puis de le changer en arrière -5: 00 est ce qui a confondu VS. Quand j'ai redémarré VS, cela fonctionnait à nouveau correctement.

Mo
la source
aucune idée. J'utilise le contrôle de version, donc il se peut que ce soit confondu avec le temps ???
MB
6

Vérifiez toutes les versions de votre projet Framework et assurez-vous qu'elles sont toutes identiques, ou du moins que le projet A ne fait pas référence au projet B lorsque la version .NET Framework du projet B est supérieure.

Daniel Minnaar
la source
6

J'ai eu ce problème avec VS2015 Update 3 RC et Xamarin (projet partagé .Forms).
Le compilateur ne s'arrête pas, les erreurs ne sont affichées que dans la fenêtre de sortie.
Ceci uniquement pour les projets Xamarin (avec les projets VB.NET, tout a fonctionné comme prévu) ...
Pour essayer de trouver la raison du problème, j'ai changé la sortie de construction dans VS:
- menu "Outils - Options"
- dans le panneau de gauche : "Projets et solutions: construire et exécuter":
- changer "Verbosité de sortie MSBuild" de "Minimal" à "Diagnostic"

Après cela, le compilateur s'est arrêté et l'erreur a été affichée.
Après cela, j'ai remis l'option "Diagnostic" à "Minimal" (comme avant) et ... cela a également fonctionné avec "Minimal" (pour être sûr, j'ai aussi redémarré VS) ...

Donc ... il semble (du moins dans mon cas) que seul le changement (toucher) du paramètre (MSBuild Output Verbosity ") a résolu le problème et qu'il s'agit d'un bogue dans VS et / ou le logiciel d'intégration Xamarin ...

FredyWenger
la source
1
Pourquoi cette réponse n'est-elle pas plus fortement votée? Cela vous donne la solution parfaite pour déboguer ce qui ne va pas
John Demetriou
Vérifiez ma réponse ci-dessous. J'ai également pensé que votre solution était correcte, mais j'ai réalisé que même avec le niveau de sortie "Diagnostic", mon "onglet Erreur" resterait vide. Comme les autres, vous avez probablement gardé l '«onglet Erreur» actif et c'est pourquoi il a commencé à fonctionner
correctement
6

Je ne sais pas si je suis le seul à faire face à ce problème.

Dans mon cas, lorsque j'ai ouvert Visual Studio, le fuseau horaire était au format GMT + 1: 00 et la génération a réussi. Ensuite, j'ai changé le fuseau horaire en GMT + 5: 30, puis sans redémarrer Visual Studio, j'ai essayé d'exécuter l'application, mais la construction a échoué sans aucune erreur ni avertissement.

J'ai changé le fuseau horaire en GMT + 1: 00, et la construction a réussi sans aucune erreur.

Rudresha Parameshappa
la source
Merci beaucoup - cela m'a rendu fou tout l'après-midi :-)
indra
2

Ce que j'ai fait (après tout ce qui précède, et cela ne fonctionnait toujours pas) était de parcourir tous les dossiers bin et de les effacer tous (c'est-à-dire les projets référencés aussi).

Cela a fonctionné pour moi, j'espère que cela fonctionnera pour vous aussi.

Rodney Ellis
la source
2

J'ai eu ce problème et il s'est avéré que j'avais un usingpointant vers un espace de noms vide. La suppression de cette usingclause a résolu le problème

Phate01
la source
2

Vérifiez les avertissements.

J'avais la nouvelle bibliothèque de classes avec la cible .Net Framework 4.5 alors que le projet de référencement était 4.0, ce qui a causé un problème de référence.

Après avoir modifié la bibliothèque de classes avec la cible .Net Framework 4.0, cela fonctionnait correctement.

gyansada
la source
2

Rien des réponses ci-dessus ne m'a aidé. Après de nombreuses expériences, j'ai finalement trouvé que le problème était une référence de Microsoft.Net.Compilers v2.10.0 dans l'un des projets. VS 2015 utilise MSBuild v14 qui ne prend pas en charge cette version de Microsoft.Net.Compilers.

Petar Petrov
la source
1

Pour moi, ce problème était lié à un paramètre de jeu de règles CodeAnalysis personnalisé " IncludeAll ".

Il semble que le compilateur observe ce paramètre:

  <IncludeAll Action="Error" />

Mais IntelliSense a pris l'ACTION par défaut sur l'ID de règle qui était "Avertissement". Cela expliquerait le comportement observé par @RobertHarvey où vous filtrez la sortie par Build Only et cela apparaît comme une ERREUR , mais si vous filtrez par Intellisene Only, cela s'affiche comme WARNING . Le filtrage de la sortie par Build + Intellisense par défaut semble non déterministe!

Ma solution consistait à appeler explicitement la règle selon laquelle je voulais être un avertissement comme un avertissement.

  <Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp">
    <Rule Id="CS0618" Action="Warning" />
  </Rules>

Il s'agit potentiellement d'un problème avec Intellisense qui n'observe pas l' option IncludeAll . Voir https://github.com/dotnet/roslyn/issues/7400

Felickz
la source
1

Cela peut également se produire lors de la migration d'un projet vers Visual Studio 2015 avec un framework plus ancien. Vérifiez vos avertissements dans votre liste d'erreurs. Vous pouvez voir quelque chose comme le projet est actuellement .NET version 2.0 et nécessite .NET 3.5 ou supérieur. Si vous trouvez un avertissement similaire, accédez aux propriétés de votre projet et ciblez le .NET Framework requis.

Tyriddik
la source
1

Veuillez vérifier les avertissements. Parfois, la construction a échoué à cause d'avertissements.

Krish
la source
1

Lorsque vous ouvrez une solution, générez-la, je peux voir des erreurs de construction ou des avertissements rapportés dans l'onglet "Sortie", tandis que "l'onglet Erreur" ne signale aucun problème.

entrez la description de l'image ici

Vous pouvez voir que la configuration "Onglet Erreur" est OK ("Construire uniquement" et "Solution entière" sélectionnés).

Notez qu'après une enquête approfondie, j'ai identifié que cela ne se produit que si l'onglet "Erreur" n'était pas encore affiché lorsque vous démarrez la construction!

Si vous avez activé l'onglet "Erreur" avant de faire la construction (ou s'il s'agissait de l'onglet actuel lorsque vous avez lancé Visual), les erreurs / avertissements nouvellement trouvés s'afficheront correctement:

entrez la description de l'image ici

C'est comme si l '"onglet Erreur" était initialisé uniquement lorsqu'il devenait visible (ce qui peut être vrai car il faut plus de temps pour apparaître la première fois que vous cliquez dessus ...), et, si ce n'était pas le cas, il ne rassemble pas de build résultats...

Jusqu'à présent, il n'y a pas de meilleure réponse à ce problème que "d' activer l'onglet Erreur avant de construire ".

Et je parie que c'est pourquoi "redémarrer VS" fonctionne parfois. Vous voyez que l '«onglet Erreur» est vide, vous fermez et repoen VS, puis, «onglet Erreur» est affiché par défaut comme VS a restauré l'onglet actif actuel de la session précédente. Vous construisez et maintenant l'onglet "Erreur" est rempli ...! Tu as juste de la chance.

Remarque: a signalé un bogue VS: https://connect.microsoft.com/VisualStudio/feedback/details/3132689

jpo38
la source
Cette solution a fonctionné pour moi. Cela m'est arrivé une fois - aucun avertissement n'a été affiché. J'ai ouvert la fenêtre Liste des erreurs et reconstruit la solution. Les avertissements ont été affichés cette fois. Je ne peux pas reproduire le même problème même après avoir redémarré le VS.
IAN
1

Pour moi, la construction a échoué sans erreurs, mais après quelques recherches légères, j'ai découvert que la référence à MSHTML n'a pas été trouvée par VS.

entrez la description de l'image ici

Le comportement est apparu après une mise à jour de Windows 10. Pour y remédier, vous devez enregistrer l'assembly à partir du GAC. Pour savoir comment le faire, accédez à cette réponse DLL MSHTML sur Windows 10, c'est là que j'ai trouvé ma réponse.

Fid
la source
0

Tiré de cette réponse

La compilation a échoué, aucune erreur n'a été affichée dans la fenêtre de sortie.

Pour essayer de trouver la raison du problème, j'ai changé la sortie de construction dans VS: - menu "Outils - Options" - à partir du panneau de gauche: "Projets et solutions: Construire et exécuter": - changer "Verbosité de sortie MSBuild" de " Minimal "à" Diagnostic "

Après avoir fait cela, j'ai trouvé la vraie raison qui était en fait une erreur avec les projets de dépendance. Je projette que je dépendais a été construit pour un cadre différent (plus récent) que le mien. Créant ainsi le problème. Les erreurs n'étaient générées que lorsque j'ai mis la verbosité de sortie au diagnostic

John Demetriou
la source
Il ne s'agit pas seulement de comprendre le problème, il s'agit d'apprendre à résoudre le problème. C'est pourquoi j'ai inclus d'autres processus de débogage des réponses, car c'est ce qui m'a aidé à découvrir ce qui ne va pas. Pas seulement des suppositions aléatoires sur ce que pourrait être le problème
John Demetriou
0

Pour moi, c'était une propriété attenante voyous. Le problème n'était pas nécessairement que je ne voyais pas d'erreur; l'erreur était la suivante:

Le nœud enfant "2" s'est arrêté prématurément. Éteindre. Les informations de diagnostic peuvent être trouvées dans les fichiers du répertoire des fichiers temporaires nommé MSBuild _ *. Failure.txt.

Initialement, la génération se bloquait et n'afficherait aucune erreur à moins que vous n'essayiez de fermer Visual Studio. Après le redémarrage, il se bloque pendant une longue période lors de la construction, puis affiche le message ci-dessus.

La suppression du .vsdossier caché , la reconstruction / solution de nettoyage et le redémarrage de Visual Studio ne fonctionnaient pas. La suppression de la propriété attachée a fait; ergo, il pourrait s'agir de code réel quelque part qui ne fonctionne pas correctement.

En dernier recours, je supprimerais tous les changements récents un par un jusqu'à ce que le problème soit résolu, car aucune des solutions ici n'a aidé.

Mettre à jour

Comme je suis habitué à développer des applications WPF traditionnelles, je ne savais pas que vous ne pouviez pas avoir d'espaces de noms XAML «chaînés» en utilisant .s avec UWP. J'essayais de définir une propriété attachée à l'aide de

My.Namespace:SomeClass.SomeProperty="SomeValue"

Alors que ça devrait juste être

MyNamespace:SomeClass.SomeProperty="SomeValue"

Ce n'est pas aussi joli que j'aime, mais c'est la seule façon de faire, apparemment.

James M
la source
0

Ce qui a fonctionné pour moi:

La fermeture de tous les documents a résolu le problème pour moi. (Même solution si intelliSense cesse de fonctionner)

(onglet clic droit - Fermer tous les documents)

Ziv Weissman
la source
0

Essaye ça

Exclure "mstscax.dll"des dépendances a fonctionné pour moi.

Emile Cloete
la source
0

Problème de niche: je suis tombé sur le même problème tout à l'heure. Aucune des réponses ci-dessus n'a semblé aider.

Le problème concernait un programme Console, on ne peut pas marquer la méthode Main () comme async **, ce que je faisais. Je ne sais pas pourquoi Visual Studio n'a pas pu spécifier pourquoi exactement le projet ne se construisait pas (j'ai reçu 0 erreur et 0 avertissement à chaque fois). J'utilise Visual Studio 2015 Enterprise.

Correction: le travail autour de cela est ici .

user3613932
la source
0

Après la mise à jour d'un fichier dll, il s'est avéré que le nouveau fichier ciblait une version supérieure de .NET Framework. La solution consistait à accéder aux propriétés du projet et à modifier le cadre cible vers la version appropriée.

utileBee
la source
0

MSBuild.exe est modifié dans le répertoire (C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin)

donc je remplace juste le MSBuild.exe d'un autre PC qui a vs2015.

Maintenant, cela fonctionne bien.

sabare
la source
0

J'ai trouvé une solution en changeant .NET Framework de 4.5.2 à 4.0.

Le problème était causé par une référence qui n'était pas compatible avec le cadre actuellement sélectionné.

Stefan Đorđević
la source
0

J'ai juste effacé mes filtres et cela a fonctionné pour moi.L'icône d'effacement de tous les filtres se trouve près de la boîte de messages.

Nevin José
la source
0

Démarrez un nouveau projet. Copiez tout votre code jusqu'à l'espace de noms ci-dessous ConsoleApp38450983450.

Coller dans un nouveau projet sous l'espace de noms ScrewedUpConsoleApp102343

Construisez et exécutez parfaitement

Brandon Norris
la source
-1

Vous devez définir la zone de liste déroulante à droite sous la liste des erreurs, sur «Solution entière» pour voir toutes les erreurs. entrez la description de l'image ici

Milad Koudarzi
la source
1
Cette question assez ancienne a déjà une réponse acceptée, il ne semble pas que votre réponse très courte et non descriptive y ajoute beaucoup. De plus, veuillez ne pas créer de lien vers des images sur des sites externes mais ajoutez les images à votre réponse!
Dux