如何将项目移动到 Visual Studio 中的不同文件夹?我在我的项目中习惯了这种结构。
-- app
---- Project.Something
---- Project.SomethingElse
我想将整个命名空间 SomethingElse 重命名为 SomethingNew,最好的方法是什么(无需手动进入 .sln 文件)?
通过在“解决方案资源管理器”窗口中右键单击该项目并选择“删除”,从您的解决方案中删除该项目。将整个项目文件夹(包括子目录)移动到您想要的任何位置。将项目添加回您的解决方案。
命名空间名称是完全不同的东西,只需编辑源代码。
我尝试了删除并重新添加项目的建议,但是修复依赖项可能会很痛苦。
我使用这种方法:
移动项目文件夹。如果项目在源代码管理中,请使用源代码管理命令进行移动。在文本编辑器中编辑解决方案文件。您应该只需要更改一条路径。
git mv ...
而不是 mv ...
。有关详细信息,请参阅 git-mv
文档。
在 VS2012 中关闭您的解决方案 将您的项目移动到新位置 打开您的解决方案 选择加载失败的项目 在属性工具窗口中,有一个可编辑的“文件路径”条目,允许您选择新的项目位置 设置新路径 右单击项目并单击重新加载
总结:在 VS2019 中使用 git 重命名并移动,保留 git 历史记录,稍微利用 R#,自动依赖项目引用更新(对于 sln 的许多项目很重要,我们有 >200)
我一直在使用以下步骤在 Visual Studio 2019 中重命名和移动 C# 项目。此过程使用 R# 来调整命名空间。通过执行“git mv”(避免添加/删除历史记录删除)来保留 git 历史记录。
两个阶段:1) 原地重命名项目和 2) 移动项目。
(使用 base2 重新卸载项目的提示。)
改名
VS |解决方案资源管理器 |右键项目 |重命名(例如,Utils.Foo 到 Foo)。 VS |解决方案资源管理器 |右键项目 |属性 |更改程序集名称、默认命名空间和程序集信息字段 为相应的测试项目执行 1 和 2(例如,Utils.Foo.Tests) VS |解决方案资源管理器 |右键单击项目(生产和测试)|重构 |调整使用该项目的命名空间 XAML 文件可能需要更新(手动或使用适当的全局搜索和替换)重建所有提交! (在移动之前提交更改)
注意:Windows 资源管理器中的文件夹至今仍是旧名称(例如,Utils.Foo)。这在移动步骤中是固定的。
移动
此方法:1) 保留 git 历史记录,2) 利用 R# 自动调整命名空间,以及 3) 批量更新依赖项目(避免对依赖 sln 和 csproj 文件进行繁琐的手动编辑)。
卸载解决方案中的所有项目(以便目标项目的移除不会触发依赖项目的更改) VS |选择解决方案 | 下的所有解决方案文件夹右键单击 Unload Projects 使用 git 移动文件夹(因此保留历史记录)
a) 打开 2019 年的开发人员命令提示符
b) git status (说明“没有提交,工作树干净”)
c) git mv 项目 例如, git mv "C:\Code\foo\foo\Utils.Foo" "C:\Code\Foo"
d) git status 查看/验证更改
删除项目
VS |解决方案资源管理器 |选择项目 |右击|删除(由于所有项目都已卸载,因此不会正确删除依赖项目中对它的引用)
重新添加项目(到解决方案资源管理器树中的新位置)
一)VS |解决方案资源管理器 |选择目标父文件夹 |右击|添加 |现有项目
重新加载所有项目
重要提示:确认依赖项目的 *.csproj 文件已更新。
(VS | 团队资源管理器 | 更改 | 双击列出的任何依赖 csproj | 检查-验证 ProjectReference 路径更改)
手动修复单个移动的 *.csproj 文件中的路径
使用 Notepad++(或其他文本编辑器)修复路径。这通常可以通过简单的搜索和替换来完成(例如,../../../../ 到 ../../)。
这将更新...
a) GlobalAssmeblyInfo.cs 参考资料
b) 包的路径
c) 依赖验证图文件的路径
d) 规则集路径的路径(例如,<CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>
)
关闭并重新打开解决方案(以使项目引用保持良好状态)
全部保存,关闭解决方案,我更喜欢删除 bin 和 obj 文件夹以清除历史记录,重新打开解决方案
证实
一)VS |团队资源管理器 |变化
i) 应该看到显示已移动文件的阶段性更改 ii) 应该看到已很好更新的依赖项目 (*.csproj) 查看 csproj 差异并注意路径已被精美更新! (这是避免使用文本编辑器费力地手动更新 csproj 文件的魔法)
b) 在 Windows 资源管理器中,验证旧位置是否为空
c) 清理解决方案、重建解决方案、运行单元测试、在 sln 中启动应用程序。
犯罪!!
对我有用的是:
从解决方案中删除项目。使用文本编辑器编辑项目文件。更新“包”的所有相对路径。就我而言,我不得不将 ..\packages 更改为 ..\..\..\packages,因为我将项目移动到了更深的文件夹。将项目重新加载到解决方案中。
我有同样的问题。我在 15 分钟内通过移动参考解决了问题,而没有更改参考。
对我来说,解决方案很简单:
将您的文件移动到您需要的地方。删除名称为 .vs 的文件夹。必须是不可见的文件夹。使用简单的编辑器(如 note 或 notepad++)打开解决方案文件 (.sln)。使用以下结构更改文件所在的引用:如果将项目放在同一文件夹中,请删除以前的文件夹或引用“..\”;如果您放入上述文件夹,请添加参考“..\”或文件夹名称。保存包含更改的文件。打开项目文件 (.csproj) 并执行相同操作,删除或添加引用。保存更改。打开解决方案文件。
例子:
在解决方案文件 (.sln) 中
原文:Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", "ScannerPDF\PATH1.UI\PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B }" 项目("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.DataService", "ScannerPDF\PATH1.DataService\PATH1.DataService.csproj", "{ED5A561B-3674-4613-ADE5-B13661146E2E }" 新:项目("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI\PATH1.UI.csproj", "{A26438AD-E428-4AE4 -8AB8-A5D6933E2D7B}”项目(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”)=“PATH1.DataService”,“PATH1.DataService\PATH1.DataService.csproj”,“{ED5A561B-3674-4613-ADE5 -B13661146E2E}"
在项目文件中:
原始:新:原始参考:..\lib\RCWF\2018.1.220.40\TelerikCommon.dll 新参考:..\lib\RCWF\2018.1.220.40\TelerikCommon.dll
最简单的方法,我自己找到的
我尝试了多次,直到找到了一种可行的方法。例如,您想将项目从 sln 文件夹移动到 mySource 文件夹。
删除您的项目:在 Visual Studio 的 SolutionExplorer 中选择您要更改目录的项目,按 Delete -> 删除项目。它仍然保留在您的 sln 文件夹中。将其复制到您的路径:在 Windows 资源管理器中,将整个项目复制到您的 mySource 文件夹。 -> 现在你已经准备好包含它了。包含您的项目:在 Visual Studio 的 SolutionExplorer 中添加现有项目并从 mySource 文件夹中选择您的项目。 -> 项目现在又回到了您的解决方案中。调整您的项目参考:检查项目中的每个参考。在您的项目 -> 依赖项 -> 项目 -> 您会看到您的项目引用。如果项目参考上有黄色警告标志,那就错了。删除您的项目引用并添加新的。重建你的项目:让它运行。之后,您可以删除不再使用的 sln 文件夹中的项目。
这样可行。玩得开心 :)
在 Visual Studio 社区 2019 中,我按照 Victor David Francisco Enrique 所说的做了,但只需要删除 .vs invisbile 文件夹
在VS2012中很容易;只需使用更改映射功能:
创建要将解决方案移动到的文件夹。签入所有项目文件(如果要保留更改),或回滚任何签出的文件。关闭解决方案。打开源代码管理资源管理器。右键单击解决方案,然后选择“高级 -> 删除映射...” 将“本地文件夹”值更改为您在步骤 #1 中创建的值。选择“更改”。通过在源代码管理资源管理器中双击解决方案来打开它。
在 VS 2015 中
在解决方案资源管理器中卸载您的项目 创建一个新解决方案 将项目复制到新解决方案的文件夹 右键单击解决方案,添加现有项目。如果您使用一些框架,例如 MVC,您可能需要在引用管理器中添加引用。
我发现这个尝试对我有用。
在 Visual Studio 2017 社区版中,它在此路径“C:\Users\mark\source\repos\mipmaps\mipmaps”创建一个项目这将创建一个访问文件被拒绝的问题
现在,您可以通过这种方式解决此问题。
关闭您的视觉工作室进程。然后,找到您的项目并复制项目文件夹但是,首先在文档中的 Visual Studio 2017 文件夹中创建一个名为 Projects 的子文件夹。接下来,将项目文件夹粘贴到您的 Visual Studio 2017 项目文件夹中,而不是主 Visual Studio 2017 文件夹中,它应该进入名为 Projects 的子文件夹中。接下来,重新启动 Visual Studio 2017 然后,选择 Open project Solution 然后,找到您粘贴在 Visual Studio 2017 Projects 文件夹中的项目然后清理项目并重建它,它应该构建和编译就好了。希望,这对其他人有帮助。不知道为什么微软认为在需要写入权限的路径中构建您的项目超出了我的范围。
我希望 Git 中的更改显示为移动/重命名,而不是 delete &补充道。所以我将上述内容和post结合起来。
mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit
并通过文本编辑器从 sln 文件中的 nuget Pkg 调整项目和程序集的路径。
将项目文件夹复制到新目标从解决方案中删除您的项目(右键单击“解决方案资源管理器”中的项目并选择“删除”)然后将现有项目添加到解决方案(右键单击“解决方案资源管理器”中的项目并选择“添加” 然后“现有项目”)在“YourProjectName.csproj”文件中更改“包”文件夹的路径(在记事本中打开并更改链接包的路径)
这对我有用 vb2019。我复制了我的源项目文件夹。然后我粘贴了项目,并将文件夹重命名为任何内容。为了打破与源项目文件夹的联系,我暂时重命名了源文件夹。我打开了我的目标项目。在本地文件夹中重新发现了表单和模块的路径。我检查了我所有的表格和模块,以确保它们正常工作。我运行了这个项目。我关闭了项目。我将源项目文件夹重命名为不是原始名称。我可以同时打开两个项目而不会出错。
关闭解决方案并将您的项目移动到新文件夹/位置
重新打开您的解决方案
项目应加载“+”叹息,表示部分未检查。项目的所有文件都将显示为已重命名。
如果重新打开后无法正常工作,请右键单击项目并单击卸载然后重新加载。
它在VS2019中工作
使用解决方案文件夹将相关项目组合在一起
请参阅http://msdn.microsoft.com/en-us/library/vstudio/c6c756s6(v=vs.100).aspx
不知道为什么所有答案都忽略了最简单的解决方案。只需运行“命令提示符应用程序”(在 Windows 栏中搜索 CMD,它会自动出现)
然后只需键入以下命令(更改与您自己的案例相关的路径:)
robocopy /E C:\Users\Peter\source\repos D:\Peter\repos
robocopy 所做的是“将文件数据从一个位置复制到另一个位置”。 “秘密来源”是/E,意思是“复制子目录。这个选项自动包括空目录。”
享受!!! :-)
https://i.stack.imgur.com/HzWpt.png