TFS 2010文件/项目结构

时间:2013-01-14 09:43:13

标签: .net tfs tfs2010 tfsbuild tfs2012

我目前正在使用一个源树,它有一个sln文件,包含所有WebApp,WinServices,WebServices,控制台应用程序和公共库(业务实体,自定义控件等)。

此文件结构非常扁平,如

+--Solution Folder
 +----Solution File
 +------WebApp1
 +------WcfService1
 +------WinService1
 +------CommonEntities
 +------WebControls1
 +------ThirdPartyAssemblies

我已经开始为每个网络应用程序,wcf服务等创建单独的解决方案。在这样做的过程中,我能够看到这些解决方案中的常见项目。

我向你们提出的问题是如何在TFS中构建我的文件系统,以便我可以全面使用常见项目?

我非常乐意遵循单TFS项目方法为工作项和报告定义每个站点/服务的区域,但我不太热衷于为每个项目分支公共库。那说你们怎么克服这些问题呢?

据我所知,人们还建议在一个解决方案中使用通用项目,然后在其他解决方案中引用已编译的二进制文件。我也不是很喜欢这种方法。公平地说,如果这些是唯一的选择,我将采取两个邪恶中较小的一个,但我很想知道其他人如何处理它。

2 个答案:

答案 0 :(得分:3)

M.Radwan关于构建项目的答案中的建议没有考虑CI(持续集成)和门控构建。我有一个问题,微软推荐这种方式。 CI和门控构建当前由工作空间映射触发。所以解决方案文件不应该位于Main下面的顶部。例如,如果您在解决方案文件夹级别拥有所有解决方案文件,并且您为WebApp1,WcfService1,WinService1,Common实体等设置了单独的gated构建,那么它们都需要映射主要解决方案文件夹并且是高效的不需要的文件夹隐藏(额外的工作,这是一个难以维护的),当开发人员检查代码中的任何一个文件夹时,让我们说WebApp1,他们会看到一个对话框来选择运行哪个门控构建。这个对话框将包含所有这些gated构建,因为它们都映射相同的结构,并且dev可以选择WinService1,因为它可用,并且它们的代码不可能失败,因为WebApp1中的所有代码都不在该构建中。因此,无法编译的潜在代码只能通过门控构建系统。

它对CI不利的原因,因为如果您设置了CI并且您在任何子文件夹中更改了一个文件,它将为每个构建设置触发CI构建,并将Main映射到它。你应该做的是将每个解决方案文件放在它自己的目录中,并附上它的代码。因此,在他的示例中,MyApp1的解决方案文件应位于MyApp1文件夹中。这是你可以拥有非常小的包含的构建,只能由它自己的代码触发。

答案 1 :(得分:2)

我无法完全理解你的观点,所以我会尝试为你打开大门,你看看多种解决方案吗?

enter image description here

更多信息:

Chapter 3 – Structuring Projects and Solutions in Source Control

对于源控制结构,有不同的方法

您是否看过服务器端结构?

$MyTeamProject1
     /Main                                                              Can contain solution (.sln) files    
            /Source
                        /MyApp1                                         Contains MyApp1.sln file
                                    /Source                             Contain folder for all source
                                                /ClassLibrary1          Contains ClassLibrary1.csproj
                                                /MyApp1Web              Contains Default.aspx
                                    /UnitTests                          Container folder for unit tests
                                                /ClassLibrary1Tests     Contains test project and code
                                                /MyApp1WebTests         Contains test project and code
                        /SharedBinaries                                 Shared binaries e.g. libraries
                        /SharedSource                                   Shared source code           
            /Docs                                                       Contains product documentation
            /Tests                                                      Container for tests
                        /FunctionalTests
                        /PerformanceTests
                        /SecurityTests /

更多信息:

Chapter 4 – Structuring Projects and Solutions in Team Foundation Source Control