1

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

文件结构非常扁平,如

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

我已经开始为每个 Web 应用程序、wcf 服务等创建单独的解决方案。在此过程中,我能够看到这些解决方案中的通用项目。

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

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

我知道人们还建议在一个解决方案中包含公共项目,然后在其他解决方案中引用已编译的二进制文件。我也不是很热衷于这种方法。公平地说,如果这些是唯一的选择,我将采取两种弊端中的较小者,但我很想看看其他人是如何解决它的。

4

2 回答 2

3

M.Radwan 对构建项目的回答中的建议没有考虑 CI(持续集成)和门控构建。我对微软以这种方式推荐事物有疑问。CI 和门控构建当前由工作区映射触发。所以解决方案文件不应该在 Main 的顶部。例如,如果您在解决方案文件夹级别设置了所有解决方案文件,并且为 WebApp1、WcfService1、WinService1、通用实体等设置了单独的门控构建。它们都需要映射主解决方案文件夹并有效地隐藏不需要的文件夹(额外的工作很难维护),当开发人员将代码签入这些文件夹中的任何一个时,比如说 WebApp1,他们将看到一个对话框来选择要运行的门控构建。此对话框将显示所有这些门控构建,因为它们都映射相同的结构,并且开发人员可能会选择 WinService1,因为它可用,并且他们的代码不可能使构建失败,因为 WebApp1 中的任何代码都不在该构建中。因此,可能无法编译的代码刚刚通过了门控构建系统。

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

于 2013-01-21T19:20:59.077 回答
2

我不能完全理解你的意思,所以我会试着为你开门,你看过多重解决方案吗?

在此处输入图像描述

更多信息:

第 3 章 – 在源代码管理中构建项目和解决方案

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

你看过服务器端结构吗?

$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 /

更多信息:

第 4 章 – 在 Team Foundation 源代码控制中构建项目和解决方案

于 2013-01-21T16:16:34.430 回答