Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 如何拆分Visual Studio解决方案?_Visual Studio_Visual Studio 2008 - Fatal编程技术网

Visual studio 如何拆分Visual Studio解决方案?

Visual studio 如何拆分Visual Studio解决方案?,visual-studio,visual-studio-2008,Visual Studio,Visual Studio 2008,我有一个VisualStudio2008解决方案,其中包含40多个相互依赖的C#和C++/CLI项目。使用这个解决方案相当慢,通常我一次只需要几个项目。因此,我决定将解决方案拆分为包含3-5个项目的多个解决方案我还希望将“完整”解决方案保留在所有项目中(这对于自动构建或影响所有项目的大型重构操作非常方便)。(这是这里的主要条件。否则,将项目拆分为解决方案当然是微不足道的。) 有办法吗 我的第一个想法是创建新的空解决方案,并将一些现有的项目文件添加到每个解决方案中。但是如果我这样做了,VS就再也找

我有一个VisualStudio2008解决方案,其中包含40多个相互依赖的C#和C++/CLI项目。使用这个解决方案相当慢,通常我一次只需要几个项目。因此,我决定将解决方案拆分为包含3-5个项目的多个解决方案我还希望将“完整”解决方案保留在所有项目中(这对于自动构建或影响所有项目的大型重构操作非常方便)。(这是这里的主要条件。否则,将项目拆分为解决方案当然是微不足道的。)

有办法吗

我的第一个想法是创建新的空解决方案,并将一些现有的项目文件添加到每个解决方案中。但是如果我这样做了,VS就再也找不到项目引用了(因为它们不在同一个解决方案中)。我可以将引用添加为“普通”文件引用。但是如果我这样做,我的“完整”解决方案就不再有效了,因为依赖项丢失了

编辑:

谢谢大家的回答。我想澄清一下我的问题:我的解决方案包含44个项目,不包括测试。所以把它分成两部分并不是我真正想要的,我更多的是考虑5-8部分。这就是为什么我想保留“完整”解决方案,让VS能够为完整构建找出正确的构建顺序。手工维护8个独立解决方案的构建顺序(例如在批处理文件中)对我来说似乎很容易出错

此外,我还希望“逻辑地”对项目进行分组(即,我希望将通常在一个解决方案中一起修改的项目)。但该分组并不总是与依赖项匹配。例如,假设我有依赖链

A is referenced by B is referenced by C is referenced by D
假设A和D经常一起修改,但B和C很少改变。(显然,B使用的A的接口必须保持不变。)然后我希望A和D在一种溶液中,B和C在另一种溶液中。但如果我想从头开始构建所有项目,那么只有当我有一个完整的包含A、B、C和D的“完整”解决方案时,这才有效。一旦构建完成,我就可以打开A/D解决方案,只编辑/构建这两个项目


但我担心我的问题没有优雅的解决方案。(PUN不打算)

你可能想考虑的另一种方法是卸载你不使用的项目,只需右键单击并卸载那些你不工作的项目……这将导致一个更抢眼的VisualStudio。它使很多东西无法存储

您还可以编辑构建定义并删除任何未修改的项目(取决于链接的方式…您知道需要/更新/不需要什么)

解决方案->右键单击->配置管理器->取消选中任何项目上的构建,这些项目不会更改,也不会因为其他原因需要每次构建。通过使用这些项目的上一次构建的输出,无论它们将二进制文件转储到何处,都可以加快构建速度

注意:您仍然可以右键单击项目和生成以更新其输出,然后重新生成解决方案以获取最新版本…您可以这样做,而不是来回更改生成配置以包含它

更新
本着执行性能路线的精神(例如等到VS 2010真的),您是否采取了其他堆栈溢出问题中列出的措施:以及?这些可以带来很大的不同,并且可以在我们工作时将性能提高到可接受的水平。
还有几点可以对性能产生良好影响:

  • 我不知道这是不是一种选择。它们的成本很高,但绝对值得,解决方案中的文件越多,它们的回报就越高。当我们在工作中订购新机器时,整个开发团队都使用SSD,差异是惊人的。当您处理大型解决方案时,它会旋转驱动器,将物理头切换到数千个位置,以便读取其中的文件……这就是SSD获胜的地方,搜索时间实际上是0毫秒
  • 同样,一个免费的解决方案是一个很好的碎片整理程序(只有当你在物理上,不要对SSD进行碎片整理时,),如果你使用的是让VisualStudio牢记在心的东西,它会产生很大的不同。我推荐(免费软件),因为它是用于碎片整理的本机算法,所以它会记住目录结构,所以至少一个物理驱动器不会花费太多时间来切换解决方案中所需的文件,因为它们都在磁盘上
  • 根据上面的SSD建议,请记住,便宜的硬盘和快速的硬盘在SSD性能上存在巨大差异,请在此进行一些研究。不用担心你的系统,有了一个免费的实用程序,你可以很容易地移动整个操作系统驱动器,而你的旧驱动器仍然是一个备份…只要SSD可以容纳C上的数据,你就可以了

您可以制作多个解决方案,并将任何项目添加到您喜欢的每个解决方案中

您希望生成的项目可能依赖于其他项目。在这种情况下,您需要从使用“项目”引用(whch引用解决方案中的任何其他项目)更改为使用文件引用(在其中引用项目已创建的assembly.dll)

因此,让我们把它们看作“库”(编译一次,然后大量使用)和“核心”项目(您正在进行大量更改)。制作包含“库”项目的解决方案,并(最好)添加一个生成后步骤,将生成的调试/发布DLL复制到共享库文件夹中。将核心项目添加到新的解决方案中。更改所有核心解决方案引用,以通过共享文件夹中的预构建二进制dll引用库(请参阅版本构建dll,以便最终版本正常工作)

如果更改库,则需要构建库