我当前重命名项目文件夹的解决方案是:
从解决方案中删除项目。
重命名 Visual Studio 外部的文件夹。
将项目重新添加到解决方案中。
有没有更好的办法?
TFS 用户:如果您使用的源代码控制要求您在重命名文件/文件夹之前对其发出警告,那么请查看此答案,其中涵盖了所需的额外步骤。
要在 Visual Studio 中重命名项目的文件夹、文件 (.*proj
) 和显示名称:
关闭解决方案。
重命名 Visual Studio 外部的文件夹。 (如果使用源代码控制,请在 TFS 中重命名)
打开解决方案,忽略警告(如果要求从源代码管理加载项目,请回答“否”)。
浏览所有不可用的项目并... 打开项目的属性窗口(突出显示项目并按 Alt+Enter 或 F4,或右键单击 > 属性)。将属性“文件路径”设置为新位置。如果该属性不可编辑(如在 Visual Studio 2012 中),则直接在另一个编辑器(如 Notepad++)中打开 .sln 文件,然后更新那里的路径。 (您可能需要先在 TFS 等中签出解决方案。)重新加载项目 - 右键单击 > 重新加载项目。通过突出显示项目并按 F2 或右键单击 > 重命名来更改项目的显示名称。
打开项目的属性窗口(突出显示项目并按 Alt+Enter 或 F4,或右键单击 > 属性)。
将属性“文件路径”设置为新位置。如果该属性不可编辑(如在 Visual Studio 2012 中),则直接在另一个编辑器(如 Notepad++)中打开 .sln 文件,然后更新那里的路径。 (您可能需要先在 TFS 等中签出解决方案)
如果该属性不可编辑(如在 Visual Studio 2012 中),则直接在另一个编辑器(如 Notepad++)中打开 .sln 文件,然后更新那里的路径。 (您可能需要先在 TFS 等中签出解决方案)
重新加载项目 - 右键单击 > 重新加载项目。
通过突出显示项目并按 F2 或右键单击 > 重命名来更改项目的显示名称。
注意:涉及删除项目然后将项目重新添加到解决方案的其他建议解决方案将破坏项目引用。
如果您执行这些步骤,那么您还可以考虑重命名以下内容以匹配:
现有文件的程序集默认/根命名空间命名空间(使用 Visual Studio 中的重构工具或 ReSharper 的不一致命名空间工具)
还可以考虑修改以下 assembly attributes 的值:
AssemblyProductAttribute AssemblyDescriptionAttribute AssemblyTitleAttribute
这在 Visual Studio 2015 中很简单(可能适用于旧版本)
在解决方案资源管理器中,右键单击主解决方案→重命名在解决方案资源管理器中,右键单击项目(在解决方案下)→重命名在解决方案资源管理器中,双击,或右键单击属性→转到应用程序选项卡,重命名程序集名称和默认命名空间以匹配.如果您还想重命名命名空间,请打开您的类文件之一。右键单击命名空间 → 重命名...。这将搜索并替换整个项目中对命名空间的所有引用。关闭项目→重命名项目文件夹。在记事本中编辑.sln文件,修改csproj的路径,即fu\bar.csproj → bar\bar.csproj。
还有另一种方法,使用 *.sol、*csproj 文件。
打开您的解决方案文件。搜索您要更改的 *.csproj。它将是这样的(相对于 *.sol 文件): Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands .Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}" 只需将第一部分更改为新目录,例如:Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj 当然,不要忘记将整个项目移动到该目录。
伙计,我有没有为此挣扎过。不幸的是,Visual Studio 中没有一键式解决方案,但如果您正在运行 Visual Studio 2012 并且您的项目受 Team Foundation Server 的源代码控制,那么我是如何让它工作的,同时保留源代码历史记录:
(请务必阅读下面的@mjv 评论,因为他指出您可以跳过步骤 5-10)
确保您已签入所有更改,因此您没有待处理的更改。通过右键单击并选择“删除”从解决方案中删除项目。现在,在 Windows 资源管理器中,重命名项目文件夹。返回 Visual Studio,在解决方案资源管理器中,右键单击解决方案并选择添加 -> 现有项目。为您在步骤 2 中删除的项目选择项目文件,该文件应位于重命名的文件夹中。现在该项目又回到了解决方案中,但该项目似乎没有添加到源代码管理中。要解决此问题,请打开源代码管理资源管理器。在源代码管理资源管理器中找到与磁盘上的项目文件夹相对应的项目文件夹,您在步骤 3 中重命名了该文件夹。在源代码管理资源管理器中重命名该文件夹,使其与磁盘上的项目文件夹具有相同的名称。现在看看您的待定更改。您应该对解决方案文件进行更改,并对项目文件夹进行重命名操作。进行重建并确保一切都正确编译。如果您对重命名的项目有项目间引用,则需要将它们再次添加到引用它的各个项目中。你现在应该准备好了。去检查所有东西。
上面的指南对我有用。如果它对您不起作用,请尝试完全删除您的本地解决方案,并删除工作区中的文件夹映射。以防万一,重新启动 Visual Studio。确保您确实从计算机中删除了整个解决方案。现在将解决方案映射到您的工作区并获取最新版本。现在尝试上述步骤。如果在执行上述步骤时出现问题,这同样适用。只需在本地删除您的解决方案并获取最新的源代码,您就会有一个全新的工作环境。
如果您仍然遇到问题,请确保您没有在解决方案文件中手动更改任何内容,或者在尝试上述步骤之前尝试其他“技巧”。如果您更改了某些内容并将其签入,您可能需要考虑回滚到开始弄乱项目重命名之前的点。
当然,您还想在解决方案资源管理器中重命名项目本身。您可以在上述步骤之前执行此操作,但在这种情况下,请确保在应用上述步骤之前签入该更改。您也可以在之后执行此操作,但请确保先执行上述所有步骤,并在尝试在解决方案资源管理器中重命名项目名称之前检查您的更改。我不建议尝试将上述步骤与解决方案资源管理器中的项目名称重命名混合使用。虽然它可能有效,但我建议在 2 个单独的变更集中进行。
VS2012
的过程!请注意,如果您关闭解决方案,然后在 VS' Source Control Explorer
而不是 Windows Explorer
中重命名文件夹,则可以避免步骤 5-10(即必须在源代码管理中恢复重命名的文件夹)。
Folder already exists
。所以我不得不在 WE
中再次重命名该文件夹,然后在 SCE
中更改它,然后将文件复制到该文件夹中,然后才能正常工作。所以请按照上面 mjv 的评论。我也没有考虑需要更改实际的项目文件名(不仅仅是在 VS 中),这是我事后才做的,这让我重复了其中的一些步骤。
目前,没有。好吧,实际上您可以单击损坏的项目节点并在属性窗格中查找属性“路径”,单击小浏览图标,然后选择新路径。
瞧 :)
更简单的解决方案如下:
右键单击该项目并重命名它。 (可选)打开项目的属性设置并修改程序集名称(以及可选的默认命名空间)以使用新的项目名称。 (可选)在源文件中选择命名空间名称,右键单击并选择重构/重命名以将命名空间全局重命名为新的项目名称。 (可选)打开 AssemblyInfo.cs 文件并更改程序集名称以匹配。保存并关闭解决方案。使用 Windows 资源管理器,将项目文件夹重命名为新名称。在文本编辑器中打开 SLN 文件并找到对项目路径的一个引用并将其更改为使用新文件夹名称。
有四个必需的步骤,但推荐七个。归根结底,该项目已完全重命名。从技术上讲,项目的文件夹名称不必与项目本身匹配,因此即使该步骤也是可选的,但如果它们不匹配,可能会造成混淆。程序集和命名空间名称也是如此。
在 andersjanmyr's answer 中,首先重命名项目更容易。
重命名项目。关闭解决方案(保存)。重命名 Visual Studio 外部的文件夹。打开解决方案,忽略警告。浏览所有不可用的项目并将属性“文件路径”设置为项目文件的新位置,即 someproject.csproj。重新加载项目。
此外,执行这些步骤后,您可能希望将其他引用重命名为旧项目名称。
在项目属性中,更新程序集名称和默认命名空间。
这将更新项目文件中的以下内容...
<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>
...并且将摆脱错误“命名空间与文件位置不对应,应该是:'SomeProjectName'”
重命名您的根命名空间(如果您有 ReSharper,请右键单击命名空间并转到 Refactor -> Rename)。
更改 AssemblyInfo.cs 中所有出现的旧项目名称。
对于那些使用 Visual Studio + Git 并希望保留文件历史记录的人(重命名项目和/或解决方案的工作):
关闭 Visual Studio 在 .gitignore 文件中,复制要重命名的项目的所有忽略路径,并使用这些路径的重命名版本。像这样使用 Git 移动命令: git mv
对于 Visual Studio 2017,您可以使用我的 Visual Studio 扩展:
它将在以下位置重命名项目:
项目位置文件夹
解决方案文件
其他项目中的参考
程序集名称、信息
默认命名空间
[assembly: InternalsVisibleTo("MyTests")]
。当我重命名 MyTests
时,它没有重命名该引用。同样,我认为这不属于您的权限范围,并且很容易手动解决。
我只需要自己做这件事(使用 Visual Studio 2010)。正如一些人所回答的那样,最简单的步骤似乎是:
关闭 Visual Studio 项目。打开 .sln 文件并重命名每个 .csproj 出现的项目目录前缀。保存 .sln 文件 重命名硬盘驱动器上的实际项目文件夹目录以匹配 .sln 文件中的更改。打开 .sln(在 Visual Studio 中)并重建
使用 Visual Studio 2019,我按照以下步骤使项目名称更改成功:
关闭解决方案 重命名项目文件夹以匹配新项目名称 在记事本++ 类型的编辑器中打开解决方案文件并使用新项目名称文件夹编辑 FilePath 打开解决方案并单击否,如果它询问您是否要从源代码管理打开右键单击您要重命名的项目,然后单击属性,然后在下面进行更改: 更改程序集名称、默认程序集命名空间和使用新名称的程序集信息 打开任何文件并将文件移动到新命名空间,这将由所有文件完成 如果您有 app.config类型的文件,然后确保将它们也移动到新的命名空间中重建它,它将成功运行
适用于商业智能数据工具的 Visual Studio 扩展的经过验证的解决方案 (SSDT-BI 2013):
将项目文件夹移动到新位置(不要重命名任何内容) 在解决方案资源管理器中,重命名项目/解决方案。关闭(并保存)新重命名的项目。重命名项目的文件夹和 .sln 文件。使用文本编辑器打开新重命名的项目解决方案文件 (.sln)(我使用的是 Notepad++)在第 6 行,您将看到:“Project {fdjfksdjk4387!...} = "OLDPROJECT", "OLDFOLDER\OLDPROJECT. rptproj”。使用第 4 步中使用的新名称重命名所有内容。(即 ... = "NEWPROJECT"、"NEWFOLDER\NEWPROJECT.rptproj"...)就是这样!
它经过 100% 的测试,在我的情况下完美运行。
注意:我无法确认它是否适用于不同的项目模板和其他 Visual Studio 版本。与往常一样,请事先备份所有内容。
在 Visual Studio 2017 中对我有用的是:
在 Visual Studio 中关闭解决方案
重命名解决方案中的项目目录。 (推动源代码控制的变化——在我的例子中是 Git)
(推动源代码控制的变化——在我的例子中是 Git)
在文本编辑器(Visual Studio 2017 外部)中编辑 .sln 文件,更改目录名称。
在 Visual Studio 中重新打开解决方案
它说的是“重新添加项目”。我重建了一切,一切都很好。
Dependencies
>> ; Add reference
>> 选择你的新项目)
See item 3 in the linked article。
关闭解决方案和 IDE。在 Windows 资源管理器中:将目录名称更改为新名称。在 Windows 资源管理器中:使用文本编辑器打开 .sln 文件。将目录名称更改为新名称并保存。如果解决方案没有自动启动,请重新启动 IDE 并从菜单 File → Recent Files 菜单打开解决方案。单击解决方案资源管理器中的项目文件夹,然后检查底部属性中的路径属性。现在它将引用新的项目文件夹。
它对我有用。
我不得不这样做很多次。能够重新利用现有项目,但能够重命名命名空间、文件和文件夹中的文本(包括文件/目录名称),这非常有用。
使用从根文件夹开始的递归查找和替换意味着重命名不会破坏解决方案文件和项目引用中的项目链接。
为此,我创建了一个项目来做到这一点。该应用程序还努力忽略版本控制文件夹,例如 .git、.svn 和 .vs 设置文件。更多信息在自述文件中。
https://github.com/garethrbrown/vs-project-rename
https://i.imgur.com/ihBY1aL.png
我刚刚为自己编写了一个全局 dotnet 工具(也考虑了 git+history)解决了这个问题。
通过 dotnet tool install -g ModernRonin.ProjectRenamer
安装,与 renameproject <oldName> <newName>
一起使用。
文档/修补/公关在
https://github.com/ModernRonin/ProjectRenamer
这在 Visual Studio 2019 中对我来说效果很好。
只需像往常一样单击文件名,即可在 Visual Studio 中重命名解决方案和项目。在 Visual Studio 中重命名命名空间。重命名项目主页面上的所需元素(发布位置、应用程序、默认命名空间等)。正如正确指出的那样,这对文件夹没有任何作用,但它确实重命名了项目文件并将所有内容在 Visual Studio 中捆绑在一起。关闭 Visual Studio。重命名文件夹。打开 Visual Studio 并回答“否”以从源代码管理中获取项目。删除已卸载的项目引用。使用从解决方案添加现有项目重新添加每个项目。这将所有内容联系在一起,并为我构建了项目。
请评论并纠正以上任何无效的内容。
这就是我在 VS19 中重命名现有项目的方式。
关闭 Visual Studio 项目重命名并打开驱动器上的每个项目文件夹名称重命名每个 .csproj 打开 .sln 文件并重命名每个 .csproj 出现的项目目录前缀。在 Visual Studio 中打开 .sln 文件并通过遍历每个文件或使用 ReplaceAll 重建更新以前的命名空间引用
注意:此修复程序适用于 Visual Studio 2008,但它应该在这里工作。
使用 Windows 资源管理器,将解决方案文件夹(父文件夹和子文件夹)重命名为新的解决方案名称。删除位于父文件夹中的 .sln 文件。在 Visual Studio 中,选择菜单文件 ► 打开项目。钻入刚刚重命名的新文件夹并打开 .csproj 文件(位于子文件夹中)。右键单击项目名称并将其重命名为您想要的名称。 (它应该与步骤 1 中的文件夹名称相同。)选择菜单文件 ► 关闭解决方案。一个对话框将询问您是否要将更改保存到 .sln 文件。单击是。在“将文件另存为”对话框中,指向新重命名的父文件夹并单击“保存”。 (注意:确保 .sln 文件与文件夹同名。不是必需的,但保持一致性。)
完毕。
我编写了一个小工具,可以自动执行所有这些步骤。它目前还支持 Subversion。
有关当前版本的信息,请访问 Visual Studio Project Renamer Infos。
现在可以从 Visual Studio Project Renamer Download Page 下载最新版本。
非常感谢您的反馈。
我经常遇到同样的问题,即在 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
重命名解决方案和项目文件夹中的项目 从解决方案中删除项目 将现有项目添加到解决方案(您重命名的项目)
这个对我有用。 TFS 还将跟踪新项目。
我最近正在使用 VS2022 开发 .Net 6 项目。我需要将我的模板微服务重命名为我的用户微服务。
.Net 6 为您改变了大部分内容。像 AssemblyNames 和 NameSpaces。此外,它会自动更改 .sln 中的 ProjectName 引用。因此,此答案将真正帮助您毫无障碍地重命名您的服务。
https://i.stack.imgur.com/83gqs.png
所以,我遵循的步骤:
在 Visual Studio 中打开解决方案并执行以下步骤:
我通过右键单击它来重命名我的解决方案。例如,从 TemplateServiceSolution 到 UserServiceSolution。通过右键单击解决方案中的所有项目来重命名它们。比如,TemplateService 到 UserService。在一个特定的项目中,我搜索了命名空间,例如:命名空间 TemplateService 并全部替换为命名空间 UserService。在每个项目中执行此步骤。打开您的launchsettings.json,并重命名与旧服务相关的任何内容,因为我在launchsettings.json 的配置文件中几乎没有什么东西。为了确定,请检查您的 startup 和 program.cs 文件,我没有对它们进行任何更改。
从 Visual Studio 关闭解决方案并执行以下步骤:
关闭解决方案,然后打开文件资源管理器。将我的所有项目文件夹从 TemplateService 重命名为 UserService。在 notepad/notepad++ 中打开 .sln,必须更改文件夹结构名称。就像对于一个特定的项目,我应该给出正确的 .csproj 路径。如图所示,我需要将 TemplateService 重命名为 UserService。
在 Visual Studio 中打开解决方案。在 Visual Studio Code 中加载解决方案后,您的大部分依赖项都会立即加载。你准备好了。
使用 TFS 时,第 2 步实际上是在源代码管理中重命名文件夹,然后在重新打开解决方案之前获取最新的。
在 Visual Studio 2013 Update 1 中测试了一种更简单的方法,适用于 TFS 连接的项目:
打开 Visual Studio,但关闭解决方案。
打开 Source Explorer 并重命名所需的文件夹(如果您尚未先关闭该解决方案,该解决方案将为您关闭)。
右键单击解决方案(也从 Source Explorer 中)并选择签入。
打开解决方案。您会被告知添加了新项目。接受以获取更改。
从解决方案中删除项目并重新添加,然后签入。
检查内部参考是否正常。
嗯,我是按我的方式做的
关闭 Visual Studio 2012
将您的子目录重命名为 .sln 下的首选名称
删除 *.suo 文件
再次打开解决方案,并修复加载的项目的任何属性以满足新的子目录名称
在 Visual Studio 之外重命名项目。使用文本编辑器编辑 your_project_name.sln,并将路径重命名为新路径。
在文本编辑器中打开 .sln,并在以下行中将
转到.sln文件,右键,用Notepad++(或任何编辑器;Notepad++最快)打开,找到路径,更改它。