Thoughts on Software

Unsupported Project Type: Why won’t my Visual Studio project load?

leave a comment »

One of Visual Studio’s least helpful habits is that when you open a solution and one of the projects cannot be loaded, it simply gives you the unhelpful message the the project is of an unsupported type. Great. So what to do next?


The basic problem is that you are missing an indeterminate something that Visual Studio requires to load that project. For example, if the project type is MVC 3, you need MVC 3 installed on the machine you are opening the project on. Unfortunately, Visual Studio won’t tell you which project type it can’t load …


There are a couple of steps required to resolve this:

  1. Find out which project type is missing
  2. Install the missing software and reload


The information as to which project type is missing can be discovered from the .csproj file for the non-loading project. First, open the project in Notepad or similar and look for the ProjectTypeGuids tag:



This tag contains the Project Type GUIDS: ie, the identifiers which tell us what project types might be causing our exception. Now we need to work the friendly names for each GUID. I generally use this article as a starting point as it contains many of the common GUIDs:


Search through this page for each GUID in turn:

{E3E379DF-F4C6-4180-9B81-6769533ABE47} = ASP.Net MVC 4
{349c5851-65df-11da-9384-00065b846f21} = Web Application
{fae04ec0-301f-11d3-bf4b-00c04f79efbc} = Windows (C#)

In this case, the culprit is likely ASP.Net MVC 4 and sure enough, I had MVC 1, 2 and 3 installed but not 4 and so the fix is simply to download and install MVC 4.








Written by andrewlocatelliwoodcock

April 22, 2014 at 16:19

Waterfragile: Agile development in the Enterprise

with 3 comments

Waterfragile is my term for the most popular development methodology in use in Enterprises today.

Waterfragile is a heavily modified Agile methodology that adopts the best practises of Agile and Waterfall: the flexibility of Agile to adapt to changing (increasing!) requirements with the rigour of Waterfall to deliver promised features on a promised date. Waterfragile teams take on Agile overhead such as scrums, sprints, retrospectives, etc. but do not take on the bits they can’t be trusted with such as responsibility for the release or deciding which features should be included in each release or the deployment schedule. In fact, one of the central tenets of Waterfragile is that feature sets should only ever grow throughout the release cycle. Advanced Waterfragile practitioners refine this further by removing the ability to de-scope features as this focuses the team on developing 20 hours a day to meet the all-important external deadlines.

To do Waterfragile properly, only the development team should do scrums, sprints, etc. (it’s a development paradigm after all, no point wasting business analysis and test team time on this stuff!) and they should be slotted within a fully waterfall analysis, test and release cycle. If you fail to properly integrate the development team into the waterfall cycle, they may well miss their deadlines or skip features. Test teams should be fully prepped to pick up on all small visual defects – there’s no point spending too much time testing deep feature behaviour as that’s what development’s unit tests are for. Test teams should work to their own schedules and not waste time preparing tests ahead of the start of their test cycle so as to maximize their workload throughput.

Remember: what you are aiming for is separation not only of concerns but also of goals and responsibilities – teams should never be measured holistically on the successful delivery of a project but only on their part of it and the person responsible should never be the one making the decision as this can lead to dropping of features, missed deadlines, etc. The ability to add features, never remove them and still hit deadlines is Waterfragile’s killer feature – a minimum feature set and absolute delivery schedule can now be included in PowerPoint presentations about the project and as we all know “set in slide” is simply “set in stone 2.0”.

Done right, Waterfragile delivers all the benefits of Agile (faster release cycles, ability to make late changes to requirements) without losing any of the benefits of Waterfall (feature sets and delivery dates known months if not years in advance), a development methodology that has never failed to deliver even once over the last 40 years.

Written by andrewlocatelliwoodcock

November 14, 2013 at 19:08

Forcibly disconnecting users from a remote desktop session

with 3 comments

Following on from my last post on how to find out who is connected to a remote desktop session on  particular machine, there are occasions when you’ll want to actually forcibly disconnect someone so that you can log on to the machine yourself.

Turns out that there’s a command for that …

There’s a two step process of first identifying who you want to disconnect and secondly of actually disconnecting them. So, how to identify the users connected to the remote session and also how long they’ve been idle:

quser /server:[server name]
eg: quser /server:myServer

This gives back a table of information: USERNAME, SESSIONNAME, ID, STATE, IDLE TIME and LOGON TIME. Once you’ve identified who (if anyone) you want to kick off, usually based on who’s been idle the longest, you will need to note down the ID and then use that in the logoff command to actually log the user off:

logoff [id] /server:[server name]
eg: logoff 2 /server:myServer

And that’s it!

Here’s a redacted screenshot of the process in action:

redacted logoff example

Written by andrewlocatelliwoodcock

November 28, 2012 at 21:15

Find out who’s logged on to a Remote Desktop Session

with 7 comments

It’s a problem I’ve hit multiple times: I need to remote into a server to do some work but there are only a few sessions available and they’re all in use. I could ask someone if they can log off for a while but as it’s possibly one of a number of people this requires a bulk email. What I really need is a way to identify exactly who is logged onto that server so I can ask them if they can log off for a while …

After a fair amount of googling, I tracked down the query session command for Windows which will do exactly this. Here’s an example:

query session /server:[SERVERNAME]

where [SERVERNAME] is the name of the server you are trying to remote onto. So if we were trying to connect to a server named MyServer, we’d enter:

query session /server:MyServer

Here’s redacted example of the command line query in action

Redacted example of the query session command in action

Redacted example of the query session command in action

There’s a lot more to this command than just the /server switch and the command is covered in detail in a good tech article form Micrsoft available here:


My next post covers how to forcibly disconnect users from a session when necessary.


Written by andrewlocatelliwoodcock

September 13, 2012 at 21:41

Modern Corporate R&D

leave a comment »

I am based these days in Citi’s research lab in Dublin working on financial mobile solutions. A few weeks ago, Irving Wladawky-Berger came to the Lab to see what we are up to. I didn’t get to meet him unfortunately but he wrote a very interesting blog post on corporate R&D and how it has evolved over the years to meet accelerating change in the outside world and was very positive about Citi’s Dublin lab:
Personally, I like the sound of the old-style labs where we just got on with the interesting bits and left Marketing to figure it all out 😉

Written by andrewlocatelliwoodcock

September 6, 2012 at 09:32

Posted in ASP.Net MVC

Cloud Computing, a tech introduction

with 2 comments

This is a recent tech presentation I wrote introducing Cloud Computing: what it is, how it works, why it’s important. This is very much a 101-level presentation. Hopefully it will be of some interest!

Cloud computing presentation

Written by andrewlocatelliwoodcock

June 20, 2012 at 19:59

Unable to replicate from local CouchDB to Cloudant – a quick resolution for the {“error”:”shutdown”} message

leave a comment »

Just in case anyone else hits an issue whereby you are unable to replicate a local CouchDB database to Cloudant … I was using Curl on Windows (which never helps of course 🙂 ) and found that I was unable to replicate from a local instance to Cloudant even though my passwords, ca cert bundle, etc. were all correct. Naturally, it took a couple of goes to get the curl escaping on Windows right but even once I’d figured that out it was still failing with the uninformative


I eventually found some posts that pointed to my (very) out-of-date CouchDB instance being the issue: you need to be running CouchDB 1.2.0 preferably on Erlang R15 for this to work correctly.

I upgraded everything and key presto! It works!

Written by andrewlocatelliwoodcock

June 15, 2012 at 18:13

Posted in CouchDb, Databases, Erlang

Tagged with , ,