Upgrading to Team Foundation Server 2013 Update 4


Team Foundation At the company I work for, I am the primary TFS administrator. Overall, I think TFS is a fantastic system. Updates come out quarterly, and are – in general – painless to install.

Update 4 went in easily on our test TFS server, and no issues were discovered. We went ahead and pushed the update to our production server. Everything went fine (though the install seems to always take longer, even though our databases are pretty small). I was in the process of upgrading the build machines when I noticed that the build services had upgraded fine, but none of the services had started.

I spent several hours trying everything I could think of to get the services to start, but they wouldn’t work. I tried reboots, unregistering the services and reading them, using different service accounts, and adding the account to every TFS and Built-In group I could find. I finally narrowed it down to the build service account, my account ran the build services fine. That’s when I started looking closely at the permissions given to the account. Everything listed as Inherited Deny.

There were no groups that had Deny privileges, so I was at a loss. Finally, I came across a forum post on the Microsoft support site that explained the issue. in update 4, the licenses were changed, and the stakeholder license was added. Apparently if this is the default license for users, then the service accounts are pushed into this access level, which disables functions they need in order to do their jobs.

Once I added the build account as a Basic License, everything began running correctly again.

System.Diagnostics.Process.Start Exit Code returns 255 in Mono


I have been doing some incredibly deep work with inter OS services written in C# for ease of support at work. I could get into the reasons we are using Mono, but I will just cut to the chase.

I was executing a shell script using System.Diagnostics.Process.Start(), and always received ExitCode 255. After a bit of research, it sounded like 255 meant that Mono was unable to start the process.

I added !#/bin/sh to the top of my script, and viola! Exit code 0 (success)!

Disclaimer: The script I was running was not written by me. I try to make a habit of adding the executable line at the top by default.