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
Visual studio VisualStudio:如何使一个解决方案依赖于另一个?_Visual Studio_Visual Studio 2008_Dependencies_Projects And Solutions - Fatal编程技术网

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

Visual studio VisualStudio:如何使一个解决方案依赖于另一个?,visual-studio,visual-studio-2008,dependencies,projects-and-solutions,Visual Studio,Visual Studio 2008,Dependencies,Projects And Solutions,是否有可能使VS中的解决方案依赖于(即包括)整个其他解决方案?我看过一些关于“解决方案文件夹”的东西,但这些似乎不是同一回事。。。。?谢谢(顺便说一句,我用的是VS2008)不太好。您必须执行以下操作之一: 制作一个构建脚本,以正确的顺序构建解决方案 预构建解决方案A,并且仅在解决方案B中引用其构建的二进制输出 制作第三个解决方案,包含两个解决方案中的所有项目 前两项是最常见的,我个人更喜欢第二项。解决方案是为创建某种可执行文件或dll而构建的程序集的集合。让一种解决方案依赖于另一种解决方案

是否有可能使VS中的解决方案依赖于(即包括)整个其他解决方案?我看过一些关于“解决方案文件夹”的东西,但这些似乎不是同一回事。。。。?谢谢(顺便说一句,我用的是VS2008)

不太好。您必须执行以下操作之一:

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

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

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

您不能这样做。你为什么要这么做

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

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

请看这里:


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

这篇文章很旧,但现在,通过为所有项目构建nuget包,您可以轻松地重用其他解决方案中的依赖项。VS2015内置了nuget软件包构建,但目前是一个候选版本。在VisualStudio2013中,您可以使用Nuget.package Nuget包来允许您的项目作为Nuget包进行构建

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

然后,您的其他解决方案的项目可以依赖于该包

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

在CoreFramework解决方案中,您将为实用程序项目构建一个nuget包,该包将编译为实用程序dll,并在包中包含dll及其pdb文件

然后将其发布到网络共享中

假设您的包的ID类似于“XYZ.Core.Utilities”,版本为1.0.0.0

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


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

我想依赖另一个我无法控制的解决方案。如果该解决方案更新为包含另一个项目,我希望自动将其考虑在内。或者手动将项目添加到解决方案中,并创建一个脚本来验证所有项目是否都在解决方案中。解决方案文件是结构相当简单的简单文本文件。如果依赖关系树很深很复杂,人们可能会想,虽然VS之外的一种机制可以确保依赖DLL是最新的,并且位于正确的位置,但如果这些DLL在中央控制的存储库中可用,则可以节省大量的编译时间。但是,请参见net_progIt的答案,2009年的情况是这样的。无论如何,我希望它在2015年变得更好。我检查过了,这仍然适用于VS2019,但是添加的
*.sln
文件没有被上级
*.sln
文件引用。因此,对添加的
*.sln
文件所做的任何更改都不会反映在上级
*.sln
文件中。如果
*.sln
文件能够保持层次关系,那就更好了。