2011-05-11 64 views
3

我们有几百个visual studio项目文件,我需要将它们组合到一个构建解决方案中。我们目前有一个使用rake的自定义ruby脚本来执行此操作。但是很脆弱,只允许一些视觉工作室宏($(TargetDir),$(TargetName)等)通过,而其余的失败。再加上Ruby的语法像Perl一样揉搓我:错误的方式。生成具有依赖关系的解决方案,用于构建包含数百个项目的VS 2010

所以我的问题是,鉴于目录是否有一个工具,将递归地找到所有的.vcxproj和.csproj文件,并生成一个解决方案文件与依赖关系?当我说'与依赖关系'时,这意味着有些项目需要在其他项目之前建立。我在堆栈溢出中发现了一些其他帖子,它指出了一个生成解决方案文件的工具:但它不会生成依赖关系。因此,如果没有依赖项,任何解决方案创建工具都是无用的有没有人知道会做到这一点的东西?

如果不是解决方案文件,有谁知道会发出依赖列表的东西吗?

P.S. 之前有人问:手动创建解决方案文件是完全不可能的。我们只是有太多的项目文件。

+0

我可以碰到这个吗? – 2011-05-11 16:20:37

回答

3

所以我的问题是,给定一个目录 是有一个工具,将递归 找到所有所有的.vcxproj和的.csproj 文件,并生成相关性的解决方案文件 ?

你问什么是非常合理的;你对这个问题的态度是相当理性的。不幸的是,这些工具并没有跟上你的步伐。 (我们遇到同样的问题。)

您将不得不自己编写脚本,或者自定义工具。这就是我们所做的。我已经看到了成功的方法包括:

  1. 生成*.vcproj/*.sln从 “参照项目定义”, 使用工具,如CMakeQMakeScons,或 Gyp。我们的主系统目前位于Scons上 ,使用我们自定义的Python 代码来导航这些依赖关系, 基于项目 (spidering dependencies)生成解决方案。通过 默认,我们为每个项目(包括 所有需要的配套项目)生成一个“完整” 解决方案, 加上“Master All Projects” 解决方案。它工作得很好。但是, 它是花了力气, 定制工作和我们扩展Scons多少有点 形容我们的项目(但我们只是 依靠Scons*.sln*.vcproj)。

  2. 编写自定义工具“中找到”这些依赖性通过 解析在 工作区所有*.vcproj文件。这是工作,但可以完成。这些文件可能是“棘手”的导航,但你可能会用一个“足够好”的解决方案,使用GUID作为散列键来生成这些依赖关系。

我完全同意你的看法:这种类型的东西(项目依赖)是比登天还难,当你超越手动维护“简单”(例如,许多几十个项目,是的,我们也有数百个)。

对不起。 MSVS是一个相当不错的IDE(专门用于迭代开发),以及一个可怕的构建配置管理系统,而不是设计用来完成我们正在讨论的内容。

因为我关心你的理智和你永恒的灵魂,请请不要尝试在MSBuild中编写你的自定义解决方案。

+0

#1你列出的字母汤是相当的列表。他们是什么? – 2011-05-11 21:05:25

+1

抱歉,我们使用的是scons(http://www.scons.org/)和qmake(http://en.wikipedia.org/wiki/Qmake),但如果您想学习CMake,它非常强大它(http://www.cmake.org/)。但是,Google的gyp(http://code.google.com/p/gyp/wiki/GypUserDocumentation)显示了很多有趣的承诺(尚未使用)。 Scons是一个构建系统,但提供了本地* .sln和* .vcproj的“导出”。其他(cmake,qmake,gyp)是“项目生成器”,它们从它们自己的“项目定义文件”生成本地* .vcproj/*。sln文件。 – charley 2011-05-11 21:14:52

+0

这些都是做什么工具?生成充足的输入依赖关系? (编辑)看起来你在我打字的时候回答了我的问题...... – 2011-05-11 21:18:30

0

在一个侧面说明,有数百VS项目是一个坏主意,它会杀死VS演出,看到two white-books

+1

其实我们从来没有在Visual Studio中加载解决方案。它仅用于构建(最终调用msbuild)。当我们编辑东西时,我们只加载一两个项目。 – 2011-05-12 16:42:51

+0

另外,我们的代码库大约95%是原生的。 – 2011-05-12 16:44:54

+0

原始问题的实际答案如何?你有什么信息吗? – 2011-05-12 16:48:17

相关问题