我有一个比较复杂的Visual Studio解决方案(版本为2010,但这不应该有影响),需要将其重命名。
我想要将文件夹重命名以匹配新的解决方案名称,但我无法找到自动重构文件夹名称的方法,而且逐个处理每个项目文件会很痛苦。
是否有官方的方法可以做到这一点?
我有一个比较复杂的Visual Studio解决方案(版本为2010,但这不应该有影响),需要将其重命名。
我想要将文件夹重命名以匹配新的解决方案名称,但我无法找到自动重构文件夹名称的方法,而且逐个处理每个项目文件会很痛苦。
是否有官方的方法可以做到这一点?
手动编辑 .sln 文件
这种方法完全是为了在Windows资源管理器中重命名项目目录。
此方法不会遇到下面删除/添加项目文件的方法中的问题(引用消失),但如果您的项目在源代码控制下,则可能会出现问题(请参见下面的注意事项)。这就是为什么第2步(备份)非常重要的原因。
Project1
重命名为Project2
。Project1
重命名为Project2
。Project1
重命名为Project2
。这样可以保留文件的历史记录。例如,在TortoiseSVN
中,右键单击文件,选择TortoiseSVN..重命名
。Project1
实例编辑为Project2
。您也可以查看手动重命名解决方案或描述这个手动过程的帖子。
优点
警告
更新2014-11-02
ReSharper已经添加了一个自动化方法,可以实现与上述手动方法相同的结果。如果命名空间带有蓝色波浪线,请单击操作金字塔图标执行以下操作之一:
在第二种情况下,最后一个单词定义了Windows资源管理器中的新目录名称,例如,如果我们将命名空间更改为ViewModel2
,它将提供将文件移动到文件夹ViewModel2
。
但是,这不一定会更新源代码控制中的文件,因此您可能仍然需要使用手动方法。
更新2018-01-31
已测试适用于Visual Studio 2008、2010、2012、2013、2015、2017 Update 1、2、3、4、5。
更新2020-05-02
已测试适用于Visual Studio 2019。
更新2021-11-19
重新测试,仍然有效。
更新2022-11-30
最新版本的Git应该会自动检测文件重命名,因此无需额外注意以保留差异历史记录。
如何重命名一个解决方案:
在“解决方案资源管理器”中,右键单击项目,选择“重命名”,然后输入新名称。
在“解决方案资源管理器”中,右键单击项目,选择“属性”。在“应用程序”选项卡上,更改“程序集名称”和“默认命名空间”。
在主cs文件(或任何其他代码文件)中,将命名空间声明重命名为新名称。要执行此操作,右键单击命名空间,选择“重构”>“重命名”,并输入新名称。例如:namespace WindowsFormsApplication1
更改Properties/AssemblyInfo.cs中的AssemblyTitle和AssemblyProduct。
[assembly: AssemblyTitle("New Name Here")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("New Name Here")]
[assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
删除 bin 和 obj 目录,物理上删除。
重命名项目的物理文件夹目录。
打开 SLN 文件(在记事本或任何编辑器中),将路径更改为项目路径。
清理并重新构建项目。
\Packages\repositories.config
文件中遗漏了项目路径。 - TedVisual Studio中的重命名操作仅更改文件名,即项目的*.prj和解决方案的*.sln。您需要使用文件系统单独重命名文件夹,并且需要删除和重新添加项目,因为它们将具有新的文件夹名称。但是,请注意,解决方案和项目文件分别是文本和xml文件。您可以编写自己的程序来解析它们并在内部重命名文件夹名称、文件名并修复项目/解决方案文件。
以下是在Visual Studio 2013中重命名整个解决方案的逐步方式
假设我们正在将名为“HelloWorld.ui”的项目更改为“Section1to5.ui”
右键单击刚刚重命名的项目,然后单击“属性”。在“应用程序”选项卡下,更改“程序集名称”和“默认命名空间”。
在主Program.cs文件(或任何其他可能创建的代码文件)中,将命名空间声明重命名为新名称。为此,请右键单击命名空间并选择“重构”>“重命名”,输入新名称。例如:
namespace HelloWorld.ui ----> namespace Section1to5.ui
接下来,展开“属性”并双击AssemblyInfo.cs文件。您将注意到以下代码片段:
你需要在Properties/AssemblyInfo.cs中更改AssemblyTitle和AssemblyProduct的名称,例如将其从“HelloWorld.ui”更改为“Section1to5.ui”。更改名称后,保存并关闭Visual Studio。
[assembly: AssemblyTitle("HelloWorld.ui")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyProduct("HelloWorld.ui")] [assembly: AssemblyCopyright("Copyright © Microsoft 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]
5. 在项目目录中进入“HelloWorld.ui”文件夹并删除“bin”和“obj”目录。
6.完成后,将文件夹“HelloWorld.ui”重命名为新项目名称。
7. 使用文本编辑器(如记事本或Notepad++)打开已重命名的解决方案文件并编辑以下行:
Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.ui", "HelloWorld.ui\HelloWorld.ui.csproj", "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}"
用你选择的新项目名称替换所有实例“HelloWorld.ui”,在这种情况下是“Section1to5.ui”。这会将项目路径更改为步骤6中重命名的目录。
8. 使用Visual Studio打开解决方案文件,并清理并重新生成项目。
9.您可能会注意到“调试/运行”按钮被“附加”按钮替换。如果发生这种情况,只需右键单击项目,然后选择“设置为启动项目”选项即可。或者,单击“工具”> “自定义”> “命令”> “添加命令”> “调试”,然后添加按钮。
完成重命名项目,如果有任何疑问,请随时发布,我很乐意帮助!
2021年更新:
renameproject 让这个过程变得轻松无比。这是一个简单的命令行工具,使用它甚至可以在重命名成功时创建一个git提交。
https://github.com/ModernRonin/ProjectRenamer
旧回答:
我使用了Visual Studio扩展程序“Full Rename Project”成功地将项目重命名为ASP.NET Core 2解决方案中的一个。
然后我使用ReSharper调整了命名空间(右键单击项目,重构,调整命名空间...)
删除bin和obj子文件夹以消除大量错误引用,然后使用Windows搜索旧名称。
编辑找到的任何代码或xml文件并重新构建,现在应该没问题了。
移除/添加项目文件的方法
这个方法完全是为了在Windows资源管理器中重命名项目目录而设计的。
优点
缺点
右键单击项目并选择“在Windows资源管理器中打开文件夹”可帮助您跟踪执行此过程时存储项目的位置。