Deprecating XAML Builds in VSTS

Team Build, Team Foundation Build, Team Foundation Service, Visual Studio Team Services
Last year, I wrote a post titled Hosted XAML Builds Ending Soon. Roughly nine months has passed since that post and, as of today, Microsoft has provided a bit more detail around their plans to deprecate the XAML build functionality within VSTS. Here’s an excerpt from the post:Deprecating XAML build support in future versionsTFS – In our next major TFS release, we will take the next big step in deprecating XAML Build support.  We will remove all support for XAML builds.  We will not ship updated installers and we will remove support for connecting XAML agents/controllers.  We will also be removing all support for creating/editing XAML build definitions from future versions of Visual Studio.  A customer that really needs to continue to use XAML builds will need to stay on…
Read More

Enabling Verbose Output in Team Foundation Build Logs

Team Build, TFS, Visual Studio Online
There are a lot of great new features available in the new Team Foundation Build (formerly knows as Build v.Next) such as version history, web-based build definitions, open source build tasks, and much, much more. However, sometimes you simply want to accomplish something that you’re currently doing with your “old” XAML builds such as setting the logging verbosity to diagnostic. In TFS this was a simple property you could set when queuing a build. However, that property is nowhere to be found in the new Team Foundation Build system. There is, however, a way you can set logging verbosity to diagnostic in your new build definitions. In your build definition, navigate to the Variables tab and add a new variable named system.debug and set its value to true. Save your…
Read More

How To: Skip Actions When Queuing a Build

How To:, Team Build, TFS
One of the tasks we commonly build into our Team Build scripts is the ability to run FitNesse tests along with other tests (such as unit tests).  If any of the tests fail, we do not deploy the product for user acceptance testing. The advantage to this approach is that we find out relatively quickly if we have "broke" the build if we have failing tests.  The down side to this is two-fold: 1) the build takes longer to run (not that big of an issue in our case) and 2) Sometimes we refactor code that should break the FitNesse tests. In the latter case, it may take somebody several hours (or even sometimes, days) to review the failing tests and get them corrected.  In the meantime, none of our…
Read More

Team Foundation Build 2010

Team Build, Team System, TFS
I just finished watching a great video from Jim Lamb on Channel 9 covering some of the new features for Team Foundation Build 2010.  The video is about 35 minutes long and is well worth the watch.  Here's a quick synopsis of what's covered in the video: Team Foundation Build 2010 will support Windows Workflow 4.0.  This feature alone would make a worthy upgrade to Team Foundation Build.  The new Workflow UI being designed for the .NET Framework 4.0 will be included in the build type editor within VS 2010 providing a fantastic user experience for modifying build types (can you say "XML - not for me, thank you" :-).  There will be several Team Foundation Build-related Workflow Activities included out of the box with VS 2010 and I would…
Read More

VSLive! Las Vegas

Conferences, Team Build
Several weeks ago I was informed that I had been selected to present at this year’s VSLive! in Las Vegas.  Although I have presented at other conferences in the past (e.g. Heartland Developers Conference and Tulsa TechFest) this will be the largest conference I’ve presented at to date.  I have to admit, I’m pretty excited about it all. I will be presenting on Using Team Build in the “Real” World on Thursday, October 16th at 08:30. I’m looking forward to meeting new people and learning new things.  So, if you’re planning on attending VSLive! in Las Vegas this year and have an interest in Team Build (or Team Foundation Server in general) be sure to look me up.
Read More

DelayedBuildTask

Team Build, Team System, TFS, TFS API
A few days ago a fellow co-worker asked me if I could create a simple build task that would allow anyone on their team the opportunity to cancel a build, once it has been queued, before the build actually did anything.  The idea was simple: A new build gets queued. The build sends out an e-mail notification (via a custom task) informing the recipients that a new build has been queued.  The e-mail message also has a link that, when clicked, will cancel the build. The build waits a pre-determined amount of time (e.g. 5 minutes) giving the e-mail recipients a chance to cancel the build before it continues. If the build is not canceled, the build will proceed as usual once the delay has expired. The driving reason behind…
Read More

Creating Team Build Types

Code Snippet, Team Build, Team System, TFS, TFS API
I was answering a question related to programmatically creating team build types today and realized there weren’t too many examples on the web.  I didn’t see any examples that included all the details I was looking for – for example: Adding the solution to be built to the new build type Turning on/off test execution Turning on/off code analysis An example containing these details may exist, I just didn’t come across it during my initial search. So, with that said, I decided to post the main part of the example application I put together to test out some concepts.  The items listed above are included in the example code below. The example code includes two methods: CreateBuildType – this method accepts six arguments that can be used to programmatically create…
Read More

Omaha Team System User Group

Team Build, TFS, User Group
Well, the 2nd Omaha Team System User Group meeting is, as they say, in the books!  We had a great turnout with about 25 attendees that showed up to listen to Mike Douglas speak about TFS build automation and the coolness factor of incorporating (authentic) stoplights into the build process. Mike also demonstrated his latest CodePlex contribution - Team Deploy.  Team Deploy is a set of custom MSBuild tasks that provide functionality for deploying MSI files as well as controlling X10 devices (e.g. stoplights, lava lamps, etc.).  Some of the tasks included are: Install Task - installs an MSI on a remote machine. Uninstall Task - uninstall an MSI from a remote machine. Kill Process Tasks - kills a process on a remote machine. Deploy Task - utilizes a deployment…
Read More

So, what’s the deal with $, @, and % anyway?

Team Build, Team System, TFS
So, you've decided that the default build script that's built by the "New Build Type" wizard doesn't quite do everything that you need it to do. So, you click on over to the Version Control Explorer, check out the TFSBuild.proj file, and dive in!At first glance, everything looks simple enough, you have various combinations of Targets, Tasks, and Properties. Things start to get a little interesting as you explore the concept of Item Groups. However, you start to notice a subtle difference with how various properties (or at least what look like properties) are accessed - e.g. some begin with '$', some with '@', and yet others with '%'. What's going on here? What's the difference? Before we can answer this question, we need to take a look at Properties…
Read More

Working with the BuildStep Task

Team Build, Team System, TFS
One of the new convenience tasks added to Team Foundation Build 2008 is the BuildStep task.  This task allows you to add custom messages to the build reports created when you run a team build.  For example, you may want to display the message "Publishing web site" while your build script is updating some files on a web site.  Having the ability to "see" what your build script is currently executing is not only useful but can also be a great debugging tool (the messages are also logged as well as being displayed). The BuildStep task accepts the following parameters: TeamFoundationServerUrl - specifies the Team Foundation Server URL.  For example: $(TeamFoundationServerUrl). BuildUri - specifies the build URI - for example: $(BuildUri). Name - specifies the name of the build step…
Read More