分析并优化项目引用
此功能有助于管理现有的项目/程序集引用,浏览引用项目/程序集的用法,并移除未使用的引用。 您可以在任意单个项目上调用此功能,并使用分析引用窗口分析和优化项目引用。
分析项目引用
分析引用 工具窗口显示当前项目中的项目/程序集引用,并让您探索这些引用的具体用法。 要探索特定程序集、命名空间或类型的用法,您可以按种类筛选并分组。
符号图标可以帮助您区分不同种类的符号。 每个用法都会显示行号和列号;不同的图标表示不同种类的用法,例如读取、写入、属性或调用用法。 您可以双击任意用法直接导航到源代码。
在解决方案资源管理器中,选择您想要分析的项目或其 引用 节点。
执行以下操作之一:
选择
右键单击所选内容,然后在上下文菜单中选择 优化引用。
按 Control+Alt+Y。
使用分析引用窗口中的控件探索项目引用。

移除未使用的引用
清理项目引用的最简单方法是单击工具栏上的 移除所有未使用的引用
。 如果您想保留一些未使用的引用或移除一些已使用的引用(并手动解决随之而来的编译错误),您可以进行相应选择并单击 移除所选引用
。
当您移除项目和程序集引用时,ReSharper 还会删除所有冗余的命名空间导入指令(C# 中的 using ,Visual Basic 中的 Imports ),这些指令引用了已移除程序集中的命名空间。
所有 Visual Studio 项目必须引用 mscorlib ,并且从 Visual Studio 2010 开始,还必须引用 System.Core 程序集。 这些程序集会用图钉
图标标记,您无法移除这些引用。
无论是否使用,编译所需的引用都会显示在 编译器所需的引用 组中。 此组中的引用通常具有“相关用法”,即隐式(非直接)用法。 在最简单的情况下,相关用法是由类型的层次结构引起的。 也就是说,如果您使用某种类型,您必须引用包含该类型的所有超类型的程序集。
NuGet 包会显示为相应的图标
。 淡化的图标表示该包没有用法,可以安全移除。 移除 NuGet 包时,ReSharper 将使用 NuGet 卸载机制。
还有其他清理项目和程序集引用的方法。
保留对隐式加载程序集的引用
某些项目类型会隐式使用引用,这意味着这些引用仅在运行时使用。 即使没有代码依赖,这些引用也无法安全移除。
如果您仍希望使用 ReSharper 的清理功能(分析引用窗口中的 移除所有未使用的引用 按钮和 移除未使用的引用 重构),您需要将隐式加载的程序集标记为此类。
标记隐式加载的程序集
打开分析引用窗口。
在 未使用的引用 部分,找到您需要保留的隐式使用引用。
右键单击引用并选择以下选项之一:
将引用标记为在运行时使用 - 将所选引用从当前项目的清理中排除
为整个解决方案将引用标记为在运行时使用 - 将所选引用从解决方案中所有项目的清理中排除
ReSharper 将在其 分层设置 中保存有关隐式使用引用的信息——在项目或解决方案的 *.DotSettings.user 文件中。
分析引用窗口
控件 | 名称 | 描述 |
|---|---|---|
| 刷新 | 更新窗口内容以反映代码或外部所做的任何更改。 |
| 全部展开/全部收起 | 展开/折叠当前选项卡中的所有节点。 |
| 上一个/下一步 | 导航到上一个/下一个项目,并相应地滚动浏览源代码。 |
| 显示预览 Ctrl+P | 隐藏或显示预览选定项目的窗格,位置由列表指定(在窗口底部或右侧)。 |
| 导出 | 单击此按钮以文本格式导出当前显示在窗口中的数据,或使用下拉选择器以 XML 或 HTML 格式导出数据。 出现的导出数据对话框将帮助您将数据保存到文件或复制到剪贴板。 |
| 合并同一行上的匹配项 | 选择此选项时,同一行上的出现项将显示为单个项目。 |
| 移除所有未使用的引用 | 移除所有未使用的程序集引用。 |
| 移除所选引用 | 移除所有选定的程序集引用。 |
| 筛选用法 | 通过此列表,您可以选择要显示的特定用法类型,例如声明、调用、参数、方法返回等。 单击 显示所有用法 启用所有用法类型,或单击 清除筛选器 禁用所有用法类型,从而隐藏当前选项卡中的所有用法。 |
分组依据 | 允许按不同类别对窗口中的项目进行分组。 |
窗口选项卡
当优化引用命令的结果在窗口中打开时,它们会显示在左侧的新选项卡中。 如果窗口宽度允许,先前打开的选项卡会向右移动,否则它们会卸载以节省内存——但您始终可以通过单击选项卡右侧出现的箭头并单击所需的选项卡来恢复它们:

要防止选项卡卸载,请单击选项卡标题旁边的固定图标
。