我们需要将几百个visual studio项目文件组装成一个构建解决方案。我们目前有一个使用rake的自定义ruby脚本来执行此操作。但是很脆弱,只允许一些可视化工作室宏($(TargetDir),$(TargetName)等等)通过,而其余部分则失败。再加上Ruby的语法就像Perl一样:我错了。
所以我的问题是,给定一个目录是否有一个工具可以递归地找到所有.vcxproj和.csproj文件,并生成一个带有依赖项的解决方案文件?当我说'with dependencies'时,这意味着某些项目需要在其他项目之前构建。我在堆栈溢出处发现了一些其他帖子,指向生成解决方案文件的工具:但它不会生成依赖项。因此,没有依赖性任何解决方案创建工具都是完全无用的。有谁知道会做到这一点?
如果不是解决方案文件,是否有人知道只会发出依赖列表的内容?
P.S。 在任何人提出要求之前:手动创建解决方案文件是完全不可能的。我们只是有太多的项目文件。
答案 0 :(得分:3)
所以我的问题是,给定一个目录 是否有一个递归的工具 找到所有.vcxproj和.csproj 文件并生成解决方案文件 与依赖?
没有
你所要求的是非常合理的;你对这个问题的处理方法非常合理。不幸的是,这些工具跟不上你。 (我们遇到了同样的问题。)
您将不得不自己编写脚本,或以其他方式自定义工具。这就是我们所做的。我见过的成功方法包括:
从中生成*.vcproj/*.sln
“参考项目定义”,
使用CMake
,QMake
,Scons
等工具
Gyp
。我们的主要系统目前正在
在Scons
上,使用我们的自定义Python
用于导航这些依赖项的代码,
根据项目生成解决方案
(蜘蛛依赖)。通过
默认情况下,我们生成“完整”
每个项目的解决方案(包括
所有必需的支持项目),
加上“掌握所有项目”
解。它工作得很好。但,
这是定制工作,努力,
我们稍微扩展了Scons
描述我们的项目(但我们只是
依赖于Scons
代
*.sln
和*.vcproj
)。
编写自定义工具以“查找”这些依赖项
解析所有*.vcproj
个文件
你的工作区。这是工作,但可以做到。这些文件可能“难以”导航,但您可能会使用“足够好”的解决方案,使用GUID作为哈希键来生成这些依赖项。
我完全同意你的观点:当你超越“简单”时,这种类型的东西(项目依赖性)非常难以手动维护(例如,许多项目,是的,我们也有数百个)。
对不起。 MSVS是一个非常好的IDE(用于迭代开发),是一个糟糕的构建配置管理系统,并不是为了做我们所说的。
因为我关心你的理智和永恒的灵魂,请请不要尝试在MSBuild中编写自定义解决方案。
答案 1 :(得分:0)
另一方面,拥有数百个VS项目是一个坏主意,它会杀死VS的表现,请参阅two white-books: