如何将多个Visual Studio解决scheme连接在一起?

我有3个解决scheme,解决schemeA需要从解决schemeB和C的内置版本的DLL来编译。 它不可能合并到一个解决scheme…

到目前为止,似乎Visual Studio不支持解决scheme引用,并且msbuild足够聪明,知道您正在从另一个等构build一个解决scheme,如果我尝试这种方式。 总体目标是试图让多种解决scheme看起来几乎像只有一个 – 只是解决schemeA.

我相信这是一个普遍的问题,但是你怎么把它连接好呢?

这个问题已经以不同但相关的forms出现了。 实际上有一个MSDN页面涵盖了这一点 。

您正在寻找的是类似于大型系统分区单一解决scheme模型的多解决scheme 。 有一个“一切”的解决scheme,build立一切,并维护您的组件间的依赖关系。 这就是当您需要构build解决schemeA时构build的内容。然后,您将拥有单独的解决scheme,其中只包含组件B或C。基本上,您仍然有3个解决scheme,但是将解决schemeB和C中的项目添加到解决scheme一个。

我最近发现,在Visual Studio 2008中,您可以在多个解决scheme中包含现有的项目。 到目前为止唯一的缺点似乎是,如果您对共享项目进行更改,并打开多个使用该共享项目的解决scheme,则会被要求“重新加载”其他解决scheme。

因此,只需将“添加现有项目”添加到需要项目的所有解决scheme中即可。 我在当前网站上使用TFS,似乎没有源代码pipe理以太网的问题。

这应该是你相信的项目级别。 构build解决schemeB和C中包含的项目,然后在解决schemeA中的相关项目中添加对DLL的引用。

在Msbuild中,如果你有一个属性组

<PropertyGroup> <SolutionsToBuild>SolutionB</SolutionsToBuild> <SolutionsToBuild>SolutionC</SolutionsToBuild> <SolutionsToBuild>SolutionA</SolutionsToBuild> </PropertyGroup> 

然后执行MSBuild任务

 <MSBuild Projects="@(SolutionsToBuild)"/> 

希望这可以帮助

您可以尝试自动化合并过程以节省一些时间: http : //code.google.com/p/merge-solutions/

虽然我们有一个稍微不同的问题:大约有15个解决scheme(总计约150个项目)使用一个共同的图书馆。 问题是,如果我们试图将它们全部合并成一个,以便重构/消除来自公共库的冗余代码。 1.合并15个解决scheme需要在VS 2中进行大量的点击和等待。结果解决scheme从未更新 – 没有人因为它的大小而更新它

你可以尝试添加命令行编译命令(在解决schemeB和C),你依赖于你的项目的prebuild事件(在解决schemeA)

如果您不能将项目B和C与项目A放在同一个解决scheme中,那么当您构build项目A时,将无法确保您拥有包含最新源代码的B和C的二进制文件。

我见过的最简单的解决scheme是在源代码库中有一个公用文件夹,每个项目都需要共享它们的二进制文件。 然后,只要您的本地文件夹与存储库相同,所有其他项目都可以在该文件夹中引用二进制文件。

不是一个完美的解决scheme,但是使用起来相当容易。

您可以将一个Makefile项目添加到解决schemeA中,该解决scheme将构build解决schemeB和C(例如,使用msbuild),并使A中的所有项目都依赖于该Makefile项目。 这样你就不能将项目引用添加到B和C中的项目中,但是你可以使用dll引用,并且它们将始终由最新的源代码构build。

根据这个答案 ,我会build议你创build自己的batch file ,这将为您build立相关的解决scheme。

这是非常方便的使用,因为构build过程将输出生成进展(类似于Visual Studio中的输出窗口)到每个构build执行的命令提升。

而且,如果您需要先构build一个解决scheme,则可以编写自己的构build顺序,例如:

  1. build立解决schemeB
  2. 构build解决schemeC
  3. 构build解决schemeA(内部使用“解决schemeB”和“解决schemeC”构build文件)

我很快写了脚本来阐明上面提到的构build顺序,并支持大多数现代Visual Studio版本。

问候。