IMHO, the .net 4 client profile is more trouble than it’s worth

NOTE: I know I can (and likely will) edit the project template(s), but bear with me here.

Time and again I create a new project (like a console app) and I happen to want to do what I would consider to be reasonable to expect of a client profile – like, say, be a WCF client.

I end up using something like, say, WebHttpBinding or ChannelFactory, but it fails when I let ReSharper attempt to add the using+reference:





Ignoring the error message it gives (it’d be nice if ReSharper knew that the failed reference was due to the target framework not having the given lib and prompting to ‘elevate’ to full .net 4), I’ve got to figure out what’s going on when I hit this – I go check the references and sure enough, it’s broken:


Luckily around that time I remember having hit this before and it being caused by the WCF client bits not being in the .net 4 client profile, so I open the project properties and switch it over to the full framework:


The client profile (obviously not new in 4, see the 3.5 entry above) just seems like a stop-gap half-fix to me.  While I get that it’s easier said than done, it seems like you might as well just put the framework(s) on the web and let people choose either ‘prefetch the whole framework’ (like ‘full’ does now) or ‘fetch framework pieces as needed’ (perhaps what people paying per MB of download would choose), with a subset installed by default that includes enough to download others (obviously).  Why push the pain onto the developers?

I’d imagine ClickOnce (and Java Web Start before them) and Silverlight have gotten this kind of thing taken care of already.  We already have loading assemblies via http paths in the framework and it already includes caching IIRC, so the lower pieces are already in place.

Obviously, though, once you do this for the core framework, you can start to extend it out for others.  You can see the beginnings of this with something like the CDN-hosted javascript libraries (Microsoft and Google both do this). 

Like I said, though, I’m guessing this is more trouble than it’s worth for the product group (still questions like in or out of GAC, per-user or not, etc), but I really hate when a solution gets pushed out that causes more pain for developers.  Since I can’t do WCF clients with the ‘client profile’, I’m also pretty annoyed about that, too 🙂