Visual Studio将项目移动到其他文件夹

时间:2010-04-12 05:22:31

标签: visual-studio visual-studio-2008

如何将项目移动到Visual Studio中的其他文件夹?我习惯于在我的项目中使用这个结构。

-- app
---- Project.Something
---- Project.SomethingElse

我想将整个命名空间SomethingElse重命名为SomethingNew,最好的方法是什么(不需要手动进入.sln文件)?

16 个答案:

答案 0 :(得分:182)

我尝试了删除并重新添加项目的建议,但是修复依赖项可能很麻烦。

我使用这种方法:

  1. 移动项目文件夹。
    • 如果项目处于源代码管理中,请使用源代码管理命令执行此操作。
  2. 在文本编辑器中编辑解决方案文件。应该只有一条路径需要改变。

答案 1 :(得分:147)

在解决方案资源管理器窗口中右键单击解决方案,然后选择“删除”,从解决方案中删除项目。移动整个项目文件夹,包括子目录,无论您想要去哪里。将项目添加回您的解决方案。

命名空间名称完全不同,只需编辑源代码即可。

答案 2 :(得分:42)

  1. 在VS2012中关闭您的解决方案
  2. 将项目移至新位置
  3. 打开解决方案
  4. 选择无法加载的项目
  5. 在“属性”工具窗口中,有一个可编辑的“文件路径”条目,允许您选择新项目位置
  6. 设置新路径
  7. 右键单击该项目,然后单击“重新加载”

答案 3 :(得分:2)

对我来说真正有用的是:

  1. 从解决方案中删除项目。
  2. 使用文本编辑器编辑项目文件。
  3. 更新"包"的所有相关路径。在我的情况下,不得不改变" .. \ packages"到" ...... \ packages"因为我把项目移到了更深的文件夹。
  4. 将项目加载回解决方案。
  5. 希望这有帮助。

答案 4 :(得分:2)

我有同样的问题。我在不到15分钟的时间内移动了参考文献,而没有更改参考文献。

对我来说,解决方案很简单:

  1. 将文件移动到需要的位置。
  2. 删除名称为.vs的文件夹。必须是不可见的文件夹。
  3. 使用简单的编辑器(如note或)打开解决方案文件(.sln) 记事本++。
  4. 使用以下命令更改文件所在的引用 结构:如果您将项目放在同一文件夹中,请删除 上一个文件夹或引用“ .. \”;如果放在上面的文件夹中 添加引用“ .. \”或文件夹的名称。
  5. 保存所做的更改。
  6. 打开项目文件(.csproj)并执行相同的操作,然后删除或添加 参考。
  7. 保存更改。
  8. 打开解决方案文件。

示例:

在解决方案文件(.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}”

    新功能: Project(“ {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

答案 5 :(得分:1)

VS2012很容易;只需使用更改映射功能:

  1. 创建要将解决方案移动到的文件夹。
  2. 签入所有项目文件(如果要保留更改),或者回滚任何签出的文件。
  3. 关闭解决方案。
  4. 打开Source Control Explorer。
  5. 右键单击解决方案,然后选择“高级 - >删除映射...”
  6. 将“本地文件夹”值更改为您在步骤#1中创建的值。
  7. 选择“更改”。
  8. 在源代码管理资源管理器中双击解决方案。

答案 6 :(得分:1)

在Visual Studio社区2019中,我做了Victor David Francisco Enrique所说的,但只需要删除.vs invisbile文件夹

答案 7 :(得分:0)

在VS 2015中

  1. 在解决方案资源管理器中卸载项目
  2. 创建新解决方案
  3. 将项目复制到新解决方案的文件夹
  4. 右键单击解决方案,添加现有项目。
  5. 如果您使用某些框架,例如MVC,则可能需要在参考管理器中添加引用。

答案 8 :(得分:0)

我想出了这个对我有用的尝试。

在Visual Studio 2017社区版中,它按此路径创建一个项目 “ C:\ Users \ mark \ source \ repos \ mipmaps \ mipmaps” 这将创建对文件的访问被拒绝的问题

现在,您可以通过这种方式解决该问题。

关闭Visual Studio流程。 然后,找到您的项目并复制项目文件夹 但是,首先在文档的Visual Studio 2017文件夹中创建一个名为Projects的子文件夹。 接下来,将项目文件夹粘贴到Visual Studio 2017项目文件夹中,而不是粘贴到名为Projects的子文件夹的主Visual Studio 2017文件夹中。 接下来,重新启动Visual Studio 2017 然后,选择“打开项目”。 然后,找到您粘贴在Visual Studio 2017 Projects文件夹中的项目 然后清理项目并重新构建它,它应该可以很好地构建和编译。 希望,这对其他人有所帮助。 不确定Microsoft为什么认为在需要写权限的路径上构建项目超出了我的范围。

答案 9 :(得分:0)

我希望Git中的更改显示为移动/重命名,而不是删除和添加。 因此,我结合了以上内容和这个post

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

并通过文本编辑器从sln文件中的nuget Pkg调整项目和装配的路径。

答案 10 :(得分:0)

  1. 将项目文件夹复制到新目的地
  2. 从解决方案中删除项目(在“解决方案资源管理器”中右键单击该项目,然后选择“删除”)
  3. 然后将现有项目添加到解决方案中(在“解决方案资源管理器”中右键单击该项目,然后依次选择“添加”和“现有项目”)
  4. 在“ YourProjectName.csproj”文件中将路径更改为“ packages”文件夹(在记事本中打开并更改链接软件包的路径)

答案 11 :(得分:0)

摘要:在VS2019中使用git重命名和移动,保留git历史记录,稍微利用R#,自动相关项目引用更新(对于sln的许多项目很重要,我们有200多个)

我一直使用以下步骤在Visual Studio 2019中重命名和移动C#项目。此过程使用R#调整名称空间。通过执行“ git mv”(避免添加/删除历史记录放置)来保留git历史记录。

两个阶段:1)重新命名项目,2)移动项目。

(使用base2中的提示来重新卸载项目。)

重命名

  1. VS |解决方案资源管理器|右键单击项目|重命名(例如,将Utils.Foo更改为Foo)。
  2. VS |解决方案资源管理器|右键单击项目|属性|更改程序集名称,默认名称空间和程序集信息字段
  3. 为相应的测试项目(例如,Utils.Foo.Tests)执行1和2
  4. VS |解决方案资源管理器|右键单击项目(生产和测试)|重构|调整命名空间
  5. 使用该项目的XAML文件可能需要进行更新(手动或进行适当的全局搜索和替换)
  6. 全部重建
  7. 提交!! (在移动之前提交更改)

注意:到目前为止,Windows资源管理器中的文件夹仍为旧名称(例如,Utils.Foo)。在移动步骤中已解决此问题。

移动

此方法:1)保留git历史记录,2)利用R#原子地调整名称空间,3)批量更新依赖项目(避免繁琐的手动编辑依赖sln和csproj文件)。

  1. 卸载解决方案中的所有项目(以便删除目标项目不会触发相关项目中的更改)

    VS |选择解决方案|下的所有解决方案文件夹。右键单击“卸载项目”

  2. 使用git移动文件夹(这样可以保留历史记录)

a)在2019年打开开发人员命令提示符

b)git状态(以说明“什么也不做,工作树干净”)

c)git mv项目 例如git mv“ C:\ Code \ foo \ foo \ Utils.Foo”“ C:\ Code \ Foo”

d)git状态以查看/验证更改

  1. 删除项目

VS |解决方案资源管理器|选择项目|右键单击|去掉 (由于所有项目都已卸载,因此在相关项目中不会正确删除对此项目的引用)

  1. 重新添加项目(到解决方案资源管理器中树的新位置)

a)VS |解决方案资源管理器|选择目标父文件夹|右键单击|新增|现有项目

  1. 重新加载所有项目

重要信息:确认相关项目的* .csproj文件已更新。

(VS | Team Explorer |更改|双击列出的任何相关csproj |检查并验证ProjectReference路径更改)

  1. 在单个移动的* .csproj文件中手动修复路径

使用Notepad ++(或其他文本编辑器)修复路径。通常,这可以通过简单的搜索和替换(例如,.. / .. / .. / .. /到../../)来完成。

这将更新...

a)GlobalAssmeblyInfo.cs参考

b)包的路径

c)依赖关系验证图文件的路径

d)到规则集路径的路径(例如<CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>

  1. 关闭并重新打开解决方案(以使项目引用形成良好的状态)

全部保存,关闭解决方案,我宁愿删除bin和obj文件夹以清除历史记录,重新打开解决方案

  1. 验证

a)VS |团队资源管理器|变化

i)应该看到“分阶段更改”显示已移动的文件    ii)应该看到更新良好的从属项目(* .csproj) 查看csproj差异,并注意路径已被精美更新! (这是避免使用文本编辑器费力地手动更新csproj文件的魔力)

b)在Windows资源管理器中,确认旧位置为空

c)清洁解决方案,重建解决方案,运行单元测试,在sln中启动应用。

  1. 提交!

答案 12 :(得分:0)

这对我有用vb2019。我复制了我的源项目文件夹。然后,我粘贴了该项目,并将文件夹重命名为其他名称。为了打破与源项目文件夹的联系,我临时重命名了源文件夹。我打开了我的目标项目。表单和模块的路径已在本地文件夹中重新发现。我仔细阅读了所有表格和模块,以确保它们正常工作。我运行了这个项目。我关闭了项目。我将源项目文件夹重命名为不是原始名称。我可以同时打开两个项目而不会出现错误。

答案 13 :(得分:0)

不确定为什么最简单的解决方案会忽略所有答案。只需运行“命令提示符应用程序”(在窗口栏中搜索CMD,它将自动显示)

然后只需键入以下命令(更改与您的情况相关的路径:)

robocopy /E C:\Users\Peter\source\repos D:\Peter\repos

robocopy的作用是“将文件数据从一个位置复制到另一位置”。而“秘密来源”是/ E,表示“复制子目录。此选项自动包含空目录。”

享受!!! :-)

CMD Promt

答案 14 :(得分:0)

  • 关闭解决方案并将您的项目移动到新文件夹/位置

  • 重新打开您的解决方案

  • 项目加载时应带有“+”叹号,表示部分未检查。所有文件 项目的名称将显示为已重命名。

  • 如果重新打开后不起作用,请右键单击项目并单击卸载,然后 重新加载。

  • 它在 VS2019 中有效

答案 15 :(得分:-2)

使用解决方案文件夹将相关项目组合在一起

请参阅http://msdn.microsoft.com/en-us/library/vstudio/c6c756s6(v=vs.100).aspx