TFS & Visual Studio ALM – by Neno Loje

(formerly Team System, VSTS)

Extending TFS’ default behavior using server-side plug-ins

May 12th, 2014 · No Comments · 18401, Team Foundation Server, Team Foundation Version Control, Tools and Utilities

In TFS 2005, Check-In Policies helped to ensure certain rules prior to check-in. However, check-in policies are executed locally and you must ensure they are available for the client (in the appropriate version) and installed.

In TFS 2010, Gated Check-Ins were introduced, which allowed validations such as the compilation, unit test execution and more (basically whatever the build script specified) to be run on the server-side and reject the check-in if they failed.

Also with TFS 2010, Microsoft introduced server-side plug-ins, which can handle TFS events and either react to them, or – in some cases – even cancel operations. Technically those plug-ins are implementing the ISubscriber interface (see this blog post how to write and debug them).

A word of warning:

Server-side event handlers must be very well written. As they run inside of the TFS process itself, they can crash TFS, significantly degrade performance or change the behavior of built-in operations (e.g. a badly written plug-in could cause new team project creation to fail).

Here’s an example:

Instead of using a check-in policy to enforce that changesets must have comments, a server-side plug-in could be used instead. This would guarantee that our rules are enforced, regardless of the client accessing TFS and if the appropriate check-in policy is available and installed for that client or not.

The server-side plug-in is installed by just copying a single .DLL to a “PlugIn” folder on the TFS Application Tier (or all Application Tier if you have more than one).

The following screenshots show how the message looks like that users will see that try to check-in without a comment.

In Visual Studio:

In Windows Explorer (via TFS Shell Extension from TFS Power Tools):

In Eclipse:


How to set it up

  • To install, copy TFS.VersionControl.RequireChangesetComments.dll to the “PlugIns” folder, located at: %ProgramFiles%\Microsoft Team Foundation Server 12.0\Application Tier\Web Services\bin\Plugins
  • Download the .ZIP package with all event-handlers for TFS 2018 here (for TFS 2017 here, for TFS 2015.1 or higher, you can find it here and for TFS 2013, here).
  • To uninstall, just remove the .DLL from the “PlugIns” folder.

Note: Server-side plug-ins work on TFS on-premises only (not with Visual Studio Online Team Services).



Update (February 23, 2016): Added link to TFS 2015.1-compatible .ZIP file.

Update (June 6, 2017): Added link to TFS 2017-compatbile .ZIP file and changed “Visual Studio Online” to “Visual Studio Team System”.

Update (July 19, 2018): Added download link to TFS 2018-compatbile version, and fixed the link for the TFS 2017 version.


No Comments so far ↓

There are no comments yet...Kick things off by filling out the form below.

Leave a Comment