26.04.2015 Views

Team Development with Visual Studio Team Foundation Server

Team Development with Visual Studio Team Foundation Server

Team Development with Visual Studio Team Foundation Server

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Figure 10.2 Multiple Solution Approach<br />

In this scenario, all references inside each solution are project references. References to<br />

projects outside of each solution (for example to third-party libraries or projects in<br />

another sub-solution) are file references. This means that there can be no “master”<br />

solution. Instead, you must use a script that understands the order in which the solutions<br />

must be built.<br />

One of the maintenance tasks associated <strong>with</strong> a multiple-solution structure is ensuring<br />

that developers do not inadvertently create circular references between solutions. This<br />

structure requires complex build scripts and explicit mapping of dependency<br />

relationships. In this structure it is not possible to build the application in its entirety<br />

<strong>with</strong>in <strong>Visual</strong> <strong>Studio</strong>. Instead, you use TFS <strong>Team</strong> Build.<br />

For more information about this multiple solution approach, see “Chapter 3 - Structuring<br />

Projects and Solutions in Source Control.”<br />

Branching and Merging Considerations<br />

Large teams are likely to branch both by team and by feature and are also more likely to<br />

have one or more branches designed to integrate external dependencies. Since the<br />

branching structure is deeper, there is more lag between a change in a development<br />

branch and getting that change into the main integration branch. For this reason it pays to<br />

careful consider your merging strategy when creating branches.<br />

For example, consider the following when deciding whether your merges will be<br />

scheduled or event-driven:<br />

• Reverse integration is generally scheduled, for example merging from a development<br />

branch to the main integration branch.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!