我正在做一些架构清理,其中涉及将一堆类移到不同的项目和/或名称空间中。目前,我正在手动移动文件,构建文件,然后根据需要使用Foo语句手动添加文件以解决编译错误。有人知道这样做更聪明吗?(我们是一家CodeRush和Refactor!商店,但我很想知道Resharper是否对此提供支持)
Answers:
Visual Studio 2010可以重命名名称空间。将光标放在名称空间名称上,然后按F2。或者干脆码,并按其重命名Shift+ Alt+ F10,Enter看到红色的波浪线出现之后。
Reharper还可以重命名名称空间。引用:
在重命名命名空间重构,用户可以重命名一个特定的命名空间,并自动修正到代码中的命名空间的所有引用。以下用法已重命名:
- 命名空间语句
- 使用指令
- 类型的合格名称
NS::C
移至NS::NS1::C
。重命名空间可以做到吗?
Visual Studio 2019提供至少2个内置选项:
可以在任何类上触发“移至名称空间...”重构,VS会提示您输入目标名称空间。
当前文件名称空间与文件夹结构不匹配时,提供“将名称空间更改为...”重构。
这可用于通过以下方式将各个类移动到不同的名称空间:
这些操作确保所有引用都相应更新。
Move to namespace...
打开Quick Actions and Refactorings...
菜单时,我是唯一一个看不见的人吗?我只有Generate constructor...
,Generate overrides...
或Extract Interface...
。可能是重构仅适用于C#而不适用于VB ..可惜..
此答案至少适用于Visual Studio 2013和2015 ,无需重新共享
MyCorp.AppStuff.Api
MyCorp.AppStuff.Api.Extensions
namespace
。
VS 2015和VS 2017有部分解决方案,无需使用免费扩展程序Resharper。
我今天喜欢(2017年底)的一个扩展是Fix Namespace VS Extension:https : //marketplace.visualstudio.com/items?itemName= vs-publisher-599079.FixNamespace# overview
它分析解决方案的文件夹结构,并使用该结构提供名称空间重构。不幸的是,它并不是完美的:它不能很好地跟踪依赖关系,但却为我解决了大部分工作。
使用Resharper:CTRL+ R+O
然后按两次向下箭头键,选择“将类型移动到另一个命名空间”。
由于提供了以上答案(我猜是这样),所以此功能已添加到CodeRush中。只需将克拉放在要移动的类型上,您就会在“重构”上看到“将类型移动到名称空间”选项!上下文菜单。这会将类型移动到新的名称空间并更新引用。但是,您可能仍希望将文件移动到与名称空间名称匹配的解决方案文件夹中。
如果您不能或不想使用Re $ harper,Notepad ++是您的朋友:
完成
namespace A.B.C
使用namespace X.Y.Z
,而不影响using
秒。该解决方案是有效的,即使您可以使用Visual Studio来实现,我也不记得为什么2年前我提出了这个解决方案。无论如何,不赞成投票似乎是一种激进的做法,因为这个答案既没有误导也不危险。