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

Ego*_*hin 167 visual-studio-2008 visual-studio

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

-- app
---- Project.Something
---- Project.SomethingElse
Run Code Online (Sandbox Code Playgroud)

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

Igo*_*sky 191

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

我用这种方法:

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

  • 更容易和更快,应该是公认的答案! (11认同)
  • @AnishV例如,如果你使用Git,输入`git mv ...`而不是`mv ...`.有关详细信息,请参阅`git-mv`文档. (3认同)
  • “如果项目处于源代码管理中,请使用源代码管理命令进行移动。” ..你能解释一下怎么做吗? (2认同)
  • 在.csproj文件中,您需要更新SolutionDir属性,以及修复项目引用和nuget包位置的所有路径.在.sln文件中,您需要做的就是更新项目的路径. (2认同)

Han*_*ant 158

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

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

  • 在删除要移动的项目之前,从解决方案中卸载所有相关项目.这样,他们就不会检测到删除并且项目引用保持不变.移动项目并将其重新添加到解决方案后,可以再次加载相关项目. (26认同)
  • 不要忘记删除TFS中的文件,然后将其重新导入到另一个目录位置或项目中的TFS,会导致删除文件更改历史记录. (9认同)
  • 这就是我所做的,但我认为有一种方法可以在不删除整个项目的情况下完成所有这些,这使我重新添加所有依赖项. (4认同)

Emm*_*uel 42

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

  • 它不再起作用,因为路径不可编辑. (13认同)
  • 这非常有效,并且似乎是最快速和最简单的方式,尽管有其他更高的投票答案.这里有一篇文章:http://msmvps.com/blogs/deborahk/archive/2010/06/30/solution-files-change-project-directory-location.aspx (4认同)

Gon*_*dez 6

对我有用的是:

  1. 从解决方案中删除项目。
  2. 使用文本编辑器编辑项目文件。
  3. 更新“包”的所有相对路径。就我而言,由于我将项目移至更深的文件夹,因此我必须更改..\packages为。..\..\..\packages
  4. 将项目重新加载到解决方案中。


dth*_*hal 5

总结:在 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 status(说明“什么都不提交,工作树干净”)

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

d) git status 查看/验证更改

  1. 删除项目

VS | 解决方案资源管理器 | 选择项目 | 右击 | 删除(因为所有项目都已卸载,这将不会正确删除依赖项目中对其的引用)

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

一)VS | 解决方案资源管理器 | 选择目标父文件夹 | 右击 | 添加 | 现有项目

  1. 重新加载所有项目

重要提示: 确认依赖项目的 *.csproj 文件已更新。

(VS | 团队资源管理器 | 更改 | 双击列出的任何依赖 csproj | 检查-验证 ProjectReference 路径更改)

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

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

这将更新...

a) GlobalAssmeblyInfo.cs 参考

b) 包的路径

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

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

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

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

  1. 证实

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

i) 应该看到显示移动的文件的分阶段更改 ii) 应该看到很好地更新的依赖项目 (*.csproj) 查看 csproj 差异并注意路径已经很好地更新了!!(这是避免使用文本编辑器费力地手动更新 csproj 文件的神奇之处)

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

c) 清理解决方案、重建解决方案、运行单元测试、在 sln 中启动应用程序。

  1. 犯罪!!