web-dev-qa-db-fra.com

Débogage des packages de nuget à l'aide de Visual Studio 2017

Dans Visual Studio 2015 et le développement .NET Core, nous pourrions déboguer les packages de nuget en récupérant le code source d’une source (par exemple, GitHub) sur un disque local, en ajoutant le chemin source au code source téléchargé dans global.json et en référant le package de nuget notre projet. Cela a pour effet que la référence aux projets du code source téléchargé soit automatiquement visible dans la solution actuelle et permet ainsi de déboguer facilement (Pour en savoir plus sur cette fonctionnalité, consultez dans cet article ).

Est-ce que quelqu'un sait comment faire la même chose avec Visual Studio 2017? Depuis que le global.json est parti, je ne trouve aucune solution à cela.

15
Rune G

Je vois que cela est devenu une question populaire, cependant, MS est (comme pour la plupart du temps dans Visual Studio) absent dans les demandes qui peuvent réellement améliorer leur produit.

Il y a quelques articles sur l'utilisation de la bibliothèque de références de Microsoft, mais cela ne s'applique pas à tous les projets et vous allez déboguer des bits de version optimisés, ce qui limite les capacités de surveillance et d'étape. Je pense également que cette façon de procéder ralentit encore plus le ralentissement de Visual Studio. Cette façon de faire est décrite dans ce post .

Cependant, récemment, j'ai trouvé un moyen de contourner ce problème. Ce n'est pas toujours stable, mais vous pouvez ajouter le projet correspondant à votre projet en tant que référence de projet.

Mais voici les étapes que j'ai faites qui fonctionnent principalement:

  1. Cloner le référentiel du paquet de nuget depuis github (ou une autre source)
  2. Faites de votre mieux pour trouver le commit à partir duquel le package de nuget a été construit (la plupart des références de projets avec des balises ou des branches, mais ne vous attendez pas à cela, il peut être préférable de comparer les dates sur le package de nuget et les validations).
  3. Suivez les instructions du projet sur la façon de le générer. Certaines sont simplement générées dans Visual Studio, tandis que d'autres peuvent nécessiter d'autres étapes, telles que l'utilisation de scripts de construction dans la commande Invite.
  4. Ajoutez une référence au projet dans la solution. Parfois, vous devrez également ajouter le projet auquel le projet fait référence, mais pas toujours. Je n'ai pas encore trouvé exactement les règles ici. Il semble que les nouvelles mises à jour de Visual Studio n’ont pas besoin de cela.
  5. Ajoutez une référence au projet dans TOUS les projets faisant référence au package de nuget dans votre solution. Dans le cas contraire, cela pourrait entraîner des conflits que le compilateur essaiera de résoudre (pas assez bien).

Construire et déboguer, dans votre fenêtre de sortie, vérifiez que l’Assembly situé dans le dossier de sortie de votre projet est utilisé. Si c'est le cas, frappez simplement les points d'arrêt dans les projets référencés et vous disposerez d'une fonctionnalité de débogage complète.

C'est un peu d'essayer et de ne pas réussir à faire ce travail, mais ça marche finalement.

Il est possible de créer des conditions sur les références de projet pour s'assurer qu'elles ne sont pas intégrées, par exemple. Cependant, sachez que pour changer de configuration, vous devez recharger votre solution APRÈS le changement!

1
Rune G

Je lutte avec cela depuis longtemps. Voici le moyen le plus simple que j'ai trouvé qui fonctionne de manière répétée: 

  • Procurez-vous le code source et construisez un paquet de nuget localement. Vous devrez incrémenter la version du paquet . J'espère que l'auteur a fourni un fichier .nuspec pour faciliter la construction.  

Créez une source de nuget locale: 

  • Placez le fichier .nuget que vous venez de créer dans C:\Nuget (par exemple)

  • Dans Visual Studio, sélectionnez Outils/Options/Gestionnaire de paquets Nuget/Sources de paquet

  • Appuyez sur l'icône verte (+). Ajoutez le chemin d'accès au package de nuget local que vous avez créé ci-dessus (C:\Nuget) et déplacez la source du package en haut de la liste. 

  • Dans votre solution, pour chaque projet, supprimez la référence précédente au package de nuget externe et ajoutez le nouveau package de nuget à partir de votre source de nuget locale. 

  • Commencez le débogage et vous devriez pouvoir entrer dans le code du paquet Nuget. 

Je suis en mesure de définir un point d'arrêt dans le code source à partir duquel je construis le package de nuget et de le faire rompre lorsque j'exécute le code. 

Toutes les étapes ci-dessus sont un peu fidèles et vous devrez peut-être y jouer plusieurs fois pour le faire fonctionner. 

Faites-moi savoir dans les commentaires si cela fonctionne pour vous. Et si oui, j'apprécierais un vote positif! :)

0