如何在Visual Studio中更改整个解决方案项目的名称?

17

我有一个ASP.NET CORE C#项目。

我想要更改我的解决方案名称和整个项目的名称。

例如:

OldSolution.OldName // this is Solution

OldSolution.OldName.Project1
OldSolution.OldName.Project2
OldSolution.OldName.Project3
ChangedName.NewName // this is solution

ChangedName.NewName.Project1
ChangedName.NewName.Project2
ChangedName.NewName.Project3

随着所有命名空间的更改,参考其他项目的项目名称(当我查看项目的引用时,被引用的项目仍然具有相同的名称。它们并没有被更改)。

我可以这样做吗?

4个回答

51

我之前也遇到过这个问题,但没有找到自动化的方法来解决。我必须像这样手动完成:

重命名解决方案。最简单的部分。 进入“解决方案资源管理器”(从菜单“视图”->“解决方案资源管理器”),选择解决方案,然后按F4键(或从菜单“视图”->“属性窗口”)选择名称属性并输入新名称,然后按ENTER键。这不会更改整个解决方案所在文件夹的名称。如果您想更改它(我确实想要这样做),您必须关闭Visual Studio,然后重命名该文件夹。如果在新名称后(文件->打开->项目/解决方案...)通过浏览打开解决方案,您将看到解决方案的新名称已更改。

以下是如何尝试处理项目的方法:

  • 在“解决方案资源管理器”中右键单击项目,选择“重命名”,输入新名称

  • 再次右键单击项目并选择属性。在应用程序选项卡上更改“程序集名称”和“默认命名空间”。

  • 当您安装了ReSharper时,再次右键单击项目并选择“重构”->“调整命名空间”。接受更改。

  • 在“属性/AssemblyInfo.cs”中更改“AssemblyTitle”和“AssemblyProduct”

  • 在Windows资源管理器中删除bin和obj目录

  • 打开SLN文件(使用诸如Notepad++之类的文本编辑器),并更改项目的路径(应该有多个位置)。

  • 再次打开解决方案。清理和重新生成项目。


2
我没有找到名为“Refactor -> 调整命名空间”的选项。相反,我按照您的前两点,然后使用Notepad++在解决方案文件夹中查找并替换旧命名空间的所有出现。这是一种相当粗暴的处理方式,但效果很好。 - Mariusz
3
“Refactor -> 调整命名空间”选项是 ReSharper 的功能。(一款付费的 Visual Studio 扩展。) - EnterTheCode
1
我的文件夹结构不会改变吗? - Daniëlle
1
如果您没有访问ReSharper的权限,我发现了一个相对快速的方法来重构所有命名空间。通过按下ctrl+shift+f打开“替换文件”功能。然后将所有出现的'namespace OldProjectName.'替换为'namespace NewProjectName.'。当所有替换完成后,再进行同样的操作,但是将'using OldProject.'替换为'using NewProject.'。现在重新构建并修复剩余的少数错误,其中引用了命名空间而没有在其前面加上'using'或'namespace'。 - Hedgybeats

6

如何重命名解决方案

  1. 在Visual Studio的解决方案资源管理器中,右键单击解决方案节点,然后从上下文菜单选择Rename。
  2. 输入解决方案的新名称。

如何重命名项目

  1. 在Visual Studio的解决方案资源管理器中,右键单击项目节点,然后从上下文菜单选择Rename。

  2. 输入项目的新名称。

如何更改默认命名空间:转到 项目->属性->默认命名空间 并输入所需的名称。

如何更改旧文件的命名空间:请参考此stackoverflow帖子

在文件中替换 (Ctrl+Shift+H) 将旧命名空间替换为新的!

如何更新引用:您需要重新添加引用,我不认为有更简单的方法。除此之外,删除和添加引用非常简单明了。

希望这能有所帮助!


这对我没有帮助。因为所有的解决方案仍然相同,包括命名空间、引用的项目名称等。 - canmustu
之前我更改名称之前创建的旧文件仍然处于相同的命名空间,在项目的引用中仍然使用旧的引用名称。这里没有任何更改。 - canmustu
请按照上述建议在所有文件中替换命名空间名称。 - Ankit
它不会更改所引用项目的名称。在项目属性后面的项目名称我不知道仍然是相同的。例如:我将A项目引用到B项目,然后我将名称“A”更改为“C”!那么B的引用仍然是“A”...当我这样做时会出现错误。 - canmustu
你需要再次添加引用,我认为没有更简单的方法。此外,删除和添加引用非常简单。 - Ankit
1
当我这样做时,出现了错误。你尝试过你所说的吗? - canmustu

0
在 .net core 2.2 中,当您尝试重命名命名空间时,会通过文件 _ViewImports.cshtml 抛出异常。为了克服这个问题,请先手动在此文件中重命名命名空间(无需重构 -> 重命名),然后再从其他地方使用重构 -> 重命名来重命名该命名空间。希望这可以帮到您。

0

今天我通过以下方式成功地更改了整个解决方案(请记住,我故意想要将每个名称从旧的更改为新的(包括字符串文字)。

  • 使用Notepad++查找并替换整个解决方案文件夹中的旧名称和新名称
  • 手动更改文件夹名称/项目名称

如果您想要将所有旧名称更改为新名称,则此方法适用,而且速度更快,更简单。


您的意思是要同时更改源代码文件中对解决方案名称的所有引用吗?OP 表示这是他们目标的一部分。 - ryanwebjackson
使用Notepad++的替换功能,可以实现对所有内容的逐一替换,因此我相信任何引用都将被改为新名称。 - ben rycroft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接