我目前重命名项目文件夹的解决方案是:
有没有更好的办法?
实际上,您可以单击损坏的项目节点并在属性窗格中查找属性“Path”,单击小型浏览图标,然后选择新路径。
瞧:)
还有另一种方法,使用*. sol,*csproj文件。
它会像这样(相对于*. sol文件):
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"
只需将第一部分更改为新的diretory,例如:
Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj
当然,不要忘记将整个项目移动到该目录。
TFS用户:如果您使用的源代码控制要求您在重命名文件/文件夹之前警告它,那么请查看改为这个答案,其中涵盖了所需的额外步骤。
在Visual Studio中重命名项目的文件夹、文件(.*proj)和显示名称:
.*proj
.sln
备注:其他建议的解决方案涉及删除项目然后将项目重新添加到解决方案中,这将破坏项目引用。
如果您执行这些步骤,那么您还可以考虑重命名以下内容以匹配:
还要考虑修改以下程序集属性的值:
AssemblyProductAttribute
AssemblyDescriptionAttribute
AssemblyTitleAttribute
说明:此修复程序适用于Visual Studio 2008,但它应该可以在此处工作。
成交
在Andersjanmyr的回答中,首先重命名项目更容易。
此外,执行这些步骤后,您可能希望将其他引用重命名为旧项目名称。
在项目属性中,更新程序集名称和默认命名空间。
这将更新项目文件中的以下内容…
<RootNamespace>SomeProjectName</RootNamespace><AssemblyName>SomeProjectName</AssemblyName>
…并将摆脱错误“命名空间不对应于文件位置,应该是:'某些项目名称'”
重命名您的根命名空间(如果您有ReSharper右键单击命名空间并转到重构->重命名)。
更改AssemblyInfo.cs中旧项目名称的所有出现。
参见链接文章中的第3项
它为我工作。
我只需要自己做(使用Visual Studio 2010)。正如一些人回答的那样,最简单的步骤似乎是:
我已经编写了一个小工具来自动执行所有这些步骤。它现在还支持Subversion。
有关当前版本的信息可以在Visual Studio Project Renamer Infos中找到。
最新版本现在可以从Visual Studio Project Renamer下载页面下载。
非常感谢反馈。
使用TFS时,步骤2实际上是在源代码控制中重命名文件夹,然后在重新打开解决方案之前获取最新的文件夹。
更改文件夹名称后,打开记事本中的. sln文件并将路径更改为新路径。
伙计,我一直在努力解决这个问题。不幸的是,Visual Studio中没有一键式解决方案,但如果您正在运行Visual Studio 2012并且您的项目在Team Foundation Server的源代码控制下,以下是我如何让它工作,同时保留源代码历史记录:
(请务必阅读@mjv下面的评论,因为他指出您可以跳过步骤5-10)
上面的指南对我很有用。如果不适合你,请尝试完全删除本地解决方案,并删除工作区中的文件夹映射。以防万一,重新启动Visual Studio。确保你实际上从计算机中删除了整个解决方案。现在读取到工作区的解决方案映射并获取最新版本。现在尝试上述步骤。如果在遵循上述步骤时出现问题,同样适用。只需在本地删除解决方案并获取最新来源,你就可以重新开始工作了。
如果您仍然遇到问题,请确保您没有在解决方案文件中手动更改任何内容,或者在尝试上述步骤之前尝试其他“技巧”。如果您已经更改了某些内容并签入了它,您可能需要考虑回滚到开始处理项目重命名之前的点。
当然,您还想在解决方案资源管理器中重命名项目本身。您可以在上面的步骤之前执行此操作,但在这种情况下,请确保在应用上面的步骤之前检查该更改。您也可以在之后执行,但请确保首先遵循上面的所有步骤,并在尝试在解决方案资源管理器中重命名项目名称之前检查您的更改。我不建议尝试将上述步骤与解决方案资源管理器中项目名称的重命名混合在一起。虽然它可能有效,但我建议在两个单独的更改集中进行。
当必须创建新项目并且您想要与项目名称不同的项目文件夹名称时,会出现类似的问题。
当您创建一个新项目时,它会存储在
./path/to/pro/ject/YourProject/YourProject.**proj
假设您想将其直接放在ject文件夹中:
ject
./path/to/pro/ject/YourProject.**proj
我的解决方法是使用路径的最后一部分作为其名称创建项目,这样它就不会创建额外的目录:
./path/to/pro/ject/ject.**proj
当您现在从Visual Studio中重命名项目时,您无需离开Visual Studio即可实现目标:
这种方法的缺点是您必须调整默认命名空间和Output二进制文件的名称,并且您必须更新项目模板中包含的所有文件中的命名空间。
我使用Visual Studio 2013和TFS 2013。
我是这样做的:
在Visual Studio 2013 Update 1中测试了一种更简单的方法,适用于与TFS连接的项目:
我们最近上传了一个免费的Visual Studio扩展的测试版,它为您完成了这些工作。
查看Visual Studio Gallery:图库下载
我按我的方式做了
用于商业智能数据工具的Visual Studio扩展的成熟解决方案(SSDT-BI 2013):
它经过了100%的测试,在我的案例中完美地工作。
注意:我无法确认它是否适用于不同的项目模板和其他Visual Studio版本。一如既往,请事先备份所有内容。
最简单的方法是转到窗口的属性,更改默认命名空间的名称,然后完成重命名。
这在Visual Studio 2015中很简单(可能适用于旧版本)
fu\bar.csproj
bar\bar.csproj
更简单的解决方案如下:
有四个必要步骤,但建议执行七个。在一天结束时,尽管项目已完全重命名。从技术上讲,项目的文件夹名称不必与项目本身匹配,因此即使该步骤也是可选的,但如果它们不匹配,就会令人困惑。程序集和命名空间名称也是如此。
我做了以下事情:
<创建整个文件夹的备份>
从Visual Studio 2013中重命名项目(可选/不需要)。
将项目导出为模板。
关闭解决方案。
重新打开溶液
从保存的模板创建项目并使用您喜欢的名称。
从解决方案资源管理器中删除上一个项目。
此时,我尝试编译新解决方案,为此,我必须手动将一些资源和标头从旧项目文件夹复制到新项目文件夹。这样做直到它编译时没有错误。现在这个新项目保存了“.exe"文件到上一个文件夹。
所以->
转到Windows资源管理器并手动将解决方案文件从旧项目文件夹复制到新项目文件夹。
关闭解决方案,然后在新项目中打开解决方案。
如果需要,将配置更改回(x64)。
从解决方案的文件夹中删除具有旧名称的项目文件夹。
对于Visual Studio 2017,您可以使用我的Visual Studio扩展:
下载
它将重新命名该项目:
我经常遇到在Visual Studio中重命名项目并编辑文件夹名称、项目名称和. sln文件以完成此任务的相同问题。我刚刚编写了一个VBScript脚本来完成所有这些。您必须小心选择用于替换的字符串。
您只需将. vbs文件与解决方案的. sln文件放在同一目录中。
' Script parameters'Solution = "Rename_Visual_Studio_Project" '.sln'Project = "Rename_Visual_Studio_Project" '.csproj'NewProject = "SUCCESS" Const ForReading = 1Const 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.ReadAllnewFileText = 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
右键单击project→属性,并将(name)设置为所需的名称。
在解决方案和项目文件夹中重命名项目
从解决方案中删除项目
将现有项目添加到解决方案(重命名的项目)
这对我有效。TFS也将跟踪新项目。
在Visual Studio 2017中对我有用的东西:
它说了一些类似“补全项目”的东西。我重建了一切,一切都很好。
对于那些使用Visual Studio+Git并希望保留文件历史记录的人(重命名项目和/或解决方案):
关闭Visual Studio
在. gitignore文件中,使用这些路径的重命名版本复制要重命名的项目的所有忽略路径。
像这样使用Git移动命令:
git mv <old_folder_name> <new_folder_name>
请参阅留档以获取其他选项:https://git-scm.com/docs/git-mv
在. sln文件中:找到定义项目的行并更改路径中的文件夹名称。该行应如下所示:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
Open Visual Studio, and right click on project → Rename
Afterwards, rename the namespaces.
I read that ReSharper has some options for this. But simple find/replace did the job for me.
Remove old .gitignore paths.
或者简单地复制所有代码,使用所需的名称打开一个新项目,然后粘贴代码。运行调试,然后删除上一个项目。完成!
它为我工作!
在文本编辑器中打开. sln,并在以下行中将更改为您的新文件夹名称项目("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ricky","\. csproj","{021CC6B0-8CFB-4194-A103-C19AF869D965}"
我不得不这样做很多次。能够重新利用现有项目,但能够重命名命名空间、文件和文件夹(包括文件/目录名称)中的文本,这真的很有用。
使用从根文件夹开始的递归查找和替换意味着重命名不会中断到解决方案文件和项目引用中项目的链接。
为此,我创建了一个项目来做到这一点。该应用程序还努力忽略版本控制文件夹,例如. git、. svn和. vs设置文件。更多信息在README中。
https://github.com/garethrbrown/vs-project-rename
转到. sln文件,右键单击,使用Notepad++(或任何编辑器;Notepad++最快)打开,找到路径,更改它。
使用Visual Studio 2019,我按照以下步骤成功更改项目名称:
我刚刚为自己编写了一个全局dotnet工具(也考虑了git+历史记录)解决了这个问题。
安装dotnet tool install -g ModernRonin.ProjectRenamer,与renameproject <oldName> <newName>一起使用。
dotnet tool install -g ModernRonin.ProjectRenamer
renameproject <oldName> <newName>
文档/修补/PR在
https://github.com/ModernRonin/ProjectRenamer
如果您的项目当前正在运行,则无法重命名文件夹
right-click > rename
这在Visual Studio 2019中运行良好。
请评论并纠正上面任何不起作用的内容。
这就是我在VS19中重命名现有项目的方式。
其他答案提供了很多关于如何做到这一点的细节。不过,这里有一个快捷方式,可以为你节省一些工作:
.csproj
这样你就不必繁琐地使用Visual Studio GUI。你也可以以这种方式修复命名空间。你可以使用源代码控制来验证更改(例如打开TortoiseGit Commit并查看更改)。
最简单的方法:
Project -> Export Template... -> Project Template -> Finish
File -> New Project -> Find the template -> Give it the name you want -> Add to existing solution or just as new
就这样,你完成了,如果你愿意,你现在可以删除另一个项目,但首先确保新项目按预期工作。模板应保留所有依赖项和项目设置。
派对有点晚了,但在VS2022中,您建议的方式对我来说仍然是最简单的(我不喜欢直接编辑. sln文件)。
即:
从解决方案中删除项目。
重命名外面的文件夹
将项目重新添加到解决方案中。
例如,如果您想将项目“HelloWorld”重命名为“HelloStackOverflow”。
我最近正在使用VS2022进行. Net 6项目。我需要将我的templatemicroservice重命名为我的UserMicroservice。
. Net 6为您更改了大部分内容。例如AssemblyNames和NameSpace。此外,它会自动更改. sln中的ProjectName引用。因此,这个答案将真正帮助您毫无障碍地重命名您的服务。
我遵循的步骤:
在Visual Studio中打开解决方案并执行以下步骤:
TemplateServiceSolution
UserServiceSolution
TemplateService
UserService
namespace TemplateService
namespace UserService
using TemplateService
using UserService
launchsettings.json
关闭Visual Studio中的解决方案并执行以下步骤:
在Visual Studio中打开解决方案。一旦您在Visual Studio Code中加载解决方案,您的大多数依赖项将被加载。你准备好了。