37 votes

Où se trouvent les symboles pour ASP.NET MVC 4.0 RTM ?

J'essaie de configurer Visual Studio 2012 pour me permettre d'entrer dans le code source d'ASP.NET MVC 4.0. ( System.Web.Mvc.dll ). J'ai suivi Configuration recommandée par SymbolSource mais lorsque j'essaie de charger les symboles, Visual Studio ne parvient pas à les localiser.

Configuration recommandée

Pour configurer Visual Studio en vue de l'utilisation des suivez ces instructions :

  1. Allez dans Outils -> Options -> Débogueur -> Général.
  2. Décochez la case "Activer Juste mon code (géré uniquement)".
  3. Décochez "Enable .NET Framework source stepping". Oui, c'est trompeur, mais si vous ne le faites pas, Visual Studio va ignorera votre ordre de serveur personnalisé (voir plus loin).
  4. Cochez "Activer la prise en charge source".
  5. Décochez "Exiger que les fichiers sources correspondent exactement à la version originale".
  6. Allez dans Outils -> Options -> Débogueur -> Symboles. Sélectionnez un dossier pour le cache local des symboles/sources.
  7. Ajouter des serveurs de symboles sous "Symbol file (.pdb) locations". Faites attention à l'ordre correct ordre, car certains serveurs peuvent contenir des symboles pour les mêmes binaires : avec ou sans sources. Nous recommandons la configuration suivante :

Je suis conscient que le code source est disponible sur CodePlex Cependant, je suis particulièrement intéressé par le fait d'accéder au code en utilisant un serveur de symboles au lieu de devoir déréférencer Mvc à partir du GAC et de référencer un assemblage construit localement.

Quelqu'un a-t-il réussi à faire cela avec MVC 4.0 ?

15voto

Simon Points 558

Il suffit d'ajouter un serveur de symboles qui sert plus que les versions majeures.

Essayez celui-ci, il contient la plupart des constructions mineures.

http://srv.symbolsource.org/pdb/Public

Vérifier :

Exécutez VS en tant qu'administrateur.

Vérifiez que quelque chose a été téléchargé dans votre répertoire de cache des symboles.

Sélectionnez uniquement les modules spécifiés. Ajoutez "System.Web.Mvc.dll".

Définissez un point d'arrêt dans votre code. Lancez le débogage. Lorsque le point d'arrêt est atteint, faites un clic droit dans la pile d'appels sur n'importe quelle ligne de mvc.dll. Vérifiez que les symboles sont chargés. S'ils sont chargés, essayez de faire un double-clic sur une ligne de callstack pour ouvrir la source mvc.

Revenez à l'endroit où vous avez des problèmes.

6voto

Changde Wu Points 41

Je vais apporter quelques améliorations à la réponse de Luke Gumbley.

Microsoft essaie de faciliter la vie des développeurs. Chaque fois qu'il publie un programme d'installation de la version MVC, il devrait également y avoir une source à télécharger. Ainsi, les gens peuvent utiliser la source pour explorer ce qui est installé par l'installateur, ainsi que pour déboguer le MVC.

Retour à la méthode de téléchargement des informations de débogage MVC. Votre Visual Studio (j'utilise 2010) n'essaiera jamais de télécharger les fichiers PDB MVC à partir des serveurs mentionnés ci-dessus si MVC4 est installé sur votre système. Dans ce cas, votre Visual Studio utilisera le MVC de votre GAC lorsque vous lancerez le débogueur.

J'ai essayé la méthode suggérée par Luke Gumbley. Cependant, une fois que vous avez désinstallé MVC, votre projet MVC ne sera pas chargé, et vous ne pouvez pas créer un nouveau projet MVC puisque le modèle a disparu. Ne désinstallez donc pas MVC. Si vous le faites, vous devrez quand même le réinstaller. C'est une perte de temps.

Ce que vous devez vraiment faire, c'est quitter votre Visual Studio, exécuter la commande

gacutil /u System.Web.Mvc

Ensuite, allez sur C:\Windows\Microsoft.NET\assembly\GAC_MSIL supprimer ou renommer l'élément incriminé System.Web.Mvc dossier. Après cela, lancez votre Visual Studio, et récupérez le paquet MVC depuis NuGet.

4voto

Oleg Points 136406

Je ne peux pas répondre à votre question directement et vous fournir l'URL avec les symboles (.pdb) pour System.Web.Mvc.dll pour ASP.NET MVC 4.0, mais je peux probablement vous aider à résoudre le problème d'une autre manière.

Comme on le sait (voir aquí par exemple) Microsoft fournit le code source actuel de .NET sur http://aspnetwebstack.codeplex.com/ . Sur le poste il est décrit comment utiliser le Version nocturne d'ASP.NET (l'état actuel du code pour les développeurs). Si vous n'avez pas utilisé Git auparavant, vous pouvez avoir des problèmes pour télécharger Version RTM de ASP.NET 4.5 (avec ASP.NET MVC 4.0) que vous pourriez préférer utiliser à la place de la version Nightly. Néanmoins, le téléchargement du code source complet de la version RTM est assez facile. Il suffit de savoir que Git permet de sauvegarder une copie du code dans des branches ou des versions balisées. De cette façon, vous pouvez avoir accès (et le télécharger) à certaines versions précédentes du code complet. Le lien vous fournit par exemple jQuery 1.8.2 au lieu de autre lien vous procurer la dernière version du développeur, qui peut être instable. Donc pour télécharger le code source de Version RTM il suffit de choisir la branche "v2-rtm" puis de cliquer sur "Télécharger" :

enter image description here

Vous pouvez utiliser le lien pour sélectionner directement la branche "v2-rtm".

Je peux répéter que ce n'est pas exactement ce que vous avez demandé et je sais que la compilation du code source ASP.NET peut aussi être un peu délicate, mais j'ai décidé d'écrire cette information. Si quelqu'un pouvait vous suggérer une meilleure solution, ce serait intéressant pour moi aussi.

4voto

Luke Gumbley Points 41

J'avais exactement le même problème (version correcte mais pas de symboles), mais après une journée environ à tout essayer, j'ai réussi à le faire fonctionner. Ce sont des instructions fourre-tout qui ont fonctionné pour moi, elles peuvent contenir des étapes inutiles :

  1. Inscrivez-vous à SymbolSource et suivez les Instructions VS en utilisant le formulaire URL authentifié
  2. Désinstallez toutes les versions de MVC à l'aide de la fonction Ajout/Suppression de programmes.
  3. Retirer l'assemblage MVC du GAC (la question porte sur la modification de MVC mais la réponse du GAC est bonne)
  4. Supprimez puis réinstallez la référence MVC 4 à votre projet avec NuGet
  5. Commencez à déboguer, ouvrez la fenêtre des modules, et croisez les doigts que 'Symbols loaded' soit à côté de System.Web.MVC quand il apparaît.

(saupoudrez de redémarrages comme vous le souhaitez, pour moi l'étape finale clé a été la réinstallation de la référence NuGet)

Ma théorie est que, comme la bibliothèque du GAC est utilisée au moment de l'exécution de préférence à la référence locale, les symboles ne sont pas trouvés lorsqu'ils sont recherchés. En supprimant MVC du GAC, puis en réinstallant la référence NuGet, il semble que la référence locale soit utilisée et que les symboles soient trouvés. C'est contre-intuitif car les fichiers System.Web.MVC.dll sont binairement équivalents entre NuGet et le GAC, bien qu'ils soient datés différemment.

Je ne suis pas totalement convaincu, car j'ai essayé de faire la même chose pour Razor et cela n'a pas marché.

1voto

berezovskiy Points 332

Permettez-moi de commencer par dire que ReSharper fournit un dialogue pratique pour intervenir dans le code à tout moment :

enter image description here

Vous obtenez donc l'écran de code suivant si vous percez le code source :

enter image description here

Mais je suis devenu curieux de réaliser cela à la main. J'ai commencé par une configuration correcte de pdb :

enter image description here

Après cela, j'ai obtenu l'erreur suivante :

enter image description here

Ensuite, j'ai copié le C:\Users\Andrew\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\System.Web.pdb\CA49C4332DE847FA967F58AFF370B70E1\System.Web.pdb a C:\Users\Andrew\AppData\Local\Temp\SymbolCache\System.Web.pdb (pour correspondre au chemin de recherche). Après cela, j'ai rencontré ceci :

enter image description here

Et il s'est avéré que les builds non concordantes ne sont bonnes que pour parcourir la source, pas pour le débogage. (La machine actuelle a VS2012 RC, donc les bibliothèques MVC ne sont pas RTM). Si elles correspondent, vous aurez la source.

Je ne sais toujours pas pourquoi le chemin de recherche ne s'adapte pas à la configuration du symbole. J'espère que cela vous aidera.

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