如何从Visual Studio中重命名项目文件夹?

and*_*myr 649 directory projects-and-solutions visual-studio

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

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

有没有更好的方法?

and*_*myr 720

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


要在visual studio中重命名项目的文件夹,file(.*proj)和显示名称:

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

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

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

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

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

  1. AssemblyProductAttribute
  2. AssemblyDescriptionAttribute
  3. AssemblyTitleAttribute

您可能希望投票支持Visual Studio团队自动执行此过程.

  • 似乎无法在VS2012中编辑文件路径 (31认同)
  • 对于那些使用源代码控制的人,我认为您还需要在源代码管理中重命名该文件夹.对我来说,上述步骤没有这样做. (24认同)
  • 这在VS 2012中对我不起作用; 该物业是只读的.我必须以文本形式打开.sln文件. (11认同)
  • 使用TFS时,步骤2实际上是重命名源控件中的文件夹,然后在重新打开sln之前获取最新信息. (10认同)
  • 重命名文件夹后,文件路径属性在VS2010中变得可编辑(并且VS无法找到项目) (3认同)
  • 哎呀!重命名文件夹所有这些麻烦!这在MS-DOS中更容易! (3认同)
  • 使用*.sln文件上的文本编辑器编辑文件路径. (2认同)

小智 91

使用*.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. 并且只是将第一部分更改为新的diretory,例如:

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

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

玩得开心.

  • 这对我有用,而不是接受的答案,因为FilePath属性对我来说是只读的. (14认同)
  • 这适用于我在 Visual Studio 2019 中的 C# 项目。这是一个相当简单的解决方案。对于在尝试编译时可能遇到问题的人,我建议您完全重建项目,而不是仅仅编译。 (3认同)
  • 谢谢,这很有帮助。还要确保同时更改 RootNamespace 和 AssemblyName 值。 (2认同)

wir*_*d00 82

这在VS 2015中是直截了当的(可能适用于旧版本)

  1. 在解决方案资源管理器中,右键单击 Main solution > Rename
  2. 在解决方案资源管理器中,右键单击 project (under solution) > Rename
  3. 在解决方案资源管理器中,双击或右键单击Properties >转到应用程序选项卡,重命名Assembly nameDefault namespace匹配.
  4. 如果您还想重命名命名空间,请打开一个类文件.右键单击namespace > Rename...它应搜索并替换整个项目中对命名空间的所有引用.
  5. 关闭项目>重命名project folder.
  6. .sln在记事本中编辑文件,更改cjproj的路径.即fu\bar.csproj --> bar\bar.csproj

  • 当我读到它时,问题不是问如何更改 VS 中项目的显示名称或 .exe 的名称(也许提问者已经完成了所有这些),而是具体询问如何重命名项目文件夹(在文件系统)并保持 .sln 同步。因此似乎只有步骤 5 和 6 相关。但对于缺乏从 VS 内部执行此操作的方法来说,这似乎是最好的解决方法。 (3认同)
  • 您忘记更新依赖项目中的项目引用(如果有). (2认同)

Ren*_*ené 53

伙计,我有没有挣扎过这个.遗憾的是,Visual Studio中没有单击解决方案,但是如果您正在运行Visual Studio 2012并且您的项目受Team Foundation Server的源代码控制,那么我可以在保留源历史记录的同时使用它:

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

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

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

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

当然,您还需要在解决方案资源管理器中重命名项目本身.您可以在上述步骤之前执行此操作,但在这种情况下,请确保在应用上述步骤之前签入该更改.你也可以做到这一点之后,但要确保你按照上面首先的步骤,并试图重新命名Solution Explorer中的项目名称前签入更改.我不建议尝试将上述步骤与解决方案资源管理器中项目名称的重命名混合使用.它可能会工作,但我建议在2个单独的变更集中进行.

  • 感谢您介绍一个适用于`VS2012`的程序!请注意,如果您关闭解决方案,然后在"VS"源代码管理资源管理器中重命名文件夹而不是"Windows资源管理器",则可以避免执行步骤5-10(即必须在源代码管理中恢复重命名的文件夹). (10认同)
  • 这些步骤很接近但在使用Windows资源管理器(WE)更改文件夹位置之前,在源代码管理资源管理器(SCE)中重命名导致错误:"文件夹已存在".因此,我必须在`WE`中重新命名该文件夹,然后在`SCE`中更改它,然后在文件工作之前将文件复制到该文件夹​​中.所以请遵循上面mjv的评论.我也没想到需要更改实际的项目文件名(不仅仅是在VS中),我做了一个事后的想法,让我重复一些这些步骤. (2认同)

mor*_*ost 32

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

瞧:)

  • 使用VS2015,"已卸载的项目属性"属性名称为"文件路径",该值既不可编辑也不可浏览. (2认同)

Md.*_*man 28

更简单的解决方案如下:

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

有4个需要的步骤,但推荐7个.尽管项目完全重命名,但在一天结束时.从技术上讲,项目的文件夹名称不必与项目本身匹配,因此即使该步骤也是可选的,但如果它们不匹配则可能会令人困惑.与程序集和命名空间名称相同.

  • 令人难以置信的微软有多么努力 (6认同)

ivk*_*vke 9

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

  1. 关闭 Visual Studio

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

  3. 像这样使用 Git move 命令:

    git mv <old_folder_name> <new_folder_name>
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

  7. 删除旧的 .gitignore 路径。


CRi*_*ice 8

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

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

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

在项目属性中,更新程序集名称和默认命名空间.这将更新项目文件中的以下内容......

<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>
Run Code Online (Sandbox Code Playgroud)

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

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

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


Kua*_*ysh 8

对于VS2017,您可以使用我的visual studio扩展

下载

它将重命名项目:

  • 项目位置文件夹
  • 解决方案文件
  • 参考其他项目
  • 程序集名称,信息
  • 默认命名空间


小智 6

我必须自己做(使用VS2010).正如一些人回答的那样,最简单的步骤似乎是:

  1. 关闭VS项目.
  2. 打开.sln文件并重命名每个.csproj事件的项目目录前缀.
  3. 保存.sln文件
  4. 重命名硬盘驱动器上的实际项目文件夹目录,以匹配.sln文件中的更改.
  5. 打开.sln(在VS中)并重建


RJN*_*RJN 6

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

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


use*_*866 5

适用于商业智能数据工具的 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 版本。与往常一样,请事先备份所有内容。


Cha*_*ger 5

在 Visual Studio 2017 中对我有用的内容:

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

它说的是“重新添加项目”之类的东西。我重建了一切,一切都很好。


AMo*_*nin 5

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

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

文档/修补/PR 位于

https://github.com/ModernRonin/ProjectRenamer


Kus*_*eth 5

我最近正在使用 VS2022 开发 .Net 6 项目。我需要将 templatemicroservice 重命名为 UserMicroservice。

.Net 6 为您改变了大部分事情。例如程序集名称和命名空间。此外,它还会自动更改 .sln 中的 ProjectName 引用。因此,这个答案将真正帮助您毫无障碍地重命名您的服务。

在此输入图像描述

所以,我遵循的步骤:

在 Visual Studio 中打开解决方案并执行以下步骤:

  1. 我通过右键单击它来重命名我的解决方案。喜欢。TemplateServiceSolutionUserServiceSolution
  2. 通过右键单击解决方案中的所有项目来重命名它们。喜欢。TemplateServiceUserService
  3. 在一个特定的项目中,我搜索了如下名称空间:namespace TemplateService并将所有名称替换为namespace UserService. 在每个项目中执行此步骤。也替换using TemplateServiceusing UserService.
  4. 打开您的launchsettings.json,并重命名与旧服务相关的任何内容,因为我的launchsettings.json.
  5. 为了确定起见,请同时检查您的startup 和program.cs 文件,我没有对它们进行任何更改。

从 Visual Studio 关闭解决方案并执行以下步骤:

  1. 关闭解决方案,然后打开文件资源管理器。将我的所有项目文件夹从重命名TemplateServiceUserService.
  2. 在记事本/记事本++中打开.sln,并且必须更改文件夹结构名称。就像对于特定项目一样,我应该给出正确的 .csproj 路径。如图所示,我需要重命名TemplateServiceUserService. 在此输入图像描述

在 Visual Studio 中打开解决方案。当您在 Visual Studio Code 中加载解决方案时,大多数依赖项都会被加载。你准备好了。