我们有几百个 visual studio 项目文件,我需要将它们组合成一个构建解决方案。我们目前有一个使用 rake 的自定义 ruby 脚本来执行此操作。但是很脆弱,只允许一些 visual studio 宏($(TargetDir)、$(TargetName) 等...)通过,其余的则失败。再加上 Ruby 的语法像 Perl 一样让我不快:方法不对。
所以我的问题是,给定一个目录,是否有一个工具可以递归地查找所有 .vcxproj 和 .csproj 文件并生成具有依赖项的解决方案文件?当我说“具有依赖性”时,它意味着某些项目需要先于其他项目构建。我在这里找到了一些关于堆栈溢出的其他帖子,这些帖子指向一个生成解决方案文件的工具:但它不会生成依赖项。因此,如果没有依赖关系,任何解决方案创建工具都是完全无用的。有谁知道可以做到这一点的东西吗?
如果不是解决方案文件,有谁知道会发出依赖列表的东西吗?
附言 在任何人问之前:手动创建解决方案文件是完全不可能的。我们的项目文件太多了。
最佳答案
So my question is, given a directory is there a tool that will recursively find all all the .vcxproj and .csproj files and generate a solution file with dependencies?
没有。
你的要求很合理;您解决问题的方法非常合理。不幸的是,这些工具并没有跟上您的步伐。 (我们遇到了同样的问题。)
您将不得不自己编写脚本,或者以其他方式自定义工具。我们就是这么做的。我见过的成功方法包括:
生成
*.vcproj/*.sln
从 “引用项目定义”, 使用CMake
、QMake
、Scons
等工具,或吉卜赛
。我们的主要系统目前位于 在Scons
上,使用我们自定义的 Python 导航这些依赖项的代码, 根据项目生成解决方案 (蜘蛛依赖)。经过 默认情况下,我们生成一个“完整” 每个项目的解决方案(包括 所有必需的配套项目), 加上“掌握所有项目” 解决方案。它工作得很好。但, 这是需要努力的定制工作, 我们将Scons
扩展到 描述我们的项目(但我们只是 依赖于Scons
的生成*.sln
和*.vcproj
).编写自定义工具来“查找”这些依赖项 解析所有
*.vcproj
文件 你的工作区。这是工作,但可以完成。导航这些文件可能会“棘手”,但使用 GUID 作为散列键来生成这些依赖项的“足够好”的解决方案可能没问题。
我完全同意你的看法:当你超越“简单”(例如,许多项目,是的,我们也有数百个)时,手动维护这种类型的东西(项目依赖项)非常困难。
对不起。 MSVS 是一个相当不错的 IDE(用于迭代开发),也是一个糟糕的构建配置管理系统,并不是为了完成我们正在谈论的事情而设计的。
因为我关心您的理智和您永恒的灵魂,请不要尝试在 MSBuild 中编写您的自定义解决方案。
关于windows - 生成具有数百个项目的 VS 2010 依赖项的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966283/