【问题标题】:Remove unused namespaces across a whole project or solution at once一次删除整个项目或解决方案中未使用的命名空间
【发布时间】:2010-09-21 23:01:50
【问题描述】:

我知道你可以逐个文件地做。

有没有办法一步完成一个项目中的所有文件?

【问题讨论】:

  • 几年过去了,你能考虑更新一下接受的答案吗?

标签: c# namespaces


【解决方案1】:

分析菜单下有一个内置功能,称为代码清理。 如果您单击 Profile 1,它将起到删除和排序功能的作用。

【讨论】:

    【解决方案2】:

    VS 2017 或 2019 中不需要任何插件。单击任何 using 语句附近的灯泡图标,然后单击 Fix all occurrences in 部分旁边的 Solution

    【讨论】:

    • 这对我有用,因为我希望在整个解决方案中删除特定的 using 语句。
    • 这是一个更好的解决方案,它接受的答案是 IDE 的本机。确认在 VS 2019 中工作
    • 天哪,我真是瞎了眼。一直在使用灯泡,现在才注意到这些操作可以应用于整个项目/解决方案。
    • 后来的版本没有以前的灯泡了,但是右键单击using 语句,然后(灯泡)“快速操作和重构...”将为您提供选项删除整个解决方案中的使用。
    • @NikolaNovak 你确定吗?我只是像往常一样在最新(且干净)的 VS2019 上使用灯泡。也许扩展程序在您的安装中改变了这一点?
    【解决方案3】:

    其他关于 Productivity Power Tools 扩展的答案没有详细说明如何实际执行此操作,因此以下是 Visual Studio 2013、2015、2017 和 2019 的一些说明:

    首先,在 Visual Studio 中打开 Tools > Extensions and Updates... 对话框,在左侧栏中选择 Online,然后在 Visual Studio Gallery 中搜索“生产力电动工具”。安装扩展并重启 VS。

    或者,您可以手动下载并安装适用于您的 Visual Studio 版本的扩展:

    Productivity Power Tools 2013
    Productivity Power Tools 2015
    Productivity Power Tools 2017/2019

    对于 VS2017 和 VS2019,您还可以在 Power Tools 包中单独下载 Power Commands 扩展:

    Power Commands for Visual Studio

    请注意,在撰写本文时,VS2017 版本不适用于 .Net Core 项目/解决方案。

    安装扩展程序后,只需在解决方案资源管理器中右键单击解决方案,然后选择 Power Commands > Remove and Sort Usings

    这可能需要一段时间,尤其是在大型解决方案上;它也不会使修改后的文件保持打开状态(因此无法撤消),因此确保在您选择的 VCS 中提交所有内容在运行之前,这样您就可以恢复如果出现问题,它会做出改变!

    更新:格式化所有文件

    最近我一直在使用 Format All Files 扩展程序,它允许您执行 Format DocumentRemove and Sort Usings 以及您选择的其他自定义命令(全部可选,在 VS 首选项中设置)。

    它似乎工作得很好,但同样,无法撤消,所以确保在您选择的 VCS 中提交所有内容在运行之前

    【讨论】:

    • 加一个用于添加当前版本和以前版本的链接。提供步骤,尽管它们很简单。
    • 加一个提醒我先提交。你可能刚刚救了我的培根!
    【解决方案4】:

    visual studio 2017 具有内置功能,可从整个项目中删除不必要的名称空间。

    【讨论】:

      【解决方案5】:

      对于更新的版本(包括 2017 年),请尝试使用 "Format All Files" 扩展名。它对我来说非常有效。

      【讨论】:

        【解决方案6】:

        我正在使用 Visual Studio 2015 并找到了一个名为 BatchFormat 的工具: https://marketplace.visualstudio.com/items?itemName=vs-publisher-147549.BatchFormat

        这完美地完成了这项工作。

        安装该工具,然后在解决方案资源管理器中右键单击您的解决方案,然后在菜单顶部您会看到批处理格式:

        无论您选择什么,都将应用于解决方案中的每个文件,正如您在屏幕截图中看到的那样,还有其他选项,您还可以格式化每个文档。

        【讨论】:

          【解决方案7】:

          生产力 电动工具正是您所需要的。 https://visualstudiogallery.msdn.microsoft.com/dbcb8670-889e-4a54-a226-a48a15e4cace

          安装后,您可以从“工具 –> 选项 –> Productivity Power Tools –> PowerCommands –> Generals”中找到“Remove and Sort Usings on Save”。检查该选项后,重新启动 VS。现在保存,你会看到神奇之处。

          对于 VS 2015,请查看this

          【讨论】:

            【解决方案8】:

            这是对上述 VB.NET 脚本的一个小改进。确保您已安装 Productivity Power Tools

                Private Sub RemoveAndSortSome(ByVal projectItem As ProjectItem)
                On Error Resume Next
                If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then
                    If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then
                        Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
            
                        window.Activate()
            
                        projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")
            
                        window.Close(vsSaveChanges.vsSaveChangesYes)
            
                    ElseIf projectItem.Name.LastIndexOf(".vb") = projectItem.Name.Length - 3 Then
                        Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
            
                        window.Activate()
            
                        projectItem.Document.DTE.ExecuteCommand("EditorContextMenus.CodeWindow.OrganizeImports.RemoveandSortImports")
            
                        window.Close(vsSaveChanges.vsSaveChangesYes)
                    End If
                End I
            

            【讨论】:

            • 感谢您提供电动工具的链接...我不知道它们在 2010 年就已经存在了,自从 2008 年升级以来我一直有点想念它们。
            【解决方案9】:

            对于 Visual Studio 2010,您可以从 Visual Studio 库下载“删除和排序使用”扩展。

            http://visualstudiogallery.msdn.microsoft.com/en-us/cb559aa8-d976-4cc2-9754-5a712f985d16

            适合我

            【讨论】:

            • 它也适用于 VS2013。尽管如此,至少在 VS2013 中,它会在保存文档时激活,然后,它不是一种对项目中的所有文件一次性执行此操作的方法
            • 确保您的源代码树在运行时展开。要运行此右键单击特定项目/解决方案,然后从解决方案资源管理器中选择“删除和排序未使用的扩展”选项。在此之后,每个文件仅在被清理之前打开,然后自动关闭。
            • 我相信链接现在是marketplace.visualstudio.com/…
            【解决方案10】:

            你的意思是使用语句吗?首先,请注意,它们通常不会伤害其他占用空间的东西。 ReSharper 之类的工具提供了自动执行此操作的技巧,但是:不久前有一个 link in the VS feed;归结为:

            • 转到工具 -> 宏 -> 宏 IDE...
            • 在 Project Explorer 中,添加 -> 添加模块...(输入名称 - 我使用了 OrganiseUsings)
            • 粘贴下面的代码
            • 文件 -> 保存 MyMacros,退出

            现在,如果您右键单击工具栏并自定义... - 您应该能够找到 MyMacros.OrganiseUsings.RemoveAndSortAll - 将其拖到方便的地方(可能是工具菜单;您可能还想在放置后更改名称它)。

            您现在可以使用此选项为整个解决方案运行删除和排序命令。大大节省时间。

            ==== 代码 ====

            Imports System
            Imports EnvDTE
            Imports EnvDTE80
            Imports EnvDTE90
            Imports System.Diagnostics
            
            Public Module OrganiseUsings
            
                Public Sub RemoveAndSortAll()
                    On Error Resume Next
                    Dim sol As Solution = DTE.Solution
            
                    For i As Integer = 1 To sol.Projects.Count    
                        Dim proj As Project = sol.Projects.Item(i)    
                        For j As Integer = 1 To proj.ProjectItems.Count    
                            RemoveAndSortSome(proj.ProjectItems.Item(j))    
                        Next    
                    Next    
                End Sub    
            
                Private Sub RemoveAndSortSome(ByVal projectItem As ProjectItem)
                    On Error Resume Next
                    If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then    
                        If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then
                            Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
            
                            window.Activate()
            
                            projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")
            
                            window.Close(vsSaveChanges.vsSaveChangesYes)
                        End If    
                    End If    
            
                    For i As Integer = 1 To projectItem.ProjectItems.Count    
                        RemoveAndSortSome(projectItem.ProjectItems.Item(i))    
                    Next
                End Sub   
            
            End Module
            

            【讨论】:

            • 不幸的是,Visual Studio 2012 不支持宏,因为它不支持 :(
            【解决方案11】:

            如果您的意思是“使用”电源命令包含此功能 + 船载更多。

            http://code.msdn.microsoft.com/PowerCommands

            【讨论】:

              猜你喜欢
              • 2015-08-26
              • 1970-01-01
              • 1970-01-01
              • 2016-08-27
              • 1970-01-01
              • 1970-01-01
              • 2013-11-10
              • 1970-01-01
              • 2010-09-05
              相关资源
              最近更新 更多