检测和构建C#解决方案的依赖关系

时间:2014-08-29 15:06:48

标签: c# f# build-process build-dependencies

我们有一个包含许多不同解决方案文件的项目,每个解决方案都有很多项目。问题是需要为某些解决方案构建项目。每个开发人员都必须经历一个大型解决方案(包含许多项目的解决方案)的痛苦。问题是这些解决方案并不总是构建,因为必须遵循某个构建顺序。

我的问题是,有没有办法识别给定目录中每个项目的依赖关系,然后构建这些项目。有点像找到我们拥有的其他项目没有任何依赖关系的所有项目文件。因此,首先构建这样的项目,然后构建已经构建了依赖项的项目。

我正在考虑使用F#或Fake来做这件事,但我不知道从哪里开始,或者甚至可能。

我真的很感激一个例子的回答或者我可以获得帮助的链接。

此致

纳西尔

2 个答案:

答案 0 :(得分:2)

如果你想要现成的东西。 JetBrains的Resharper有一个非常好的工具来查看项目构建依赖项。这将帮助您使用正确的构建顺序创建构建脚本。

http://www.jetbrains.com/resharper/webhelp/Architecture__Project_Dependencies_Exploration.html

答案 1 :(得分:1)

在F#中实现分析自己不会太复杂。

例如,您可以分两个阶段完成:
1.浏览解决方案文件夹结构并构建(项目文件名 - >文件的完整路径)的映射 2.浏览您找到的所有文件,并为每个文件添加对其他解决方案项目的引用到图形结构。

然后逐步构建没有任何(尚未构建的)引用的项目。

项目文件很容易解析,是XML。解决方案项目可以通过相对路径引用识别:

<ProjectReference Include="..\MyProjFolder\MyProjFile.csproj">
<!--                      --^                              -->