October 13th, 2015

Breaking change in TFS 2015 Update 1 for server-side plugins

Aaron Hallberg
Partner Director of Product

Since Team Foundation Server 2010, TFS has supported extending its functionality using server-side plugins. These plugins are written against the server object model, and in particular the Microsoft.TeamFoundation.Framework.Server.ISubscriber interface. Team Foundation Server 2015 Update 1 includes a breaking change in that interface, meaning that all server-side plugins compiled against TFS 2015 will need to be modified in order to work with TFS 2015 Update 1 servers. For customers currently using server-side plugins with their TFS 2015 servers, we are adding a readiness check to the TFS 2015 Update 1 upgrade wizard which will detect them and generate a warning if they are broken and in need of updating.

The most impactful change was to convert the class Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext to the interface Microsoft.TeamFoundation.Framework.Server.IVssRequestContext. This was done primarily to make it easier to test code written against the server object model.

Most server-side plugins should only need to change references to TeamFoundationRequestContext to IVssRequestContext in order to react to this change. Properties and methods of the class were generally preserved with the same names on the interface. Some plugins may additionally need to change references for other classes that were converted. The table below outlines the complete set of impacted classes and interfaces.

Old Reference New Reference
TeamFoundationRequestContext  IVssRequestContext
TeamFoundationServiceHost IVssServiceHost
ITeamFoundationService IVssFrameworkService
DeploymentServiceHost IVssDeploymentServiceHost 

We generally hold a high bar for compatibility of the server object model for quarterly updates. In this case we decided that moving the server object model forward to a much more testable design was the right tradeoff, and that maintaining compatibility would be too time consuming and result in too much complexity. We are aware that this change imposes a burden on some customers and partners, and we apologize for that. If you need help reacting to these changes, please reach out to us at tfsomupdate@microsoft.com.

Author

Aaron Hallberg
Partner Director of Product

Aaron has been part of the Azure DevOps team since Team Foundation Server 2008, first as a developer and now in product.

0 comments

Discussion are closed.