我们在多个软件项目中使用single master solution strategy,最近有人在公共代码中添加了依赖项,这打破了其他项目的解决方案,直到将新的依赖项添加到他们的解决方案中。什么是消除或最小化此类问题的好策略?
我们已经考虑过以下几点:
到目前为止,我们最大的单一主解决方案是115个项目文件,所以仅在此基础上看起来似乎没有必要对解决方案进行分区,除非这是解决问题的最佳方法。
如果你遇到过这个问题,你是如何解决的?
答案 0 :(得分:1)
可能没有内置方法(任何版本的VS安装的MSBuild文件都没有执行项目的构建,以及它的特征请求like this one)。一个非常快速的解决方案是创建一个msbuild文件,该文件将引用的项目构建为预构建事件,并在每个引用另一个项目的项目中包含该文件。例如,在具有常见构建工具的目录中创建名为buildprojectreferenecs.targets的文件,内容为
Public Sub ClearAllBut1stRow(byval Range As Range)
Range.Resize(Range.Rows.Count-1).Offset(1).Clear
End With
End Sub
这只是使用与包含它的项目相同的配置和平台构建每个ProjectReference。在每个使用项目引用的项目中导入它。必须在定义ProjectReference项后进行导入,因此请将其放入一直到底:
ClearAllBut1stRow(Range("A:D"))
现在,如果运行构建,在实际编译开始之前,无论是否在解决方案中,都会发生引用项目的构建(以及它们引用的项目等)。一些缺点:
总而言之,我不确定它是否值得。由于您选择了单一主解决方案'可以说,解决方案应该是项目的单一解决方案,因此必须包含从源构建的所有依赖项。而且它是开发者'确保发生这种情况的任务。为了快速解决失败问题,最好的解决方案是使用构建服务器来构建对代码库的每次提交,从而快速发现错误。然后开发人员也会收到他们的错误通知,并会尽快应用修复程序(特别是因为它很简单)。