如何更改整个项目的名称空间?


104

我正在从本文中修改演示应用程序:http : //msdn.microsoft.com/zh-cn/magazine/dd419663.aspx

我需要更新所有文件以使用我的命名空间,例如现在文件位于此处:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs

正在使用这样的名称空间:

namespace DemoApp.ViewModel
{
/// <summary>
/// The ViewModel for the application's main window.
/// </summary>
public class MainWindowViewModel : WorkspaceViewModel

我需要在此处移动文件(删除DemoApp文件夹):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs

并使用正确的名称空间:

namespace MyApp.ViewModel
{
....

在Visual Studio 2010中该怎么做?

OK,这里是可能的更新,可能是重复的在Visual Studio中更改项目名称空间现在,我知道如何更改项目的名称空间,但是如何在文件系统上移动文件?(摆脱“ DemoApp”文件夹)


4
就像FYI一样,您不一定需要名称空间来匹配.NET中的文件夹结构,也不需要。
詹姆斯·迈克尔·哈尔

1
正如詹姆斯所说,这不是必需的。但是我会问为什么有人没有在需要使用的应用程序上“完成工作”。
NotMe 2011年

1
关于移动文件..嗯,剪切/粘贴和拖放通常可以在Visual Studio解决方案管理器中使用。甚至可以重命名文件夹或删除。取决于您真正要做什么。
NotMe 2011年

Answers:


124

我想象一个简单的“替换为文件”(Ctrl+ Shift+ H)就可以解决问题。只需替换namespace DemoAppnamespace MyApp。之后,构建解决方案并查找未知标识符的编译错误。完全合格的任何内容DemoApp都需要更改为MyApp


62
重要; 也更改项目属性中的默认名称空间;这控制了诸如resx之类的名称空间
Marc Gravell

我有几个代表WPF窗口的XAML文件,所以这对我不起作用。
Pieter

6
您还应该对任何using语句运行替换以从更改using DemoAppusing Myapp
swbandit 2015年

5
还要在views文件夹中的所有web.config文件中重命名<add namespace =“ OldNameSpace” />
neo112

@Pieter您应该能够替换整个应用程序,然后按照Marc的建议在属性中进行更新,然后关闭解决方案并再次打开它,否则VS具有无法自动完成的无法解释的行为。
埃里克

152

转到某个位置,其中一个文件中声明了名称空间。将光标放在要更改的名称空间的一部分上,然后按F2。这应该重命名每个文件中的名称空间。至少,它在我创建的用于测试此答案的小演示项目中有效!

根据您的VS版本,快捷方式也可能是Ctrl- RCtrl- R


1
由于某种原因对我不起作用。我按F2键,没有任何反应。
javapower14年

6
@javapowered,那么您的热键已被自定义。寻找适合您的VS选项。今天我的是CTRL-R CTRL-R。
艾米

4
注意:尽管我仍然喜欢这种方法,但它[无法理解]无法替换视图以及Views /目录中包含的web.config文件中的引用。只要注意那些。
Wiseguy 2014年

3
对于不依赖于热键更改的版本,只需右键单击名称空间名称,然后选择重命名。
Kat

3
不幸的是,如果您希望新名称包含一个.字符,则此方法将无效。
BotondBalázs'16 -10-17


3

Ctrl+ Shift+ H不是真正的解决方案。

您可以使用Resharper更改解决方案中的所有名称空间定义。这是我之前尝试过的最好方法。

https://www.jetbrains.com/resharper/features/code_refactoring.html


2
Resharper需要使用价格昂贵的台式机
Ivan G.16年

@IvanG。好吧,许多商业项目也需要完全昂贵的开发人员,因此在较宏伟的方案中,机器和R#许可证的成本并不高;)如果需要检查此(或Adam或Amy)方法是否正确运行,您可以查看“ 查找代码问题
StuartLC”,2017年

1
不幸的是,@ StuartLC专用工作场所和大型台式机的时代已经一去不复返了,我使用了功能非常强大的笔记本电脑进行开发,并且几乎不用杀手了,所以我不建议任何珍惜时间的人使用它。
伊万·G.17年

伙计们,你可以只使用重命名为自由你知道:-)安装它激活免费试用版,将其重命名,如果你想;-)卸载
塞尔丘克Ermaya

1

我已经使用名为BareGrep的工具仔细检查了文件夹结构,以确保我进行了所有名称空间更改。它是一个免费工具,可让您搜索指定文件结构中的文件。


文件匹配REGEX:(. exe)|(.dll)|(.cache)|(.pdb) 然后反转匹配。重复此模式以排除其他二进制文件等。
twobob 2014年


1

您可以使用ReSharper进行名称空间重构。它将提供30天的免费试用期。它将根据文件夹结构更改名称空间。

脚步:

1)右键单击要重构的项目/文件夹/文件。

2)如果您已经安装了ReSharper,那么您将获得一个选项Refactor-> Adjust Namespaces...。因此请单击此选项。

在此处输入图片说明

它将自动更改所有选定文件的名称空间。


谢谢..我能够做到这一点。
sgowd

0

我尝试了所有方法,但是找到了切实可行的解决方案。它使用新的名称空间名称等等创建独立的解决方案。

  1. 在主窗体中,找到名称空间名称->右键单击->重构->重命名,然后选择一个新名称。选中所有框,然后单击确定。

  2. 在解决方案资源管理器中,将解决方案名称重命名为新名称。

  3. 在解决方案资源管理器中,将项目名称重命名为新名称。

  4. 关闭VS,并将解决方案文件夹中的文件夹(例如,总指挥官)重命名为新名称。

  5. 在.sln文件中,将旧名称重命名为新名称。

  6. 删除旧的.suo文件(隐藏)

  7. 启动VS并加载项目

  8. 项目->属性->将程序集名称和默认名称空间更改为新名称。


0

我知道它已经很晚了,但是对于从现在开始想要这样做的任何人,我希望这个答案能对您有所帮助。如果您已安装CodeRush Express免费版本,并且必须安装),则它提供了一种更改项目范围名称空间的简单方法。您只需将光标放在要更改的名称空间上,它将smart tagnamespace字符串下方显示(一个小蓝框)。您可以单击该框或Ctrl +按键以查看该Rename选项。选择它,然后为项目范围的命名空间键入新名称,单击Apply并在新对话框及其中选择要在项目中更改的位置OK。做完了!:-)


以我的经验,CodeRush Express不是“必须拥有”(个人意见)。这样的事情很方便。
马丁(Maarten)

0

当我想更改名称空间和解决方案名称时,我做了如下操作:
1)通过选择名称并重命名来更改名称空间,我对解决方案名称进行了相同的操作
2)单击灯泡并重命名了旧名称空间的所有实例
3 )从解决方案中删除所有项目
4)关闭Visual Studio
5)重命名Windows Explorer中的所有项目
6)打开Visual Studio并再次添加所有项目
7)重命名其属性中所有项目中的名称空间
8)删除bin文件夹(所有项目)
9)再次构建项目

这对我没有任何问题,而且我的项目也具有源代码控制。将这些更改推送到遥控器后,一切都很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.