【发布时间】:2014-06-15 01:09:05
【问题描述】:
我大部分时间都看到开发人员如何在解决方案上工作,右键单击源代码管理中的解决方案文件夹,选择“获取最新”并且...有很多问题:解决方案的项目引用其他项目的其他项目解决方案、缺少的参考资料等...
这是我们在工作中遇到的类似情况的模拟示例...
现在,假设您必须在 TicketsSolution 上工作,特别是 - 修复一些错误,使用 TicketsSolution 的 Web 项目进行更改。通常开发人员在 TFS/VSS(随便)中右键单击 TicketsSolution 的文件夹并选择“获取最新”... 上面提到的问题直接打到了他们的脸上。
事实证明,TicketSolution 还包括诸如
之类的项目Common.Solution1.Project1,可能有对Common.Solution2.Project1的引用
Common.Solution1.Project2
WCFServicesLibrary 项目,可能有对 SQLServerProxy 项目的引用
此外,一些外部 3rd Patry DLL 已丢失或放置在 ROOT 下但在 TicketsSolution 文件夹之外的某处...
在这种情况下,当您仅为 TicketsSolution 文件夹获取最新信息时,所有这些引用都将丢失,
因此,获取最新信息的唯一合理方法似乎是右键单击解决方案文件,例如 TicketsSolution.sln 并仅获取该文件的最新信息.然后,希望在 Visual Studio 中打开该 TicketsSolution.sln 文件 :) 重建解决方案所需的解决方案文件夹内外的所有树节点。
即使在这种方法中,对外部 DLL 库的引用也会丢失,因为 VS 知道如何重建文件夹树,但它不包括在 TicketsSolution 文件夹之外引用的 DLL。
但 90% 的开发人员获得了最新的解决方案文件夹并遇到大量问题。
所以,我的问题是 - 在这种情况下,在 TicketsSolution 解决方案中包含外部项目是否正确,或者在 TicketsSolution 文件夹下添加“lib”文件夹并删除所有这些外部依赖项目的 dll 会更合理在其中,然后从解决方案的项目中引用它们,而不是使用上层的所有依赖项目重建整个文件夹树(可能并且可能会有自己的依赖关系和引用问题)??
【问题讨论】:
-
永远不要在您的解决方案中打开另一个解决方案项目。这是非常糟糕的做法,应该避免。将每个解决方案视为应用程序,将外部的任何内容视为二进制依赖关系。
-
@MrHinsh,完全同意。问题是我加入的公司已经处于这种状态。并且所有这些外部项目,在这个解决方案之外也被其他项目以同样的方式引用,它们就像几个解决方案的“共同”。
标签: visual-studio version-control tfs