我在VS2008中有一个遗留项目,我们即将开始重构以实现更好的组件化。解决方案中150个项目之间的引用是混乱的,所以作为一个起点,我试图至少达到一个点,我可以让一些项目使用二进制引用到其他项目,而其他项目使用项目引用。 (出于构建时间的原因)
要说明,给定项目A,B和C,我希望看到......
引用C.dll
B引用C.csproj
现在问题是我需要确保C.csproj在A.csproj之前构建。我知道我可以使用项目依赖关系来控制构建顺序,但这似乎导致了我试图避免的行为......构建A总是导致C构建。我确信我可以直接使用proj或sln文件来按照我想要的顺序构建内容,但我也确信VS的自动魔法会在短时间内覆盖。
有没有办法可靠地控制这个订单,还是我错过了一些明显的东西?
...谢谢
答案 0 :(得分:1)
您可以制作自定义msbuild文件,而不是依赖.csproj和.sln文件,这样,根据所选目标,它只会构建某些程序集。如果您不知道它,则需要学习msbuild。
答案 1 :(得分:1)
将相关组件(.csproj)分成单独的解决方案。这将跨包边界强制执行二进制引用。它还会迫使您和其他开发人员按层对组件进行分组。
然后使用构建过程以正确的顺序构建解决方案,从最少依赖的包开始。
据我估计,从SCM的角度来看,解决方案== UML包==合并模块(所有解决方案都创建合并模块)