我有 3 个解决方案,解决方案 A 需要解决方案 B 和 C 中的 dll 的构建版本才能进行编译。不可能将其合并到一个解决方案中......

到目前为止,Visual Studio 似乎不支持解决方案引用,而 msbuild 足够聪明,知道您正在从另一个解决方案构建一个解决方案,如果我尝试这样做的话。总体目标是尝试使多个解决方案看起来几乎只有一个——只有解决方案 A。

我相信这是一个常见问题,但如何很好地将其联系起来呢?

有帮助吗?

解决方案

这个问题出现在 不同的, , 但 有关的, , 形式。实际上有一个 涵盖此内容的 MSDN 页面.

您正在寻找的是一种类似于 适用于大型系统的分区单一解决方案模型. 。拥有一个“一切”解决方案来构建一切并维护组件间的依赖关系。这就是当您需要构建解决方案 A 时所构建的内容。然后,您就有了仅包含组件 B 或 C 的单独解决方案。本质上,您仍然拥有 3 个解决方案,但您需要将解决方案 B 和 C 中的项目添加到解决方案 A 中。

其他提示

我最近发现,在Visual Studio 2008中您可以在多个解决方案现有项目。唯一的缺点到目前为止似乎是,如果你做出改变,以一个共享的项目,并有多个解决方案,打开使用的是共享的项目,你会被要求“重新加载”其他的解决方案。

所以,只要“添加现有项目”到需要的项目中的所有解决方案。我对我目前的网站使用TFS而且似乎是与源代码控制醚没有问题。

这应该是项目的水平,你在看,我相信。构建含有溶液B和C内的项目,然后在溶液A中添加的引用到的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溶液(〜总共150个项目)。问题是,如果我们试图向他们合并成一个,以重构/灭掉从公共库冗余代码。 1.合并15个解决方案涉及到大量的点击和VS等待 2.得到的溶液是从来没有的最新 - 没有人困扰更新它,因为它的尺寸

您可以尝试添加命令行打造为DLL(溶液B和C)命令,你在你的项目的预生成事件取决于(溶液A)

如果你不能把项目B和C到同一个解决方案项目A,那么有没有办法,以确保你有B和C包含最新的源代码,当你建立一个项目二进制文件。

我见过的最简单的解决方案是在源代码库,每一个项目会将它的二进制文件,如果他们需要共享一个共同的文件夹。然后,所有其他项目可以在文件夹中引用的二进制文件,只要你的本地文件夹看上去一样的资源库。

不是一个完美的解决方案,但它是很容易的工作。

您可以在Makefile项目添加到溶液A这将(例如使用的MSBuild)建立自己的解决方案,B和C,并在一个依赖于Makefile的项目中的所有项目。你不会是这个样子能项目引用添加到B和C的项目,但你可以使用DLL引用,他们将始终从最新的源代码构建的。

根据 这个答案, ,我会推荐你 创建您自己的批处理文件 这将为您构建相关的解决方案。

这使用起来非常方便,因为构建过程会将构建进度(类似于 Visual Studio 中的输出窗口)输出到每个构建执行的命令 Promotion 中。

此外,如果您需要在另一个解决方案之前构建一个解决方案,您可以编写自己的构建顺序,例如:

  1. 构建解决方案B
  2. 构建解决方案C
  3. 构建解决方案 A(内部使用“解决方案 B”和“解决方案 C”构建文件)

我很快就写了 澄清上述构建顺序的脚本 并支持大多数现代 Visual Studio 版本。

问候。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top