it-swarm-fr.com

Supprimez les références inutilisées (! = "Using")

Comment trouver et supprimer des références inutilisées dans mes projets?

Je sais que vous pouvez facilement supprimer les instructions using par rapport à 2008, mais cela ne supprime pas la référence réelle dans vos projets. La DLL référencée sera toujours copiée dans votre package bin/setup.

100
Boris Callens

* Remarque: voir http://www.jetbrains.net/devnet/message/5244658 pour une autre version de cette réponse.

En lisant les messages, il semble qu'il y ait une certaine confusion quant à la question d'origine. Laissez-moi essayer.

Le message d'origine pose vraiment la question: "Comment puis-je identifier et supprimer des références d'un projet Visual Studio à d'autres projets/assemblys qui ne sont pas utilisés?" L'affiche souhaite que les assemblys n'apparaissent plus dans le cadre de la sortie de génération.

Dans ce cas, ReSharper peut vous aider à identifier eux, mais vous devez supprimer vous-même.

Pour ce faire, ouvrez les références dans le navigateur de solutions, cliquez avec le bouton droit de la souris sur chaque assemblage référencé et choisissez "Rechercher le code dépendant". Voir:

http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code

Vous obtiendrez soit:

  1. Une liste des dépendances de cette référence dans une fenêtre de navigateur, ou

  2. Une boîte de dialogue vous indiquant "Code dépendant du module XXXXXXX est introuvable.".

Si vous obtenez le deuxième résultat, vous pouvez ensuite cliquer avec le bouton droit de la souris sur la référence, sélectionner Supprimer et le supprimer de votre projet.

Bien que vous deviez le faire "manuellement", c'est-à-dire une référence à la fois, cela fera le travail. Si quelqu'un a automatisé cela d'une manière ou d'une autre, j'aimerais savoir comment cela a été fait.

Vous pouvez à peu près ignorer ceux du .Net Framework car ils ne sont normalement pas copiés dans la sortie de votre build (généralement - mais pas nécessairement vrai pour les applications Silverlight).

Certains articles semblent répondre à la question: "Comment supprimer les clauses (C #) d'un fichier de code source qui ne sont pas nécessaires pour résoudre les références dans ce fichier".

Dans ce cas, ReSharper aide de plusieurs manières:

  1. Identifie les clauses d'utilisation inutilisées pour vous lors de la détection d'erreur à la volée. Ils apparaissent comme des avertissements d'inspection de code - le code apparaîtra grisé (par défaut) dans le fichier et ReSharper fournira un indice pour le supprimer:

    http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection

  2. Vous permet de les supprimer automatiquement dans le cadre du processus de nettoyage du code:

    http://www.jetbrains.com/resharper/features/code_formatting.html#Optimizing_Namespace_Import_Directives

Enfin, sachez que ReSharper effectue une analyse de code statique sur votre solution. Donc, si vous avez une référence dynamique à l'assembly - disons par réflexion ou un assembly qui est chargé dynamiquement au moment de l'exécution et accessible via une interface - il ne la récupérera pas. Il n'y a pas substitut pour comprendre votre base de code et les dépendances du projet lorsque vous travaillez sur votre projet. Je trouve les fonctionnalités de ReSharper très utiles.

55
jlo

vous pouvez utiliser l'extension " Supprimer les références non utilisées " que j'ai écrite:

http://visualstudiogallery.msdn.Microsoft.com/9811e528-cfa8-4fe7-9dd1-4021978b5097

12
Spongman

La suppression des références inutilisées est une fonctionnalité déjà prise en charge par Visual Studio 2008. Malheureusement, uniquement pour les projets VB .NET.

J'ai ouvert une suggestion sur Microsoft Connect pour obtenir également cette fonctionnalité pour les projets C #:

http://connect.Microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510326

Si vous aimez aussi cette fonctionnalité, vous pouvez voter ma suggestion.

7
jbe

Essayez celui-ci: Assistant de référence

Sommaire

L'Assistant de référence aide à supprimer les références inutilisées des projets C #, F #, VB.NET ou VC++/CLI dans Visual Studio 2010.

5
Leniel Maccaferri

ReSharper 6.1 comprendra ces fonctionnalités:

-Optimiser les références: analysez vos références Assembly et leurs usages dans le code, obtenez la liste des références redondantes et supprimez-les.

-Retirer les références inutilisées: refactoring rapide pour supprimer les références d'assemblage redondantes.

-Suppression sûre sur les références d'assembly: supprimera les références d'assembly si elles sont toutes redondantes, sinon dissipe les utilisations et ne peut supprimer que les références d'assembly redondantes de la liste sélectionnée.

4
Kirill Skrygan

Resharper fera cela pour vous (et bien plus encore!)

4
Chris Canal

Je l'ai fait sans extension dans VS 2010 Ultimate Architecture-> Générer un graphique de dépendance-> Par assemblage, il montre les assemblages utilisés et les références inutilisées supprimées manuellement.

3
mes

J'ai une réponse gratuite qui fonctionne dans n'importe quelle version de Visual Studio et n'importe quelle version de Framework. Il ne supprime pas les références inutilisées, mais il les identifie.

Vous pouvez utiliser Telerik JustDecompile sur la DLL de votre projet. Ouvrez simplement la DLL dans JustDecompile et allez sous References pour voir ce qui est réellement utilisé dans la DLL compilée.

enter image description here

2
toddmo

Je pense que sont copiés dans bin \, car dans le projet qui a supprimé la référence, il y a une référence à un autre projet qui a la même référence ...

0
hdmq

Si vous savez quelles références ne sont pas utilisées, vous pouvez les supprimer manuellement.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la référence dans le nœud Références, puis cliquez sur Supprimer.

0
fat

Étant donné que VisualStudio (ou est-ce msbuild?) Détecte les références inutilisées et ne les inclut pas dans le fichier de sortie, vous pouvez écrire un script qui analyse les références hors du csproj et le compare avec les assemblys référencés détectés par réflexion sur le sortie du projet.

Si vous êtes motivé ...

0
Benjol