【发布时间】:2014-10-23 15:09:27
【问题描述】:
我们有一个包含许多不同解决方案文件的项目,然后每个解决方案都有许多项目。问题是需要为某些解决方案构建项目。每个开发人员都必须经历打开大型解决方案(包含许多项目的解决方案)的痛苦。问题是这些解决方案并不总是构建,因为必须遵循特定的构建顺序。
我的问题是,有没有办法识别给定目录中每个项目的依赖关系,然后构建这些项目。比如找到所有对我们拥有的其他项目没有任何依赖关系的项目文件。所以先构建这样的项目,然后再构建已经构建依赖关系的项目。
我正在考虑使用 F# 或 Fake 来执行此操作,但我不确定从哪里开始,或者是否可能。
非常感谢您提供示例或链接到我可以在哪里获得帮助的答案。
问候,
纳西尔
【问题讨论】:
-
“问题是这些解决方案并不总是构建,因为必须遵循特定的构建顺序。”这应该可以在解决方案设置中修复。您可以显式设置项目依赖项以确保它们以正确的顺序构建。
-
您可以通过在解决方案资源管理器中右键单击解决方案,选择属性然后选择项目依赖关系来控制解决方案中项目的依赖关系。但是,我一生中从未接触过它们,因为 VS 只是根据参考文献对其进行分类。
-
谢谢大家,我明白这一切,但是项目太多了,当您尝试构建一个您已经有一段时间没有工作或对它不熟悉的解决方案时,开发人员最终会花费大量时间修复构建而不是编写代码。我很好奇是否有一种方法可以在给定文件夹中以依赖顺序自动构建所有项目。
-
@Nasir 为什么您的开发人员必须花时间修复损坏的构建,其他开发人员是否将损坏的构建提交到源代码控制?您是否尝试过像 CruiseControl.net 或 Team City 甚至基于提交的 TFS 这样的 CI 系统?如果您从源代码控制中检查解决方案,它应该只是构建,如果没有,那么您做错了。
-
@Nasir,这听起来像是一个奇怪的设置,您必须在其他解决方案的 bin 文件夹中引用二进制文件,这并不好。您至少应该有一个“引用”文件夹或类似文件夹,然后引用预构建的 DLL。我还会考虑构建 NuGet 包。如果您设置 Nuget 存储库并将项目构建到该存储库。然后 Nuget 将处理依赖关系解析,您可以使用 Visual Studio 只需单击几下鼠标即可更新到最新发布的版本。
标签: c# f# build-process build-dependencies