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

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

我知道你可以很容易地删除vs 2008中的使用语句,但是这并不能删除你的项目中的实际引用。 被引用的dll仍然会被复制到你的bin / setup包中。

*注意:有关此答案的另一个版本,请参阅http://www.jetbrains.net/devnet/message/5244658

通过阅读post,似乎对原来的问题有些困惑。 让我试一试。

原帖是真的问这个问题:“我如何识别和删除从一个Visual Studio项目引用到其他项目/组件未使用? 海报希望程序集不再显示为构build输出的一部分。

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

为此,打开References inth Solution Browser,在每个引用的程序集上单击鼠标右键,然后select“Find Dependent Code”。 看到:

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

你会得到:

  1. 在浏览器窗口中,该引用的依赖关系列表,或

  2. 一个对话框告诉你“没有find依赖于模块XXXXXXX的代码”。

如果获得第二个结果,则可以右键单击Reference,selectRemove,然后将其从项目中删除。

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

您几乎可以忽略.Net框架中的那些,因为它们通常不会被复制到您的构build输出(通常 – 虽然对于Silverlight应用程序不一定是这样)。

有些post似乎回答了这样的问题:“如何从源代码文件中删除不需要parsing文件中任何引用的子句(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会对您的解决scheme进行静态代码分析。 所以,如果你有一个对程序集的dynamic引用 – 比如通过reflection或者一个在运行时dynamic加载并且通过一个接口访问的程序集,它就不会select它。 当你在你的项目中工作时,没有必要去理解你的代码库和项目依赖关系。 我发现ReSharperfunction非常有用。

你可以使用' 删除未使用的引用 '扩展我写道:

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

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

我已经在Microsoft Connect上打开了一个build议来获取C#项目的这个function:

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

如果你喜欢这个function,那么你可以投我的build议。

试试这个: Reference Assistant

概要

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

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

ReSharper 6.1将包含这些function:

– 优化引用:分析代码中的程序集引用及其用法,获取冗余引用列表并将其删除。

– 删除未使用的引用:快速重构删除多余的程序集引用。

安装引用上的安全删除:如果所有引用都是多余的,将会删除程序集引用,否则显示用法,只能删除选定列表的冗余程序集引用。

我在VS2010 Ultimate Architecture-> Generate Dependency Graph-> By Assembly中完成了这个扩展,它显示了使用的程序集,并手动删除了未使用的引用。

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

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

在这里输入图像说明

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

如果你有动力

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

如果您知道哪些引用没有被使用,您可以手动删除它们。
在解决scheme资源pipe理器中,右键单击引用节点中的引用 ,然后单击删除。