views:

452

answers:

2

There's a bug/feature in Visual Studio 2010 where you can't create a unit test project with the 2.0 CLR.

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=483891&wa=wsignin1.0

This causes all sorts of problems when the project being tested is targetting the 2.0 CLR (ASP.NET MVC 2 on top of .Net 3.5 SP1 in this case) - crashes on debug, tests failing unexpectedly, in one case the test project doesn't even build because of the dependency on System.Web 2.0.0.0 which isn't available in projects targetting 4.0.

It's not possible to change the test project to target the 3.5 framework.

Does anyone know of a workaround?

Workarounds I'm aware of, but want to avoid, include:-

1) Upgrading the whole solution to target .NET 4
I want to host on Azure and it isn't clear at this point if/when support for .NET 4.0 will be added. See http://stackoverflow.com/questions/1679426/net-4-0-on-windows-azure

2) Rolling the whole project back to Visual Studio 2008
This is a last resort as there are a number of features in 2010 that I really want to use

3) Building the unit tests in 2008 and managing the references manually
This will work, but it'll be a tremendous pain.

Any ideas?

+1  A: 

You haven't suggested changing to a different test framework. Personally, I use NUnit and have for years. It's far more sophisticated that the stuff in 2008. I haven't had time to see what's changed in 2010 but I can't see MS catching up that quickly.

serialhobbyist
I'm currently avoiding NUnit as I value mstest's VS integration much more than NUnit's additional features (and I don't have R# in my current environment). Also, I already have mstest test projects; I'd need to port them.
Iain Galloway
A: 

Ok. No answers here.

What I've done is I've just upgraded everything to .NET 4.0 and I'm hoping that Azure support for it happens before I finish. Otherwise I can roll my non-test projects back to 3.5 (somewhat defeating the purpose of the unit tests but nvm), or use e.g. EC2 for hosting instead.

Iain Galloway