如何在c#项目中最好地更改目录结构(sln和项目)

时间:2010-06-28 05:33:41

标签: c# visual-studio tfs projects-and-solutions

我正在开发一个c#项目,最近我们决定重构源代码的目录结构。 我正在进行重组,并想问你一些关于进行变革的最佳方法的问题。 重组基本上是将所有项目的当前目录更改为更结构化和逻辑顺序。

目前的结构是(这是一个方案):

  • 主要目录:

    • 项目
    • 项目
    • 风向
      • 项目
      • 项目
      • 项目
    • 风向
      • 项目
      • 项目
      • 项目
    • 项目目录+解决方案文件
    • 项目目录+解决方案文件
    • 风向
      • 解决方案文件。
      • 项目
      • 项目
    • Project Dir 等。

目标计划是: TFS项目:     主要       - 资源           - 迪尔              - 解决方案文件。            - 项目            - 项目            - 项目            - 项目

     - Dir
        - Dir
            - Project
            - Project
            - Project
        - Dir
            - Solution file.
      - Dir

        - Project
        - Project

项目之间的相对位置以及解决方案中的相对位置也会发生变化。

问题是如何以最佳方式进行变革: - 如何修复每个项目的所有参考? - 如何解决所有解决方案? - 有没有可用的工具?

2 个答案:

答案 0 :(得分:3)

  

如果使用选项2:

     

将非csproj / sln文件移动到目标位置,确保您了解路径中的相对更改。

一些补充:

  1. 我也让脚本执行所需的文件操作。当然,请务必先备份原始解决方案。
  2. .sln文件不是 XML。但它们是具有非常简单的语法的文本文件。因此,要么您必须编写自己的解析器,要么考虑使用Visual Studio的DTE自动化对象来操作解决方案文件的内容,如以下线程所示:Easy way to add multiple existing .csproj to a Visual Studio Solution?。该示例使用PowerShell编写,但方法与VBScript中的方法相同。

答案 1 :(得分:1)

我不知道有任何工具可以自动执行此操作,但我知道您有两个选项,选项1是使用VS来执行重构(更长)或选项2是使用像PowerShell这样的东西(或您最喜欢的脚本语言)来更新sln和csproj引用。

如果您使用选项1:

  1. 使用VS创建新目录,并手动将文件移入其中
  2. 手动移动SLN文件(文件内的引用都是相对的)子文件夹引用将保持不变。
  3. 如果使用选项2:

    1. 将非csproj / sln文件移至目标位置,确保您了解路径中的相对变化。
    2. 创建一个可以处理XML文件的脚本(对于proj文件,您需要对SLN文件进行常规文本解析),然后打开文件。将每个“item”节点重新定位到其中的路径(将是.. \ ,,或file.etx)到重新计算的目标位置。
    3. 不幸的是,这将非常手动,并且非常容易出错。我推荐选项#1,并且刚刚完成了一个包含100多个csproj和30个sln文件的项目。大约有4000个源文件,我手动移动然后在vs studio中使用find replace(项目已卸载)进行更新。

      祝你好运。