762

我当前重命名项目文件夹的解决方案是:

  • 从解决方案中删除项目。
  • 重命名 Visual Studio 外部的文件夹。
  • 将项目重新添加到解决方案中。

有没有更好的办法?

4

39 回答 39

819

TFS 用户:如果您使用的源代码控制要求您在重命名文件/文件夹之前对其发出警告,那么请查看此答案,其中涵盖了所需的额外步骤。


要在 Visual Studio 中重命名项目的文件夹文件( .*proj) 和显示名称:

  • 关闭解决方案。
  • 重命名 Visual Studio 外部的文件夹。(如果使用源代码控制,请在 TFS 中重命名)
  • 打开解决方案,忽略警告(如果要求从源代码管理加载项目,请回答“否”)。
  • 浏览所有不可用的项目并...
    • 打开项目的属性窗口(突出显示项目并按Alt+EnterF4,或右键单击 > 属性)。
    • 将属性“文件路径”设置为新位置。
      • 如果该属性不可编辑(如在 Visual Studio 2012 中),则.sln直接在另一个编辑器(例如Notepad++ )中打开该文件,然后更新那里的路径。(您可能需要先在 TFS 等中签出解决方案)
    • 重新加载项目 - 右键单击​​ > 重新加载项目。
    • 更改项目的显示名称,方法是突出显示并按F2,或右键单击 >重命名

注意:涉及删除项目然后将项目重新添加到解决方案的其他建议解决方案将破坏项目引用。

如果您执行这些步骤,那么您还可以考虑重命名以下内容以匹配:

  1. 集会
  2. 默认/根命名空间
  3. 现有文件的命名空间(使用 Visual Studio 中的重构工具或ReSharper 的不一致命名空间工具)

还可以考虑修改以下程序集属性的值:

  1. AssemblyProductAttribute
  2. AssemblyDescriptionAttribute
  3. AssemblyTitleAttribute
于 2008-10-22T07:55:49.810 回答
143

这在 Visual Studio 2015 中很简单(可能适用于旧版本)

  1. 在解决方案资源管理器中,右键单击主解决方案重命名
  2. 在解决方案资源管理器中,右键单击项目(在解决方案下)→重命名
  3. 在解决方案资源管理器中,双击或右键单击Properties → goto Application Tab,重命名程序集名称默认命名空间以匹配。
  4. 如果您还想重命名命名空间,请打开您的类文件之一。右键单击命名空间 →重命名...。这应该在整个项目中搜索并替换对您的命名空间的所有引用。
  5. 关闭项目→重命名项目文件夹
  6. 在记事本中编辑.sln文件,并更改csproj的路径,即→ 。fu\bar.csprojbar\bar.csproj
于 2015-10-18T08:42:06.270 回答
110

还有另一种方法,使用 *.sol、*csproj 文件。

  1. 打开您的解决方案文件。
  2. 搜索您要更改的 *.csproj。
  3. 它将是这样的(相对于 *.sol 文件):

    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"

  4. 只需将第一部分更改为新目录,例如:

    Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj

  5. 当然,不要忘记将整个项目移动到该目录。

于 2008-10-17T07:05:02.880 回答
54

伙计,我有没有为此挣扎过。不幸的是,Visual Studio 中没有一键式解决方案,但如果您正在运行Visual Studio 2012并且您的项目受Team Foundation Server的源代码控制,那么我是如何让它工作的,同时保留源代码历史记录:

(请务必阅读下面的@mjv 评论,因为他指出您可以跳过步骤 5-10)

  1. 确保您已签入所有更改,因此您没有待处理的更改。
  2. 通过右键单击并选择Remove从解决方案中删除项目。
  3. 现在,在 Windows 资源管理器中,重命名项目文件夹。
  4. 返回 Visual Studio,在解决方案资源管理器中,右键单击解决方案并选择Add -> Existing project。为您在步骤 2 中删除的项目选择项目文件,该文件应位于重命名的文件夹中。
  5. 现在该项目又回到了解决方案中,但该项目似乎没有添加到源代码管理中。要解决此问题,请打开源代码管理资源管理器。
  6. 在源代码管理资源管理器中找到与磁盘上的项目文件夹相对应的项目文件夹,您在步骤 3 中重命名了该文件夹。
  7. 在源代码管理资源管理器中重命名文件夹,使其与磁盘上的项目文件夹具有相同的名称。
  8. 现在看看您的待定更改。您应该对解决方案文件进行更改,并对项目文件夹进行重命名操作。
  9. 进行重建并确保一切都正确编译。如果您对重命名的项目有项目间引用,则需要将它们再次添加到引用它的各个项目中。
  10. 你现在应该准备好了。去检查所有东西。

上面的指南对我有用。如果它对您不起作用,请尝试完全删除您的本地解决方案,并删除工作区中的文件夹映射。以防万一,重新启动 Visual Studio。确保您确实从计算机中删除了整个解决方案。现在将解决方案映射到您的工作区并获取最新版本。现在尝试上述步骤。如果在执行上述步骤时出现问题,这同样适用。只需在本地删除您的解决方案并获取最新的源代码,您就会有一个全新的工作环境。

如果您仍然遇到问题,请确保您没有在解决方案文件中手动更改任何内容,或者在尝试上述步骤之前尝试其他“技巧”。如果您更改了某些内容并将其签入,您可能需要考虑回滚到开始弄乱项目重命名之前的点。

当然,您还想在解决方案资源管理器中重命名项目本身。您可以在上述步骤之前执行此操作,但在这种情况下,请确保在应用上述步骤之前签入该更改。您也可以在之后执行此操作,但请确保先执行上述所有步骤,并在尝试在解决方案资源管理器中重命名项目名称之前检查您的更改。我不建议尝试将上述步骤与解决方案资源管理器中的项目名称重命名混合使用。虽然它可能有效,但我建议在 2 个单独的变更集中进行。

于 2013-06-13T15:22:42.930 回答
34

目前,没有。好吧,实际上您可以单击损坏的项目节点并在属性窗格中查找属性“路径”,单击小浏览图标,然后选择新路径。

瞧 :)

于 2008-10-17T06:52:57.227 回答
33

更简单的解决方案如下:

  1. 右键单击该项目并重命名它。
  2. (可选)打开项目的属性设置并修改程序集名称(以及可选的默认命名空间)以使用新的项目名称。
  3. (可选)在源文件中选择命名空间名称,右键单击并选择重构/重命名以将命名空间全局重命名为新的项目名称。
  4. (可选)打开 AssemblyInfo.cs 文件并更改程序集名称以匹配。
  5. 保存并关闭解决方案。
  6. 使用 Windows 资源管理器,将项目文件夹重命名为新名称。
  7. 在文本编辑器中打开 SLN 文件并找到对项目路径的一个引用并将其更改为使用新文件夹名称。

有四个必需的步骤,但推荐七个。归根结底,该项目已完全重命名。从技术上讲,项目的文件夹名称不必与项目本身匹配,因此即使该步骤也是可选的,但如果它们不匹配,可能会造成混淆。程序集和命名空间名称也是如此。

于 2016-01-26T11:17:47.850 回答
11

andersjanmyr 的回答中,首先重命名项目更容易。

  1. 重命名项目。
  2. 关闭解决方案(保存)。
  3. 重命名 Visual Studio 外部的文件夹。
  4. 打开解决方案,忽略警告。
  5. 浏览所有不可用的项目并将属性“文件路径”设置为项目文件的新位置,即someproject.csproj
  6. 重新加载项目。

此外,执行这些步骤后,您可能希望将其他引用重命名为旧项目名称。

在项目属性中,更新程序集名称和默认命名空间。

这将更新项目文件中的以下内容...

<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>

...并且将摆脱错误“命名空间与文件位置不对应,应该是:'SomeProjectName'”

重命名您的根命名空间(如果您有 ReSharper,请右键单击命名空间并转到 Refactor -> Rename)。

更改AssemblyInfo.cs中所有出现的旧项目名称。

于 2010-06-30T06:18:16.547 回答
9

对于那些使用 Visual Studio + Git 并希望保留文件历史记录的人(重命名项目和/或解决方案的工作):

  1. 关闭 Visual Studio

  2. 在 .gitignore 文件中,使用这些路径的重命名版本复制要重命名的项目的所有忽略路径。

  3. 像这样使用 Git 移动命令:

    git mv <old_folder_name> <new_folder_name>
    

    有关其他选项,请参阅文档:https ://git-scm.com/docs/git-mv

  4. 在您的 .sln 文件中:找到定义项目的行并更改路径中的文件夹名称。该行应类似于:

    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
    
  5. 打开 Visual Studio,然后右键单击项目 →重命名

  6. 之后,重命名命名空间。

    我读到ReSharper对此有一些选择。但是简单的查找/替换为我完成了这项工作。

  7. 删除旧的 .gitignore 路径。

于 2018-08-17T14:28:28.077 回答
8

对于 Visual Studio 2017,您可以使用我的 Visual Studio 扩展:

下载

它将在以下位置重命名项目:

  • 项目位置文件夹
  • 解决方案文件
  • 其他项目中的参考
  • 程序集名称、信息
  • 默认命名空间
于 2017-05-29T06:15:45.140 回答
7

我只需要自己做这件事(使用 Visual Studio 2010)。正如一些人所回答的那样,最简单的步骤似乎是:

  1. 关闭 Visual Studio 项目。
  2. 打开 .sln 文件并重命名每个 .csproj 出现的项目目录前缀。
  3. 保存 .sln 文件
  4. 重命名硬盘驱动器上的实际项目文件夹目录以匹配 .sln 文件中的更改。
  5. 打开 .sln(在 Visual Studio 中)并重建
于 2011-02-22T17:33:39.273 回答
7

使用 Visual Studio 2019,我按照以下步骤使项目名称更改成功:

  1. 关闭解决方案
  2. 重命名项目文件夹以匹配新项目名称
  3. 在 notepad++ 类型的编辑器中打开解决方案文件并使用新项目名称文件夹编辑 FilePath
  4. 打开解决方案,如果询问您是否要从源代码管理中打开,请单击否
  5. 右键单击要重命名的项目,然后单击属性,然后在下面进行更改:更改程序集名称、默认程序集命名空间和使用新名称的程序集信息
  6. 打开任何文件并将文件移动到新的命名空间,这将由所有文件完成
  7. 如果您有 app.config 类型的文件,请确保将它们也移动到新的命名空间中
  8. 重建它将成功运行
于 2020-07-23T17:41:07.367 回答
6

适用于商业智能数据工具的 Visual Studio 扩展的经过验证的解决方案 (SSDT-BI 2013):

  1. 将项目文件夹移动到新位置(暂时不要重命名)
  2. 在解决方案资源管理器中,重命名项目/解决方案。
  3. 关闭(并保存)新重命名的项目。
  4. 重命名项目的文件夹和 .sln 文件。
  5. 使用文本编辑器打开新重命名的项目解决方案文件 (.sln)(我使用的是Notepad++
  6. 在第 6 行中,您将看到:“Project {fdjfksdjk4387!...} = "OLDPROJECT", "OLDFOLDER\OLDPROJECT.rptproj"。使用第 4 步中使用的新名称重命名所有内容。(即... = "NEWPROJECT ", "NEWFOLDER\NEWPROJECT.rptproj"...)
  7. 就是这样!

它经过 100% 的测试,在我的情况下完美运行。

注意:我无法确认它是否适用于不同的项目模板和其他 Visual Studio 版本。与往常一样,请事先备份所有内容。

于 2015-06-08T15:33:17.107 回答
5

在 Visual Studio 2017 中对我有用的是:

  • 在 Visual Studio 中关闭解决方案
  • 重命名解决方案中的项目目录。
    • (推动源代码控制的变化——在我的例子中是 Git)
  • 在文本编辑器(Visual Studio 2017 外部)中编辑 .sln 文件,更改目录名称。
  • 在 Visual Studio 中重新打开解决方案

它说类似“重新添加项目”。我重建了一切,一切都很好。

于 2018-06-29T15:40:43.540 回答
4

请参阅链接文章中的第 3 项


  1. 关闭解决方案和 IDE。
  2. 在 Windows 资源管理器中:将目录名称更改为新名称。
  3. 在 Windows 资源管理器中:使用文本编辑器打开 .sln 文件。
  4. 将目录名称更改为新名称并保存。
  5. 如果解决方案没有自动启动,请重新启动 IDE 并从菜单FileRecent Files菜单打开解决方案。
  6. 单击解决方案资源管理器中的项目文件夹,然后检查底部属性中的路径属性。现在它将引用新的项目文件夹。

它对我有用。

于 2010-10-21T06:45:06.133 回答
4

我不得不这样做很多次。能够重新利用现有项目,但能够重命名命名空间、文件和文件夹中的文本(包括文件/目录名称),这非常有用。

使用从根文件夹开始的递归查找和替换意味着重命名不会破坏解决方案文件和项目引用中的项目链接。

为此,我创建了一个项目来做到这一点。该应用程序还努力忽略版本控制文件夹,例如 .git、.svn 和 .vs 设置文件。更多信息在自述文件中。

https://github.com/garethrbrown/vs-project-rename

例子

于 2019-02-27T17:15:36.053 回答
3

我刚刚为自己编写了一个全局 dotnet 工具(也考虑了 git+history)解决了这个问题。

通过 安装 dotnet tool install -g ModernRonin.ProjectRenamer,与 一起使用renameproject <oldName> <newName>

文档/修补/公关在

https://github.com/ModernRonin/ProjectRenamer

于 2020-09-04T12:33:22.030 回答
3

这在 Visual Studio 2019 中对我来说效果很好。

  1. 只需像往常一样单击文件名,即可在 Visual Studio 中重命名解决方案和项目。
  2. 在 Visual Studio 中重命名命名空间。
  3. 重命名项目主页面上的所需元素(发布位置、应用程序、默认命名空间等)。正如正确指出的那样,这对文件夹没有任何作用,但它确实重命名了项目文件并将所有内容在 Visual Studio 中捆绑在一起。
  4. 关闭 Visual Studio。
  5. 重命名文件夹。
  6. 打开 Visual Studio 并回答“否”以从源代码管理中获取项目。
  7. 删除已卸载的项目引用。
  8. 使用从解决方案添加现有项目重新添加每个项目。这将所有内容联系在一起,并为我构建了项目。

请评论并纠正以上任何无效的内容。

于 2021-03-04T23:24:16.403 回答
3

这就是我在 VS19 中重命名现有项目的方式。

  1. 关闭视觉工作室项目
  2. 重命名并打开驱动器上的每个项目文件夹名称
  3. 重命名每个 .csproj
  4. 打开 .sln 文件并重命名每个 .csproj 出现的项目目录前缀。
  5. 在 Visual Studio 中打开 .sln 文件并重建
  6. 通过遍历每个文件或使用 ReplaceAll 来更新以前的命名空间引用
于 2021-07-04T05:05:20.987 回答
2

注意:此修复程序适用于 Visual Studio 2008,但它应该在这里工作。

  1. 使用 Windows 资源管理器,将解决方案文件夹(父文件夹和子文件夹)重命名为新的解决方案名称。
  2. 删除.sln位于父文件夹中的文件。
  3. 在 Visual Studio 中,选择菜单FileOpen Project
  4. 钻入刚刚重命名的新文件夹并打开 .csproj 文件(位于子文件夹中)。
  5. 右键单击项目名称并将其重命名为您想要的名称。(它应该与步骤 1 中的文件夹名称相同。)
  6. 选择菜单文件关闭解决方案。一个对话框将询问您是否要保存对.sln文件的更改。单击Yes
  7. 在“将文件另存为”对话框中,指向新重命名的文件夹并单击“保存” 。(注意:确保.sln文件与文件夹同名。不是必需的,但保持一致性。)

完毕。

于 2010-06-23T06:52:25.117 回答
2

我编写了一个小工具,可以自动执行所有这些步骤。它现在还支持Subversion

可以在Visual Studio Project Renamer Infos中找到有关当前版本的信息。

现在可以从Visual Studio Project Renamer Download Page下载最新版本。

非常感谢您的反馈。

于 2011-08-21T15:27:50.373 回答
2

我经常遇到在 Visual Studio 中重命名项目并编辑文件夹名称、项目名称和 .sln 文件以完成此操作的相同问题。我刚刚编写了一个完成所有这些的VBScript脚本。您必须小心选择要替换的字符串。

您只需将 .vbs 文件与解决方案的 .sln 文件放在同一目录中。

' Script parameters'
Solution = "Rename_Visual_Studio_Project" '.sln'
Project = "Rename_Visual_Studio_Project" '.csproj'
NewProject = "SUCCESS"

Const ForReading = 1
Const ForWriting = 2

Set objFso = CreateObject("Scripting.FileSystemObject")
scriptDirr = objFso.GetParentFolderName(wscript.ScriptFullName)

' Rename the all project references in the .sln file'
Set objFile = objFso.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForReading)
fileText = objFile.ReadAll
newFileText = Replace(fileText, Project, NewProject)
Set objFile = objFSO.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForWriting)
objFile.WriteLine(newFileText)
objFile.Close

' Rename the .csproj file'
objFso.MoveFile scriptDirr + "\" + Project + "\" + Project + ".csproj", scriptDirr + "\" + Project + "\" + NewProject + ".csproj"

' Rename the folder of the .csproj file'
objFso.MoveFolder scriptDirr + "\" + Project, scriptDirr + "\" + NewProject
于 2017-08-27T13:02:45.407 回答
2
  1. 重命名解决方案和项目文件夹中的项目

  2. 从解决方案中删除项目

  3. 将现有项目添加到解决方案(您重命名的项目)

这个对我有用。TFS 还将跟踪新项目。

于 2018-06-13T13:49:29.257 回答
1

使用 TFS 时,第 2 步实际上是在源代码管理中重命名文件夹,然后在重新打开解决方案之前获取最新的。

于 2012-10-12T13:11:31.167 回答
1

在 Visual Studio 2013 Update 1 中测试了一种更简单的方法,适用于 TFS 连接的项目:

  • 打开 Visual Studio,但关闭解决方案。
  • 打开Source Explorer并重命名所需的文件夹(如果您尚未先关闭该解决方案,该解决方案将为您关闭)。
  • 右键单击解决方案(也从Source Explorer中)并选择签入。
  • 打开解决方案。您会被告知添加了新项目。接受以获取更改。
  • 从解决方案中删除项目并重新添加,然后签入。
  • 检查内部参考是否正常。
于 2014-04-29T17:05:29.817 回答
1

我们最近上传了一个免费的 Visual Studio 扩展测试版,它可以为您完成这些工作。

看看 Visual Studio 画廊:画廊下载

于 2015-02-20T22:09:53.967 回答
1

嗯,我是按我的方式做的

  • 关闭 Visual Studio 2012
  • 将您的子目录重命名为 .sln 下的首选名称
  • 删除 *.suo 文件
  • 再次打开解决方案,并修复加载的项目的任何属性以满足新的子目录名称
于 2015-04-09T09:12:28.273 回答
1
  1. 在 Visual Studio 之外重命名项目。
  2. 使用文本编辑器编辑your_project_name.sln,并将路径重命名为新路径。
于 2015-08-20T15:52:22.573 回答
1

在文本编辑器中打开 .sln,然后在以下行中将 <FolderName> 更改为您的新文件夹名称 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ricky", "\.csproj", " {021CC6B0-8CFB-4194-A103-C19AF869D965}"

于 2019-01-26T23:48:10.940 回答
1

转到.sln文件,右键,用Notepad++(或任何编辑器;Notepad++最快)打开,找到路径,更改它。

于 2020-02-04T18:13:35.253 回答
0

更改文件夹名称后,在记事本中打开 .sln 文件并将路径更改为新路径。

于 2013-03-18T20:38:44.200 回答
0

当必须创建一个新项目并且您想要一个与项目名称不同的项目文件夹名称时,也会出现类似的问题。

当您创建一个新项目时,它会存储在

./path/to/pro/ject/YourProject/YourProject.**proj

假设您想将其直接放在ject文件夹中:

./path/to/pro/ject/YourProject.**proj

我的解决方法是使用路径的最后一部分作为名称来创建项目,这样它就不会创建额外的目录:

./path/to/pro/ject/ject.**proj

现在,当您从 Visual Studio 中重命名项目时,无需离开 Visual Studio 即可实现目标:

./path/to/pro/ject/YourProject.**proj

这种方法的缺点是您必须调整默认名称空间和输出二进制文件的名称,并且您必须更新项目模板中包含的所有文件中的名称空间。

于 2013-08-23T23:27:14.020 回答
0

我使用 Visual Studio 2013 和TFS 2013。

我是这样做的:

  1. 打开 Visual Studio,而不打开解决方案本身,并使用源代码管理资源管理器查找和重命名项目的文件夹
  2. 在源代码管理资源管理器中双击解决方案文件以打开解决方案。
  3. 您会收到一个问题:“项目最近已添加到此解决方案中。您想从源代码管理中获取它们吗?” ,而你选择Yes
  4. 现在文件夹和项目结构在那里,但现在是文件,所以现在您可以从源代码管理中获得最新版本
  5. 尝试构建并提交更改。
于 2014-04-25T15:49:22.157 回答
0

最简单的方法是进入窗口的属性,更改默认命名空间的名称,然后重命名就完成了。

于 2015-07-22T12:34:21.673 回答
0

我做了以下事情:

<创建整个文件夹的备份>

  1. 在 Visual Studio 2013 中重命名项目(可选/不需要)。

  2. 将项目导出为模板。

  3. 关闭解决方案。

  4. 重新打开解决方案

  5. 从保存的模板创建一个项目并使用您喜欢的名称。

  6. 从解决方案资源管理器中删除上一个项目。

此时我尝试编译新的解决方案,为此,我必须手动将一些资源和标头从旧项目文件夹复制到新项目文件夹。这样做直到它编译没有错误。现在这个新项目将“ .exe”文件保存到之前的文件夹中。*

所以->

  1. 转到 Windows 资源管理器并手动将解决方案文件从旧项目文件夹复制到新项目文件夹。

  2. 关闭解决方案,然后从新项目中打开解决方案。

  3. 如果需要,将配置更改回 (x64)。

  4. 从解决方案的文件夹中删除具有旧名称的项目文件夹。

于 2017-03-25T17:50:30.470 回答
0

或者简单地说,复制所有代码,使用所需名称打开一个新项目,然后粘贴代码。运行调试,然后删除以前的项目。完毕!

它对我有用!

于 2018-09-23T03:27:44.390 回答
0

我试图rename找到 Visual Studio 社区 2019 中的文件夹,但找不到它。

但是,我想通了while the code is running you can not change the name of the folder

答案是:

  1. 停止您的应用程序运行;
  2. 然后右键单击该文件夹,rename名称将在那里。
于 2021-02-26T23:52:21.123 回答
0

其他答案提供了很多关于如何做到这一点的细节。不过,这里有一个快捷方式,可以为您节省一些工作:

  1. 重命名项目文件夹
  2. 重命名.csproj文件
  3. 批量替换解决方案中所有文件中的项目名称(我使用 GrepWin,它有一个方便的 GUI 预览)

这样,您就不必繁琐地使用 Visual Studio GUI。您也可以通过这种方式修复命名空间。您可以使用源代码管理来验证更改(例如打开 TortoiseGit Commit 并查看更改)。

于 2022-01-08T06:19:27.503 回答
0

最简单的方法:

  1. 从当前项目创建模板
    Project -> Export Template... -> Project Template -> Finish
  2. 使用具有您想要的名称的模板创建一个新项目
    File -> New Project -> Find the template -> Give it the name you want -> Add to existing solution or just as new

就是这样,你已经完成了,你现在可以根据需要删除另一个项目,但首先要确保新项目按预期工作。模板应保留所有依赖项和项目设置。

于 2022-02-17T12:07:26.797 回答
-2

右键单击 project → Properties,然后将 (name) 设置为所需的名称。

于 2018-03-19T04:44:06.000 回答