如何将多个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顺序,例如:
- build立解决schemeB
- 构build解决schemeC
- 构build解决schemeA(内部使用“解决schemeB”和“解决schemeC”构build文件)
我很快写了脚本来阐明上面提到的构build顺序,并支持大多数现代Visual Studio版本。
问候。
- clr.dll的版本与mscordacwks.dll的版本不匹配
- 整个解决scheme范围的预生成事件?
- Visual Studio断点在哪里保存?
- 如何在Visual Studio中添加高优先级的TODO注释?
- Visual Studio中的“编辑”和“debugging”的单一布局
- RunAs在Visual Studio中debugging时的另一个用户
- Visual Studio:如何从现有的GitHub仓库创build项目?
- Visual Studio Solutions / Multiple project:如何在多个C ++项目中有效地传播项目属性
- Visual Studio的边缘颜色是什么意思?