代码之家  ›  专栏  ›  技术社区  ›  Wim ten Brink

移动.NET项目中的项目文件

  •  8
  • Wim ten Brink  · 技术社区  · 14 年前

    它与代码无关,但与IDE有关。我正在研究一个有35个不同项目的.NET解决方案。这些项目需要重新组织到一个新的文件夹结构中。为什么?因为其中大约10个将被删除,其余的将被划分成更多的逻辑单元。 一种方法是创建一个新的解决方案Drag&将项目放到Windows资源管理器中的新文件夹树中,然后将它们添加到新的解决方案中。 老实说,这听起来很蠢!


    问题是不是所有的项目现在都遵循这个命名约定,我认为它已经过时了。 像Company.Business.Customers这样的项目应该位于项目根目录中名为Company.Business.Customers的文件夹中,这样更容易识别。这个名字已经清楚地表明它是这个项目的一个业务类。在客户机类、业务类和其他类中的明确划分只需要在解决方案中进行安排,但我想将文件结构扁平化(基本上,我不是在重构,我只是在清理。 不过,VS2008似乎没有这样的选择。。。
    5 回复  |  直到 14 年前
        1
  •  6
  •   Hans Passant    14 年前

    启动notepad.exe并打开.sln文件。并启动Windows资源管理器,导航到解决方案目录。观察.sln文件内容如何与解决方案结构匹配。编辑条目,使用资源管理器进行相应的更改。先备份。

        2
  •  1
  •   Jaco Pretorius    14 年前

    我不认为这里有一个简单的答案。您的主要问题是visualstudio(或.NET)不关心项目中是否有属于不同根命名空间的类。

    我不知道有什么方法可以不需要大量的手工工作就完成所有这些。如果您使用“namespace rename”特性,Resharper会有很大帮助,但最终还是会有很多繁重的工作。

        3
  •  1
  •   ChrisF PerfectlyRock    14 年前

    另外,在与版本控制系统结合使用时要非常小心。你必须非常了解你的版本控制系统,才能知道它将如何应对如此重大的重构。

    除此之外,你所描述的并不是那么困难。您必须手动编辑解决方案文件和项目文件,并且可能需要从解决方案中删除项目,然后在项目位于正确的目录下时再次添加。

    我会做一个备份,然后重构。不过,我认为认为您可以从IDE中完成所需的一切是错误的。如果您在使用旧的visualsourcesafeapi的源代码管理系统中执行IDE中所描述的操作,那么肯定会(保证)弄乱绑定,该API只是不适合按照您所描述的方式移动(或重命名)文件。在这种情况下,最好的方法是删除所有源代码管理绑定,然后重新添加重新组织的解决方案。

    这并不难,你只需要准备(做备份)和实验,直到你做对为止。

        4
  •  1
  •   chris    14 年前

    我认为在visualstudio中没有任何方法可以做到这一点,正如@gmagana指出的,如果文件处于版本控制之下,那么要做到这一点将非常困难。

    从创建所需的新文件夹结构开始—暂时忽略.csproj文件和解决方案文件,然后将更多感兴趣的.cs文件放入新结构中。

    将空项目文件复制到需要它们的位置,并根据需要重命名它们。如果需要,可以编辑它们并更改程序集名称和默认命名空间,或者等到完成后再使用VisualStudio更改设置。

    在每个项目中,单击“ShowAll”按钮,并开始包含已复制到项目结构中的所有文件。解决缺少的依赖项,更改项目的命名空间和程序集名称,并确保代码文件没有指定不需要的命名空间。重复直到完成。

    祝你好运。

        5
  •  0
  •   Wim ten Brink    14 年前

    我已使用以下解决方案来解决我的问题:

    1. 我从一个新文件夹中的一个新的、空的解决方案开始。
    2. 对于每个需要移动的项目,我使用Windows资源管理器在解决方案文件夹中创建一个子文件夹,这次使用正确的名称。
    3. 我将项目从原始位置复制到新文件夹中。
    4. 我从新位置添加了所有(移动的)现有项目。
    5. 在SolutionManager中,我将项目重命名为更好的名称。
    6. 我修复了所有项目的项目属性和其他设置。

    这确实很好地清理了整个项目。然后,我将整个项目添加到Vault(版本控制系统)中,一旦它在VSS中,我就再次删除了该文件夹(实际上,只是先将其重命名),然后从VSS系统中检索回来,这样所有过时的二进制文件和其他垃圾也就不见了。 这是一个很大的工作,但结果恰恰是它所需要的。