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

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

  • 从解决scheme中删除该项目。
  • 重命名Visual Studio以外的文件夹。
  • 重新添加项目到解决scheme。

有没有更好的办法?

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


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

  • closures解决scheme。
  • 重命名Visual Studio以外的文件夹。 (如果使用源代码pipe理,则在TFS中重命名)
  • 打开解决scheme,忽略警告(如果要求从源代码控制加载项目,则回答“否”)。
  • 经历所有不可用的项目和…
    • 打开项目的属性窗口(突出显示项目,然后按Alt + EnterF4 ,或右键单击>属性)。
    • 将属性“ 文件path ”设置为新的位置。
      • 如果属性不可编辑(如在VS2012中),则直接在另一个编辑器(如Notepad ++)中打开.sln文件,并更新那里的path。 (您可能需要首先在TFS中检出解决scheme)
    • 重新加载项目 – 右键单击​​>重新加载项目。
    • 改变项目的显示名称,突出显示并按F2 ,或右键单击> 重命名

注:其他build议的解决scheme涉及到删除项目然后重新添加到解决scheme将会中断项目引用。

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

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

还要考虑修改下列组件属性的值:

  1. AssemblyProductAttribute
  2. AssemblyDescriptionAttribute
  3. AssemblyTitleAttribute

您可能希望投票给Visual Studio团队来自动执行此过程 。

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

  1. 打开你的解决scheme文件
  2. search您想要更改的* .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. 当然不要忘记把整个项目移到那个目录

玩的开心。

男人,我为此而苦苦挣扎。 不幸的是,在Visual Studio中没有单击单击解决scheme,但是如果您正在运行Visual Studio 2012,并且您的项目由Team Foundation Server进行源代码pipe理,那么在保留源历史logging的同时,以下是我的工作方式:

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

  1. 确保你已经检查了所有的变化,所以你没有挂起的变化。
  2. 从解决scheme中删除项目,通过右键单击并select删除
  3. 现在,在Windows资源pipe理器中,重命名项目文件夹。
  4. 返回到Visual Studio,然后在解决scheme资源pipe理器中,右键单击该解决scheme并select添加 – > 现有项目 。 select您在步骤2中删除的项目的项目文件,该文件应位于重命名的文件夹中。
  5. 现在项目又回到了解决scheme中,但是项目似乎并没有被添加到源代码pipe理中。 要解决这个问题,请打开Source Control Explorer。
  6. 在源代码pipe理资源pipe理器中find与您的磁盘上的项目文件夹相对应的项目文件夹,在步骤3中对其进行了重命名。
  7. 在源代码pipe理资源pipe理器中重命名该文件夹,使其具有与磁盘上的项目文件夹相同的名称。
  8. 现在看看您的未决更改。 您应该更改解决scheme文件并在项目文件夹中进行重命名操作。
  9. 做一个重build,并确保一切编译正确。 如果您对项目进行了项目间引用,则需要将其重新添加到引用该项目的各个项目中。
  10. 你现在应该全部设置。 去检查一切。

上面的指南为我工作。 如果它不适用于您,请尝试彻底删除本地解决scheme,并删除工作区中的文件夹映射。 以防万一,重新启动Visual Studio。 确保你真的从计算机中删除了整个解决scheme。 现在阅读解决scheme映射到您的工作区,并获得最新版本。 现在尝试以上步骤。 如果在按照上述步骤进行操作时出现错误,则也是如此。 只要在本地删除你的解决scheme,并获得最新的来源,你将有一个干净的石板工作。

如果仍有问题,请确保在解决scheme文件中没有手动更改任何内容,或在尝试上述步骤之前尝试其他“技巧”。 如果你已经改变了某些东西并且检查了它,那么你可能要考虑在开始搞乱项目重命名之前做一个回滚。

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

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

  1. 在解决scheme资源pipe理器中,右键单击Main solution > Rename
  2. 在解决scheme资源pipe理器中,右键单击project (under solution) > Rename
  3. 在解决scheme资源pipe理器中,双击或右键单击Properties >转到应用程序选项卡,重命名Assembly nameDefault namespace匹配。
  4. 如果您还希望重命名命名空间,请打开您的一个类文件。 右键单击namespace > Rename...这应该search并replace整个项目中的名称空间的所有引用。
  5. closures项目>重命名project folder
  6. 在记事本中编辑.sln文件,将path更改为cjproj。 即fu\bar.csproj --> bar\bar.csproj

目前没有。 那么,实际上,您可以单击已损坏的项目节点,然后在属性窗格中查找“path”属性,然后单击小浏览图标并select新path。

瞧:)

更简单的解决scheme如下:

  1. 用鼠标右键单击该项目并重命名它。
  2. (可选)打开项目的属性设置并修改程序集名称(以及可选的默认名称空间)以使用新的项目名称。
  3. (可选)在源文件中select命名空间名称,右键单击并selectRefactor \ Rename将全局命名空间重命名为新项目名称。
  4. (可选)打开AssemblyInfo.cs文件并更改程序集名称以匹配。
  5. 保存并closures解决scheme。
  6. 使用Windows资源pipe理器将项目文件夹重命名为新名称。
  7. 在文本编辑器中打开SLN文件,find项目path的一个引用,并将其更改为使用新的文件夹名称。

有4个需要的步骤,但build议7。 尽pipe该项目完全改名,但仍在一天结束。 从技术上讲,项目的文件夹名称不必与项目本身匹配,所以即使这一步是可选的,但如果它们不匹配,可能会造成混淆。 汇编和命名空间名称相同。

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

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

另外,执行这些步骤之后,可能需要重命名其他对旧项目名称的引用。

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

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

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

重命名你的根命名空间(如果你有resharper右键单击命名空间,并去重构 – >重命名)。

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

我只需要自己做(使用VS2010)。 正如一些人所回答的,最简单的一步似乎是:

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

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

  1. closures解决scheme和IDE。
  2. 在资源pipe理器中:将目录名称更改为新名称。
  3. 在资源pipe理器中:使用文本编辑器打开.sln文件。
  4. 将目录名称更改为新名称并保存。
  5. 如果没有自动启动,请重新启动IDE并从“文件”,“最近使用的文件”菜单中打开解决scheme。
  6. 点击解决scheme资源pipe理器的项目文件夹,检查底部属性的path属性。 现在将引用新的项目文件夹。

它为我工作。

对于VS2017,你可以使用我的视觉工作室扩展

https://marketplace.visualstudio.com/items?itemName=KuanyshNabiyev.FullRenameProject

它将重命名项目在:

  • 项目位置文件夹
  • 解决scheme文件
  • 其他项目参考
  • 组件名称,信息
  • 默认名称空间

适用于商业智能数据工具(SSDT-BI 2013)的Visual Studio扩展的成熟解决scheme:

  1. 将项目文件夹移动到新的位置(不要重命名任何东西)
  2. 在解决scheme资源pipe理器中,重命名Project / Solution。
  3. closures(并保存)新重命名的项目。
  4. 重命名项目的文件夹和.sln文件。
  5. 使用文本编辑器并打开新重命名的项目解决scheme文件(.sln)(我用的是Notepad ++)
  6. 在第6行你会看到:“Project {fdjfksdjk4387!…} =”OLDPROJECT“,”OLDFOLDER \ OLDPROJECT.rptproj“。用第4步中使用的新名称重命名所有内容(即… =”NEWPROJECT “,”NEWFOLDER \ NEWPROJECT.rptproj“…)
  7. 而已!

testing100%,完美地工作在我的情况。

注意:不能确认它是否在不同的项目模板a / o Visual Studio版本下工作。 一如既往,事先备份一切。

@ andersjanmyr的解决scheme:您可以按Alt + Enter来调出不可用项目的属性页,并在那里设置“文件path”属性; 因为它在VS2008中不可用的项目的右键click_context菜单中不可用。

我写了一个小工具,可以自动执行所有这些步骤。 现在也支持颠覆。

有关当前版本的信息可以在这里findVisual Studio Project Renamer Infos

最新版本现在可以从Visual Studio Project Renamer下载页面下载

反馈非常感谢。

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

  1. 使用Windows资源pipe理器,将解决scheme文件夹(父文件夹和子文件夹)都重命名为新的解决scheme名称。
  2. 删除位于父文件夹中的.sln文件。
  3. 在Visual Studio中,select“文件”|“打开项目”。
  4. 钻入刚刚重命名的新文件夹,然后打开.csproj文件(位于子文件夹中)。
  5. 右键单击项目名称并将其重命名为所需内容。 (应该与步骤1中的文件夹名称相同。)
  6. select文件|closures解决scheme。 一个对话框将询问您是否要保存对.sln文件的更改。 单击是。
  7. 在“另存文件为”对话框中,指向新更名的“PARENT”文件夹,然后单击“保存”。 (注意:确保.sln文件与文件夹名称相同,不需要,但保持一致。)

DONE。

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

我们最近上传了一个免费的VS扩展testing版,它为你做了这个东西。 看看VS Gallery: Gallery Download

那么我做了我的方式

  • closuresVisual Studio 2012
  • 将您的子目录重命名为.sln下的首选名称
  • 删除* .suo文件
  • 再次打开解决scheme,修复加载的项目的任何属性以满足新的子目录名称

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

当需要创build新项目时,会出现类似的问题,并且需要与项目名称不同的项目文件夹名称。

当你创build一个新的项目,它被存储在

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

假设您想直接在ject文件夹中find它:

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

我的解决方法是完成这项工作是创build与该path的最后一部分作为其名称的项目,以便它不创build一个额外的目录:

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

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

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

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

我使用VS 2013和TFS 2013。

我是这样做的:

  1. 打开Visual Studio,而不打开解决scheme本身,并使用源代码pipe理资源pipe理器来查找和重命名项目的文件夹
  2. 双击Source Control Explorer中的解决scheme文件以打开解决scheme。
  3. 你会得到一个问题:“项目最近已经被添加到这个解决scheme中了,你想从源代码控制中获得它们吗?”,然后你selectYes
  4. 现在文件夹和项目结构在那里,但现在的文件,所以现在你从源代码控制获取最新版本
  5. 尝试构build和提交更改。

有一个更简单的方法,在VS 2013更新1中进行了testing,适用于TFS连接的项目:

  • 打开VS,但让解决schemeclosures
  • 打开资源pipe理器并重命名所需的文件夹(如果您尚未closures该解决scheme,则解决scheme将被closures)
  • 右键单击解决scheme(也可以从Source Explorer)并select签入
  • 打开解决scheme,你会告诉你有新的项目添加,接受获取更改。
  • 从解决scheme中删除项目并再次添加,然后签入
  • 检查内部参考是否正确

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

1 – 重命名VS之外的项目。 2用文本编辑器编辑your_project_name.sln,将path重命名为新path

我做了以下几点:

  1. 在vs2013中重命名该项目。 (可选/不需要)

  2. 将项目导出为模板。

  3. closures解决scheme。

  4. 重新打开解决scheme

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

  6. 从解决scheme资源pipe理器删除以前的项目。

在这一点上,我试图编译新的解决scheme,这样做,我不得不手动将一些资源和标题从旧的项目文件夹复制到新的项目文件夹。 这样做直到编译没有错误。 现在这个新项目将“ .exe”文件保存到上一个文件夹中。

所以 – >

  1. 转到Windows资源pipe理器,手动将解决scheme文件从旧的项目文件夹复制到新的项目文件夹。

  2. closures解决scheme,并从新项目中打开解决scheme。

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

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

虽然这个问题已经得到解答,但是我想分享一下我的方法来解决这个问题。 我经常遇到同样的问题,在VS中重命名一个项目,并编辑文件夹名称,项目名称和.sln文件来完成。 我只写了一个VBScript,完成了所有这一切。 你必须小心你selectreplace的string。

编辑:你只需要将.vbs文件放在与解决scheme的.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