4
votes

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 .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?

2
VS2010 is still BETA - I hope you're just playing with features - and not building a real production project over there. Just an advice....Dani
It's a toy project, hence the messing with tech. However, I'm considering turning it into a production app once Azure releases properly.Iain Galloway
In that case my answer would be 1, trying to get a note from MS people about Azure compliance to .NET 4.0 knowing how they usually work, if it's not here it will be here pretty soon.Dani

2 Answers

3
votes

It looks like Visual Studio 2010 Service Pack 1 will resolve this once it is released (see the heading 'Better platform support | Unit Testing on .NET 3.5')

You can get the Beta version with a Go-Live licence now...

3
votes

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.