it-swarm.cn

删除未使用的引用(!=“using”)

如何查找和删除项目中未使用的引用?

我知道您可以轻松删除vs 2008中的using语句,但这并不会删除项目中的实际引用。引用的dll仍将复制到bin/setup包中。

100
Boris Callens

*注意:请参阅 http://www.jetbrains.net/devnet/message/5244658 获取此答案的其他版本。

通过阅读帖子,看起来对原始问题存在一些混淆。让我来试试吧。

原帖实际上是在问这样一个问题:“我如何识别和删除一个Visual Studio项目中的引用到其他未使用的项目/程序集?”海报希望程序集不再作为构建输出的一部分出现。

在这种情况下,ReSharper可以帮助你识别他们,但你必须自己删除他们。

要执行此操作,请在解决方案浏览器中打开引用,右键单击每个引用的程序集,然后选择“查找从属代码”。看到:

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

你会得到:

  1. 浏览器窗口中该Reference的依赖项列表,或

  2. 一个对话框告诉您“找不到代码依赖于模块XXXXXXX。”。

如果得到第二个结果,则可以右键单击“参考”,选择“删除”,然后将其从项目中删除。

虽然你必须“手动”,即一次一个参考,它将完成工作。如果有人以某种方式将其自动化,我有兴趣听听它是如何完成的。

您几乎可以忽略.Net Framework中的那些,因为它们通常不会被复制到您的构建输出(通常 - 虽然对于Silverlight应用程序不一定如此)。

有些帖子似乎在回答这个问题:“如何从源代码文件中删除使用不需要解析该文件中任何引用的子句(C#)”。

在这种情况下,ReSharper在以下几个方面提供帮助:

  1. 在飞行错误检测期间为您标识未使用的使用子句。它们显示为代码检查警告 - 代码将在文件中显示为灰色(默认),ReSharper将提供删除它的提示:

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

  2. 允许您在代码清理过程中自动删除它们:

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

最后,意识到ReSharper对您的解决方案进行静态代码分析。因此,如果你有一个动态引用程序集 - 比如通过反射或在运行时动态加载并通过接口访问的程序集 - 它将不会提取它。 当您处理项目时,无法替代理解代码库和项目依赖性。我发现ReSharper功能非常有用。

55
jlo

您可以使用' 删除未使用的引用 '我写的扩展名:

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

12
Spongman

删除未使用的引用是Visual Studio 2008已经支持的功能。不幸的是,仅适用于VB .NET项目。

我已经在Microsoft Connect上打开了一个建议,以便为C#项目获取此功能:

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

如果您也喜欢这个功能,那么您可以投票给我的建议。

7
jbe

试试这个: 参考助手

摘要

Reference Assistant有助于从Visual Studio 2010中的C#,F#,VB.NET或VC++/CLI项目中删除未使用的引用。

5
Leniel Maccaferri

ReSharper 6.1将包含以下功能:

- 优化引用:在代码中分析汇编引用及其用法,获取冗余引用列表并将其删除。

- 删除未使用的引用:快速重构以删除冗余的程序集引用。

- 程序集引用上的安全删除:如果所有这些引用都是冗余的,则将删除程序集引用,否则会使用不正确并且只能删除所选列表的冗余程序集引用。

4
Kirill Skrygan

Resharper 会为你做这个(还有更多!)

4
Chris Canal

我在VS 2010 Ultimate Architecture-> Generate Dependency Graph-> By Assembly中没有扩展地完成了这项工作,它显示了使用过的程序集,并手动删除了未使用的引用。

3
mes

我有一个免费的答案,适用于任何版本的Visual Studio和任何Framework版本。它不会删除未使用的引用,但会识别它们。

您可以在项目dll上使用 Telerik JustDecompile 。只需在JustDecompile中打开dll,然后在References下查看编译后的dll中实际使用的内容。

enter image description here 

2
toddmo

我认为这是复制在bin \中,因为在删除引用的项目中有引用o具有相同引用的其他项目...

0
Henry Martinez Q.

如果您知道哪些引用未使用,则可以手动删除它们。
在“解决方案资源管理器”中,右键单击 References node中的引用,然后单击“删除”。

0
fat

鉴于VisualStudio(或者它是msbuild?)检测到未使用的引用并且不将它们包含在输出文件中,您可以编写一个脚本来解析csproj中的引用,并将该引用与通过反射检测到的引用的Assemblies进行比较。项目产出。

如果你有动力......

0
Benjol