我大部分时间都看到开发人员为了在解决方案上工作,右键单击源代码管理中的解决方案文件夹,选择“获取最新”,并且......有大量问题:解决方案的项目引用其他解决方案中的其他项目,丢失的引用,等等获取最新的解决方案文件或解决方案文件夹(复杂的依赖关系)?
下面是类似的东西,我们在工作中所模拟的例子...
现在,想象一下,你必须在TicketsSolution工作,特别是 - 修复了一些漏洞,使使用TicketsSolution的Web项目进行更改。通常开发人员右键单击TFS/VSS中的TicketsSolution文件夹(无论什么),然后选择“获取最新版本......”,上述问题直接影响了他们。
原来,TicketsSolution还包括这样的项目如
Common.Solution1.Project1,其可以具有以Common.Solution2.Project1
Common.Solution1.Project2
WCFServicesLibrary项目的引用,其中可能有一个引用SQLServerProxy项目
此外,一些外部的第三个派生DLL已经丢失或放置在ROOT下但在TicketsSolution文件夹之外的某处...
在当您获取最新的只是TicketsSolution文件夹中所有的引用将会丢失这种情况下,
因此它似乎是唯一合理的途径到获取最新将右键单击只是解决方案的文件,例如TicketsSolution.sln,并只获取该文件的最新版本。然后,在Visual Studio中打开TicketsSolution.sln文件,希望能够重建解决方案所需的解决方案文件夹内部和之外的所有树节点。
即使在这种方法中,外部DLL libabries的引用也会被忽略,因为VS知道如何重建文件夹树,但它不包括TicketsSolution文件夹之外引用的DLL。
但是,90%的开发人员会得到最新的解决方案文件夹并产生大量问题。
因此,我的问题是 - 在这种情况下,在TicketsSolution解决方案中包含外部项目是否正确,或者在TicketsSolution文件夹下添加“lib”文件夹并删除所有这些外部依赖项的dll会更合理项目,然后,从解决方案的项目中引用它们,而不是重建整个文件夹树和上层的所有依赖项目(可能并可能会有自己的依赖项和引用问题)??
切勿在您的解决方案中打开另一个解决方案项目。这是非常糟糕的做法,应该避免。将每个解决方案视为一个应用程序,将任何东西视为二进制依赖。 –
@MHHinsh,完全同意。问题在于它已经在我加入的公司的那个州。除此解决方案之外的所有这些外部项目也以同样的方式被其他项目引用,它们就像几种解决方案中的“常见”一样。 – monstro