32 votes

Erreur MSBuild "CSC : error CS2001 : Source File 'x' could not be found" avec Linked Files après la mise à jour vers Visual Studio 2012

Après avoir mis à jour automatiquement le fichier de projet pour une application web .Net 4.0 afin qu'il fonctionne avec Visual Studio 2012, tout a fonctionné correctement au début, mais lors de la compilation, j'ai obtenu beaucoup d'erreurs comme celle-ci :

Description : Fichier source '.. \..\..\..\..\File Le "chemin" n'a pas pu être trouvé

Dossier : CSC

Et lorsque j'ai essayé de construire en utilisant MSBuild (en passant uniquement le chemin complet du projet, sans aucun paramètre supplémentaire) dans l'"Invite de commande du développeur pour VS2012", j'ai obtenu essentiellement les mêmes erreurs :

"CSC : erreur CS2001 : Le fichier source 'x' n'a pas été trouvé".

Toutes les erreurs se réfèrent à Fichiers liés (aspx,cs,etc) situés dans d'autres projets d'applications web situés à une autre profondeur dans notre branche de code (c'est pourquoi tous les '....\' au début des chemins)

Il me semble qu'il s'agit d'un problème avec le fichier Longueur J'ai eu le même problème il y a quelque temps en construisant les projets sur notre serveur CI en utilisant MSBuild, j'ai pu le gérer en manipulant les fichiers de projet avant de les construire en utilisant un script personnalisé sans avoir besoin de déplacer la branche ou de réduire la profondeur des projets, je n'ai pas eu à déplacer quoi que ce soit, la chose importante à l'époque était que les développeurs utilisant Visual Studio 2010 pouvaient tout compiler sans problème. J'ai appris par ce biais que la compilation/construction avec MSBuild était différente de celle avec DevEnv/VS, et par exemple MSBuild ne supportait pas la construction de projets Setup alors que DevEnv le faisait.

Puisque cela se produit maintenant avec VS 2012/DevEnv 2012, plus que VS 2012 ne supporte plus les projets de configuration (comme msbuild), plus que VS/DevEnv ont le même problème avec la longueur de fichier, il semble que VS 2012 utilise finalement msbuild sous le capot ou sont plus étroitement intégrés, cependant je n'ai pas trouvé d'article pour confirmer cela.

Changer la structure des branches/changer la profondeur des projets n'est pas une option pour le moment pour plusieurs raisons (grande base de code, grand nombre de projets, risque, timing, effort, etc.)

Quelqu'un a-t-il une solution alternative ou un correctif pour ce problème dans Visual Studio 2012 ?

Voir aussi,

P.D. : BTW J'ai déjà vérifié ce message Erreur MSBuild avec des fichiers liés mais comme je l'ai déjà dit, changer les chemins n'est pas une option pour l'instant.

0 votes

Même problème ici, j'espère que quelqu'un pourra m'éclairer sur le problème

0 votes

Même problème sauf que le fichier source est '' (vide)

0 votes

Je sais que cette question a été posée il y a environ un an, mais je peux confirmer qu'il y a un problème de longueur de fichier lorsqu'il s'agit de référencer des fichiers sources en tant que fichiers liés dans Visual Studio 2012. J'ai rencontré ce problème il y a quelques jours de façon mystérieuse, et je ne pouvais pas comprendre pourquoi l'explorateur de solutions était capable d'afficher les fichiers, mais le compilateur (CSC) avait des problèmes pour les trouver. J'espère que ce problème est résolu dans VS2013 ?

1voto

Weej Points 424

Ce problème m'est apparu lorsque je suis revenu à une version antérieure d'un dépôt git. Apparemment, je n'ai pas ajouté le fichier de projet au dépôt, de sorte que lorsqu'il a été rétabli, le fichier de projet n'a pas été rétabli non plus. Ce que j'ai fait pour résoudre le problème, c'est d'exclure le fichier .cs manquant du projet en cliquant sur le fichier manquant dans l'explorateur de projet. Il était facile à trouver puisqu'il était marqué d'un triangle d'avertissement. Reconstruisez ensuite l'ensemble de la solution.

1voto

Elayamathy Points 66
  1. Vérifiez si les fichiers mentionnés dans l'erreur n'existent pas dans le dossier correspondant.
  2. Si leur inexistence est intentionnelle, modifiez les fichiers .csproj et supprimez la référence à ces fichiers.
  3. Construire à nouveau.

1voto

Marc Selis Points 146
  1. Vérifiez que vous disposez de la dernière version des fichiers liés aux autres projets. Visual Studio ne les récupère PAS automatiquement s'ils appartiennent à un autre projet.
  2. Vérifier que les chemins d'accès sont corrects. Vous pouvez surveiller les fichiers auxquels VS.NET et MSBUILD tentent d'accéder à l'aide de l'outil ProcMon de SysInternals (filtre sur les noms de processus et filtre sur tous les succès).
  3. Si vous pensez que c'est la longueur du chemin qui pose problème (cela sera également visible dans l'outil ProcMon), vous pouvez essayer de les raccourcir en établissant un lien avec le chemin absolu ( C:\X\Y\Z ) au lieu d'un chemin relatif (...... \Z ). L'emplacement des fichiers liés peut alors rester inchangé.

0voto

Overlord Points 586

J'ai hérité de ce problème d'un projet sur lequel quelqu'un d'autre travaillait, dans mon cas était un fichier .cs censé être généré par un modèle .tt d'Entity Framework, mais pour une raison quelconque, il ne l'était pas, et le compilateur se mettait à faire n'importe quoi. CS2001 à ce sujet. J'ai dû mettre à jour le modèle et l'exécuter manuellement Tout a fonctionné ensuite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X