Visual Studio:如何使一个解决方案依赖于另一个?

时间:2009-07-20 09:55:35

标签: visual-studio visual-studio-2008 dependencies projects-and-solutions

是否有可能在VS中制定解决方案取决于(即包括)整个其他解决方案?我见过一些关于“解决方案文件夹”的内容,但这些似乎并不是一回事......?谢谢! (顺便说一句,我正在使用VS 2008)

5 个答案:

答案 0 :(得分:19)

不是真的。您必须执行以下操作之一:

  • 制作构建脚本,以正确的顺序构建解决方案。
  • 预构建解决方案A,仅在解决方案B中引用其构建的二进制输出。
  • 制作第三个解决方案,其中包含两个解决方案中的所有项目。

前两项是最常见的,我个人更喜欢第二项。

答案 1 :(得分:12)

这篇文章很老,但是现在你可以通过为所有这些文件构建nuget包,轻松地在其他解决方案中重用依赖项。 VS 2015内置了nuget包,但目前是候选版本。在Visual Studio 2013中,您可以使用Nuget.Packaging nuget包来允许您的项目构建为Nuget包。

然后,您可以将新版本的软件包发布到本地网络共享,并将其配置为Visual Studio中的存储库。

然后你的其他解决方案的项目可能依赖于那个包。

例如,假设您在称为“核心框架”的解决方案中有可重用的实用程序DLL,并且您希望在正在使用名为“XYZEcosystem”的解决方案构建的WebSite中使用实用程序。

在CoreFramework解决方案中,您将为Utility Project构建一个nuget包,该包编译为实用程序dll,并在包中包含dll和它的pdb文件。

然后将其发布到您的网络共享。

因此,假设您的软件包具有类似“XYZ.Core.Utilities”的ID,版本为1.0.0.0。

现在在XYZEcosystem中,您将使用包管理器控制台,将存储库下拉列表设置为存储库并键入“Install-Package XYZ.Core.Utilities”,它将安装最新版本的XYZ.Core.Utilities。

如果您对XYZ.Core.Utilities进行了更改,您可以在XYZEcosystem上运行Update-Package XYZ.Core.Utilities,它将获取新版本。

答案 2 :(得分:5)

看看这里:http://blogs.msdn.com/b/habibh/archive/2009/06/24/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution.aspx

实际上,所描述的方法将来自另一个解决方案的所有项目添加到当前解决方案中,而不是我们想要的,但至少可以节省手动逐个手动添加所有项目的时间。

答案 3 :(得分:1)

你做不到。你为什么要这样做?

只需将您所依赖的所有项目(“其他”解决方案中的项目)添加到解决方案中。

然后在项目之间使用项目引用(而不是文件引用)。

答案 4 :(得分:0)

解决方案是一组程序集,用于构建某种可执行文件或dll。让一个解决方案依赖于另一个解决方案没有意义。输出程序集(executable / dll)取决于它引用的程序集。如果您的解决方案依赖于其他程序集,请参考它们。您可以向解决方案添加项目(文件>添加>现有项目),然后您可以从输出项目添加这些项目的补充。