Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何将大型VS解决方案分解为小型解决方案_Visual Studio 2010_Visual Studio_Projects And Solutions - Fatal编程技术网

Visual studio 2010 如何将大型VS解决方案分解为小型解决方案

Visual studio 2010 如何将大型VS解决方案分解为小型解决方案,visual-studio-2010,visual-studio,projects-and-solutions,Visual Studio 2010,Visual Studio,Projects And Solutions,我们有一个VS2008解决方案文件,其中包含大约80个项目(是的,我知道它很糟糕) 这些项目被安排在不同的文件夹中,有些项目可能依赖于顶级“Libs”文件夹中的其他第三方DLL 我们希望将其重构为几个较小的.sln文件,每个文件包含合理数量的项目 问题是,在移动项目文件时,存储在其中的相对路径将中断,因此我们必须进行大量手动“修补”来修复该问题 是否有任何工具或任何经验证的技术可以执行类似操作?我们做了类似的事情,为了修复引用,我们编写了一个快速实用程序,可以解析.csproj或.vbproj文

我们有一个VS2008解决方案文件,其中包含大约80个项目(是的,我知道它很糟糕)

这些项目被安排在不同的文件夹中,有些项目可能依赖于顶级“Libs”文件夹中的其他第三方DLL

我们希望将其重构为几个较小的.sln文件,每个文件包含合理数量的项目

问题是,在移动项目文件时,存储在其中的相对路径将中断,因此我们必须进行大量手动“修补”来修复该问题


是否有任何工具或任何经验证的技术可以执行类似操作?

我们做了类似的事情,为了修复引用,我们编写了一个快速实用程序,可以解析.csproj或.vbproj文件(基本上是xml文件),并根据重构后.proj文件本身所在的位置修复受影响的路径。这比手动更改项目xml或添加删除引用以避免人为错误要好

一旦知道项目文件的位置以及公共文件(或其他文件)的位置,就可以使用相对路径修改项目文件中的参照节点。例如,您可能需要更改原始版本

<Reference Include="NHibernate">
      <HintPath>..\..\ServicesShared\Library\NHibernate.dll</HintPath>
</Reference> 

..\..\ServicesShared\Library\NHibernate.dll
在.proj文件中

<Reference Include="NHibernate">
      <HintPath>..\Common\ServicesShared\Library\NHibernate.dll</HintPath>
</Reference> 

..\Common\ServicesShared\Library\NHibernate.dll
如果那是NHibernate.dll现在所在的位置


希望这对你们有用。

谢谢。我也在考虑为它创建一个自定义实用程序。在您的示例中,您演示了一个稍有不同的问题,其中用于引用DLL的实际文件夹可能会完全更改(不是由于.csproj复制/移动操作的结果)。您在实用程序中也处理了这个问题吗?我们处理了库文件夹的更改,并没有移动所有的proj文件,但即使是这样,它不是库文件夹,而是实际的.csproj文件被相对移动了,我认为仍然可以应用类似的逻辑。对于一起移动到一个解决方案中的每一组项目文件,您将知道如何固定这些项目的相对路径。也许您可以为属于解决方案的一组项目文件的每个引用创建一个键值对(before,after),并相应地更新.proj文件。希望这是有意义的。