生成具有依赖关系的解决方案,用于构建具有数百个项目的VS 2010

时间:2011-05-11 14:53:03

标签: windows visual-studio-2010 build dependencies

我们需要将几百个visual studio项目文件组装成一个构建解决方案。我们目前有一个使用rake的自定义ruby脚本来执行此操作。但是很脆弱,只允许一些可视化工作室宏($(TargetDir),$(TargetName)等等)通过,而其余部分则失败。再加上Ruby的语法就像Perl一样:我错了。

所以我的问题是,给定一个目录是否有一个工具可以递归地找到所有.vcxproj和.csproj文件,并生成一个带有依赖项的解决方案文件?当我说'with dependencies'时,这意味着某些项目需要在其他项目之前构建。我在堆栈溢出处发现了一些其他帖子,指向生成解决方案文件的工具:但它不会生成依赖项。因此,没有依赖性任何解决方案创建工具都是完全无用的。有谁知道会做到这一点?

如果不是解决方案文件,是否有人知道只会发出依赖列表的内容?

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

2 个答案:

答案 0 :(得分:3)

  

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

没有

你所要求的是非常合理的;你对这个问题的处理方法非常合理。不幸的是,这些工具跟不上你。 (我们遇到了同样的问题。)

您将不得不自己编写脚本,或以其他方式自定义工具。这就是我们所做的。我见过的成功方法包括:

  1. 从中生成*.vcproj/*.sln “参考项目定义”, 使用CMakeQMakeScons等工具 Gyp。我们的主要系统目前正在 在Scons上,使用我们的自定义Python 用于导航这些依赖项的代码, 根据项目生成解决方案 (蜘蛛依赖)。通过 默认情况下,我们生成“完整” 每个项目的解决方案(包括 所有必需的支持项目), 加上“掌握所有项目” 解。它工作得很好。但, 这是定制工作,努力,     我们稍微扩展了Scons     描述我们的项目(但我们只是     依赖于Scons代     *.sln*.vcproj)。

  2. 编写自定义工具以“查找”这些依赖项 解析所有*.vcproj个文件 你的工作区。这是工作,但可以做到。这些文件可能“难以”导航,但您可能会使用“足够好”的解决方案,使用GUID作为哈希键来生成这些依赖项。

  3. 我完全同意你的观点:当你超越“简单”时,这种类型的东西(项目依赖性)非常难以手动维护(例如,许多项目,是的,我们也有数百个)。

    对不起。 MSVS是一个非常好的IDE(用于迭代开发),是一个糟糕的构建配置管理系统,并不是为了做我们所说的。

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

答案 1 :(得分:0)

另一方面,拥有数百个VS项目是一个坏主意,它会杀死VS的表现,请参阅two white-books