我有一个相当复杂的 Visual Studio 解决方案(2010,但没关系),我需要重命名。
我想重命名文件夹以匹配新的解决方案名称,但我想不出一种自动重构文件夹名称的方法,并且浏览每个项目文件都会很痛苦。
有没有官方的方法可以做到这一点?
手动编辑 .sln 文件
此方法完全旨在重命名项目的目录,如在 Windows 资源管理器中查看的那样。
此方法不会遇到以下删除/添加项目文件方法中的问题(引用消失),但如果您的项目处于源代码控制之下,它可能会导致问题(请参阅下面的注释)。这就是为什么第 2 步(备份)如此重要的原因。
关闭 Visual Studio。创建 .sln 文件的备份(您可以随时回滚)。假设您要将目录 Project1 重命名为 Project2。如果不使用源代码管理,请使用 Windows 资源管理器将文件夹从 Project1 重命名为 Project2。如果使用源代码管理,请使用源代码管理提供的功能将文件夹从 Project1 重命名为 Project2。这会保留文件的历史记录。例如,使用 TortoiseSVN,右键单击文件,选择 TortoiseSVN .. 重命名。在 .sln 文件中,使用记事本等文本编辑器将 Project1 的所有实例编辑为 Project2。重新启动 Visual Studio,一切都会像以前一样工作,但项目位于不同的目录中。
您还可以看到 renaming solution manually 或 post which describes this manual process。
优点
您可以使 Windows 资源管理器中的目录与解决方案中的项目名称相匹配。
此方法不会删除其他项目对此文件的任何引用(优于删除/添加项目文件方法,请参阅下面的其他答案)。
警告
在重命名任何内容之前将所有内容备份到 .zip 文件中很重要,因为这种方法可能会导致源代码管理出现问题。
如果您的项目受源代码控制,如果您重命名源代码控制之外的文件或目录(使用 Windows 资源管理器),可能会产生问题。如果可以的话,最好使用源代码控制框架本身重命名文件,以保留该文件的历史记录(在右键单击时查看上下文菜单 - 它可能具有重命名文件的功能)。
2014-11-02 更新
ReSharper 添加了一种自动化方法,可实现与上述手动方法相同的结果。如果命名空间带有蓝色波浪线下划线,请单击操作金字塔图标以:
重命名命名空间以匹配 Windows 资源管理器中的目录名称,或者;
在 Windows 资源管理器中重命名目录以匹配命名空间。
在第二种情况下,最后一个词定义了 Windows 资源管理器中的新目录名称,例如,如果我们将命名空间更改为 ViewModel2
,它将提供将文件移动到文件夹 ViewModel2
。
但是,这不一定会更新源代码管理中的文件,因此您可能仍需要使用手动方法。
https://i.stack.imgur.com/fmzyo.png
更新 2018-01-31
使用 Visual Studio 2008、2010、2012、2013、2015、2017 更新 1、2、3、4、5 进行测试。
2020-05-02 更新
使用 Visual Studio 2019 进行测试。
2021-11-19 更新
重新测试。仍然有效。
要重命名解决方案:
在解决方案资源管理器中,右键单击项目,选择重命名,然后输入新名称。在解决方案资源管理器中,右键单击项目并选择属性。在“应用程序”选项卡上,更改“程序集名称”和“默认命名空间”。在主 cs 文件(或任何其他代码文件)中,重命名命名空间声明以使用新名称。为此,右键单击命名空间并选择 Refactor > Rename 输入一个新名称。例如:命名空间 WindowsFormsApplication1 更改 Properties/AssemblyInfo.cs 中的 AssemblyTitle 和 AssemblyProduct。 [程序集:AssemblyTitle(“此处的新名称”)] [程序集:AssemblyDescription(“”)] [程序集:AssemblyConfiguration(“”)] [程序集:AssemblyCompany(“”)] [程序集:AssemblyProduct(“此处的新名称”) ] [assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] 物理删除 bin 和 obj 目录。重命名项目物理文件夹目录。打开 SLN 文件(在记事本或任何编辑器中)并更改项目的路径。清理并重建项目。
Dataset
(如果您已附加到您的项目)。
\Packages\repositories.config
文件中的项目路径。
Visual Studio 中的重命名操作仅更改文件名,即*.prj 用于项目,*.sln 用于解决方案。您将需要使用文件系统单独重命名文件夹,并且您将需要删除并重新添加项目,因为它们将具有新的文件夹名称。但是,请注意解决方案和项目文件分别是文本和 xml 文件。您可以编写自己的程序来解析它们并重命名文件夹名称、文件名,并在内部修复项目/解决方案文件。
您还可以导出模板,然后从导出的模板创建一个新项目,根据需要更改名称
下面是在 Visual Studio 2013 中重命名整个解决方案的分步方法
假设我们将一个名为“HelloWorld.ui”的项目更改为“Section1to5.ui”
转到解决方案资源管理器(下面的屏幕截图),右键单击要重命名的项目并选择“重命名”。输入您想要的新名称。
https://i.stack.imgur.com/qzTET.png
右键单击刚刚重命名的项目,然后单击“属性”。在“应用程序”选项卡下,更改“程序集名称”和“默认命名空间”。在主 Program.cs 文件(或您可能创建的任何其他代码文件)中,重命名命名空间声明以使用新名称。为此,右键单击命名空间并选择 Refactor > Rename 输入一个新名称。例如: namespace HelloWorld.ui ----> namespace Section1to5.ui 接下来,展开“属性”并双击 AssemblyInfo.cs 文件。您会注意到以下代码片段:
[程序集:AssemblyTitle("HelloWorld.ui")] [程序集:AssemblyDescription("")] [程序集:AssemblyConfiguration("")] [程序集:AssemblyCompany("Microsoft")] [程序集:AssemblyProduct("HelloWorld.ui" )] [程序集:AssemblyCopyright("Copyright © Microsoft 2015")] [程序集:AssemblyTrademark("")] [程序集:AssemblyCulture("")]
您需要将 Properties/AssemblyInfo.cs 中的 AssemblyTitle 和 AssemblyProduct 更改为新名称,在本示例中从“HelloWorld.ui”更改为“Section1to5.ui”。更改名称后,保存并关闭 Visual Studio。
在项目目录中,进入文件夹“HelloWorld.ui”并删除“bin”和“obj”目录。完成后,将文件夹“HelloWorld.ui”重命名为新项目名称。使用 Notepad 或 Notepad++ 等文本编辑器打开重命名的解决方案文件并编辑以下行: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.ui", "HelloWorld.ui\HelloWorld. ui.csproj", "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}"
将“HelloWorld.ui”的所有实例替换为您为项目选择的新名称,在本例中为“Section1to5.ui”。这会将项目的路径更改为步骤 6 中重命名的目录。
用 Visual Studio 打开解决方案文件,清理并重建项目。您可能会注意到“调试/运行”按钮已被“附加”按钮取代。如果发生这种情况,只需右键单击项目并选择“设置为启动项目”选项。或者,单击工具>自定义>命令>添加命令>调试并添加按钮。
您已完成对项目的重命名,如果您有任何疑问,请随时发布,我很乐意提供帮助!
2021 年更新:
renameproject 使这变得毫不费力。一个简单的 CLI 工具,它甚至可以在成功时创建一个 git commit。
https://github.com/ModernRonin/ProjectRenamer
老答案:
我已使用 Visual Studio 扩展“完整重命名项目”成功重命名 ASP.NET Core 2 解决方案中的项目。
然后我使用 ReSharper 来调整命名空间(右键单击项目、重构、调整命名空间...)
https://github.com/kuanysh-nabiyev/RenameProjectVsExtension
https://i.stack.imgur.com/3Tkl7.png
删除您的 bin 和 obj 子文件夹以删除大量不正确的引用,然后使用 windows 搜索旧名称。
编辑找到并重建的任何代码或 xml 文件,现在应该可以了。
删除/添加项目文件方法
此方法完全旨在重命名项目的目录,如在 Windows 资源管理器中查看的那样。
使用 GIT、SVN 或 WinZip 之类的工具备份整个项目(很重要!)。在 Visual Studio 的解决方案中,删除该项目。在 Windows 资源管理器中重命名目录。在 Visual Studio 中重新添加项目。
优点
您可以使 Windows 资源管理器中的目录与解决方案中的项目名称相匹配。
缺点
如果您删除一个库,它会从其他项目中删除对该库的任何引用。在您重新添加对所述库的引用之前,解决方案可能无法编译(这很容易)。这就是第 1 步(备份)如此重要的原因。
如果您有源代码控制,您将丢失文件的历史记录。
右键单击项目并选择“在 Windows 资源管理器中打开文件夹”有助于在执行此过程时跟踪项目的存储位置。
使用 Notepad++ 的“在文件中查找”功能对我来说效果很好(ctrl + H,在文件中查找)。
http://notepad-plus-plus.org/download/v6.2.2.html
我尝试了 Visual Studio Project Renamer,但是在我尝试的少数情况下它抛出了异常。
我在 CopyWiz 上取得了很好的成功。
我与他们没有任何关系,我还没有为它付费,但我可能很快就要付钱了,因为它是唯一一个似乎适用于我的 C# 和 C++ 项目的工具。不过,我确实希望他们赚一点钱,并继续改进它。
你可以:
单击文件->新建->从现有项目中创建项目选择您的原始文件,例如。解决方案1并输入新文件名解决方案2在新解决方案2中更改项目名称
如果您在加载共享项目(如 Xamarin)时遇到问题,请记住更改对 csproj 文件中共享库的引用。我开发了一个 CocosSharp 游戏,而 Droid/iOS/WP81 项目不想加载。我必须在每个引用共享库的 csproj 文件(Driod/iOS/WP81)中更改下面的行。这是由于文件夹名称更改引起的,因此请将 YOUR_PREVIOUS_NAMESPACE 替换为您的新文件夹名称。
<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />
另外,我注意到对于 .Driod 项目,项目属性中的程序集名称无法使用 Visual Studio 更改(我使用 2015)。我不得不在 .Droid.csproj 文件中手动更改程序集名称。
<AssemblyName>YourNameSpace</AssemblyName>
然后我加载了解决方案并在项目属性视图中出现了新名称。生成具有该名称的 dll 后。
如果您在 Visual Studio 2010 中创建网站。您可以按如下方式更改项目名称。
第 1 步:在 Visual Studio 2010 中,SLN 文件将存储在 Visual Studio 2010 中的项目文件夹下,而源文件将存储在 Visual Studio 2010 中的网站文件夹下。
第 2 步:通过右键单击包含您的 SLN 项目的 Rename 转发的文件夹来重命名文件夹。
第 3 步:通过右键单击该 SLN 文件,通过 Rename 转发重命名 SLN 文件名。
第 4 步:在 Visual Studio 2010 的网站下重命名包含该 SLN 文件源的文件夹。
第 5 步:最后双击您的 SLN 文件并更改 SLN 源文件夹的根目录。
在 WEB 项目中的 Visual Studio 2013 上唯一适用于我的解决方案:
假设我想将“project1”重命名为“project2”。假设我的 .sln 文件的物理路径是:c:\my\path\project1\project1.sln
所以我的 .csproj 文件以及 bin 和 obj 文件夹的路径应该是:c:\my\path\project1\project1\
通过双击 project1.sln 文件在 VS 中打开解决方案。在解决方案资源管理器中,右键单击项目(不是解决方案!!!),选择重命名,然后输入新名称。在解决方案资源管理器中,右键单击项目并选择属性。在“应用程序”选项卡上,更改“程序集名称”和“默认命名空间”。在主 CS 文件(或任何其他代码文件,例如 Global.asax)中,重命名命名空间声明以使用新名称。为此,右键单击命名空间并选择 Refactor > Rename 输入一个新名称。例如:
命名空间项目1
4.1 在解决方案资源管理器中,右键单击项目(不是解决方案!!!),选择重命名,然后输入新名称。
确保:Properties/AssemblyInfo.cs 中的 AssemblyTitle 和 AssemblyProduct 设置为新名称(“project2”)。
[程序集:AssemblyTitle("此处的新名称")] 2 [程序集:AssemblyDescription("")] 3 [程序集:AssemblyConfiguration("")] 4 [程序集:AssemblyCompany("")] 5 [程序集:AssemblyProduct("此处为新名称")] 6 [程序集:AssemblyCopyright("Copyright © 2013")] 7 [程序集:AssemblyTrademark("")] 8 [程序集:AssemblyCulture("")]
关闭 Visual Studio。物理删除 bin 和 obj 目录。将父文件夹和源文件夹重命名为新名称(project2):
在示例中:c:\my\path\project1\project1
将是:c:\my\path\project2\project2
重命名 SLN 文件名,右键单击该 SLN 文件,通过 Rename 转发。然后最后打开 SLN 文件(在记事本或任何编辑器中)并复制 (Ctrl+h) 任何旧名称并将其替换为新名称。打开 VS 并单击 BUILD -> Clean Solution 单击 Build -> Build solution,然后按 F5 运行... 注意1:如果您收到类似以下内容: Compilation Error CS0246: The type or namespace name 'project2' could not be found(是您缺少 using 指令或程序集引用?)
源文件:c:\Users\Username\AppData\Local\Temp\Temporary ASP.NET Files\root\78dd917f\d0836ce4\App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs
然后转到“Temporary ASP.NET Files”文件夹并删除所有内容。
注意2:如果您尝试“另存为”到一个新的命名项目并保留旧项目,请考虑通过修改 web.config 中的 connectionStrings 来复制您的数据库,如果您在项目。
我是 VS 的新手。我只是遇到了同样的问题:工作几周后需要重命名一个已启动的项目。这就是我所做的,它奏效了。
以防万一,请备份您的文件夹 Project,虽然您不会触摸它,但以防万一!创建一个新项目并使用您希望为“新”项目使用的名称保存它,这意味着您要将“旧”项目更改为的名称。构建它。之后,您将拥有一个具有您想要的名称的项目,但它除了打开一个窗口(在我的例子中是一个 Windows 窗体应用程序)之外什么都不做。打开新项目后,单击 Project->Add Existing Ítem 并使用 Windows 资源管理器找到“旧”文件夹 Project 并选择 ...Visual Studio xxx\Projects\oldApp\oldApp 下的所有文件 选择其中的所有文件 (. vb,.resx)并将它们添加到您的“新”项目(应该已经打开的项目)。几乎最后一步是使用解决方案资源管理器打开您的项目文件,并在第一个选项卡中将默认启动表单更改为应有的表单。重建一切。
也许更多的步骤,但更少或根本没有打字,只需点击几下鼠标。希望能帮助到你 :)
要重命名网站:
http://www.c-sharpcorner.com/Blogs/46334/rename-website-project-in-visual-studio-2013.aspx
找到并编辑 IISExpress 的 applicationhost.config,在此处找到:C:\Users{username}\Documents\IISExpress\config