The blogs of Black Marble staff

Cross platform build with TFS 2015 vNext Build

I have been preparing for my Techorama session on TFS vNext build. One of the demo’s I am planning is to use the Node based cross platform build agent to build something on a Linux VM. Turns out this takes a few undocumented steps to get this going with the CTP of TFS 2015

The process I followed was:

  • I installed a Mint 17 VM
  • On the VM, I installed the Node VSOAgent as detailed in the npm documentation (or I could have built it from from source from GitHub to get the bleeding edge version)
  • I created a new agent instance
  • I then tried to run the configuration, but hit a couple of issues
              node vsoagent

URL error

The first problem was I was told the URL I provided was invalid. I had tried the URL of my local TFS 2015 CTP VM


The issue is that the vsoagent was initially developed for VSO and is expecting a fully qualified URL. To get around this, as I was on a local test network, I just added an entry to my Linux OS’s local /etc/hosts file, so I could call


This URL was accepted

401 Permissions Error

Once the URL was accepted, the next problem was I got a 401 permission error.

Now the release notes make it clear that you have to enable alternate credentials on your VSO account, but this is not a option for on premises TFS.

The solution is easy though (at least for a trial system). In IIS Manager on your TFS server enable basic authentication for the TFS application, you are warned this is not secure as passwords are sent in clear text, so probably not something to do on a production system


Once this was set the configuration of the client worked and I had an vsoagent running on my Linux client.

I could then go into the web based TFS Build.vNext interface and create a new empty build, adding the build tool I required, in my case Ant, using an Ant script stored with my project code in my TFS based Git repo.

When I ran the build it errored, as expected, my  Linux VM was missing all the build tools, but this was fixed by running apt-get on my Linux VM to install ant, ant-optional and the Java JDK. Obviously you need to install the tools you need.

So I have working demo, my Java application builds and resultant files dropped back into TFS. OK the configuration is not perfect at present, but from the GitHub site you can see the client  is being rapidly iterated


Day 1026 in The House of Black Marble:

I’m not the healthiest of people when it comes to food, but Black Marble always try and give a helping hand when they can, with oranges and bananas in the office kitchen. However they’ve outdone themselves today:


Whereas other desk breakfasts may have included chocolate and coke, today’s breakfast has been kicked up the healthy ladder.

And as I wasn’t actually sure if pomegranates were that healthy; in all honesty the only ‘fact’ I knew about pomegranates was around the Garden of Eden debate. I decided to do some digging…

So what did I find out? Of course, take everything with a pinch of salt, but it seems pomegranates are not only tasty, but may have some health benefits too. Take a look….

According to studies it can slow the progress of cancer, including prostate and breast cancer, prevent heart disease and lower blood pressure. But that’s not all, other research has suggested pomegranate extracts have antibacterial effects against dental plaque and can even inhibit viral infections. Not bad for a Friday breakfast treat eh?


Custom Pipeline Components Not Updating

I’m sure many BizTalk developers who create custom pipeline components will have run into this problem. You create a custom pipeline component, deploy it, and something doesn’t quite work. Back into Visual Studio and make some code fixes, looks good and redeploy. Test your fix only to find your changes don’t appear to have come across. Ok, rebuild everything and try again. Still no joy? You then start ripping out your solution, removing assemblies from the GAC, restarting Visual Studio etc. until it eventually seems to deploy, but you have no idea which step it was that solved the issue.  

The answer to the problem is Visual Studio is trying to be to helpful. When you add your custom pipeline components into the toolbox on the pipeline editor Visual Studio caches that version. Therefore simply restarting Visual Studio will not work no matter how many times you remove the old assemblies from the GAC. You need to remove the custom pipeline component from the toolbar. Restart Visual Studio and add the component back into the toolbar. Alas the component has been updated.

Suited and Booted

Day 1012 in the House of Black Marble:

Here at Black Marble HQ we’re quite a fun loving and hoodie wearing company (who isn’t?). But for Red Nose Day this year, we thought we’d try something a little different than Dress-Down-Friday.

Take a look at Suit-Up-Friday and look how dashing we are! I think we scrub up rather well.


Darth’s been a staple here for a number of years now…

Check out the Black Marble Facebook page for more pictures, and don’t forget to take a look at our Giving Page.

To infinitives and beyond…

Day 1003 in the House of Black Marble:

Not only is it National Grammar Day, but it’s also National Sales Day – so make sure you give us a smile and say something nice!

But as it’s National Grammar Day I thought I might share a few words, March forth and all that… and attempt to dispel some myths. I am not a Grammar Fiend as some might think – I am even quite happy with the use of ‘literally’ instead of ‘figuratively’, it proves that the English Language is organic and fluid.

So on this special day of all days I won’t tell you that you should use “an” before words that start with a vowel sound, or that “its mine” is wrong. Instead I’ll give you a quick history on the etymology of the word “grammar” – you lucky devils.

The word grammar has an interesting etymology with roots tangled in Latin and Greek, (what doesn’t right?) But if we start in the beginning, we can go right back to the Greek grammatike tekhne, which means the “art of letters”, from the fem adjective gramma, meaning letter. The word then travelled through Latin (grammatica), and Old French (gramaire), to mean learning in general, but especially Latin and philology. It then landed here in the 14th century to become the Middle English gramarye.

Gramarye still meant learning, but during the Middle Ages, when scholarly pursuits included the occult and astrology the word came to be associated with magic. Gramarye then evolved into the Scottish glamour, where the Scots extended it to mean enchantments, magic charms and magical beauty.

In the 19th century the two meanings of gramarye and gramaire went their separate ways, with gramaire evolving into the word grammar we know and love today…