Sunday, December 16, 2007

Adoption of VS2008

As we have been using VS 2008 Beta 2 on few machines in our organization for few months already we really expected quite smooth and low-risk transition from VS 2005 to 2008 once the RTM version is available.
Applying it to the small project team first gave us some real-life experience:
1. VS2008 and VS2005 run nicely side by side
2. VS2008 talks naturally to TFS 2005, but installation of a separate TFS 2008 client is required (can be downloaded here).
3. For some period of time we kept few people using VS2008 and few VS2005, the only action required in order to share the solution was to change a single line in the solution file (and of course not to use the new language features :).
4. We still don't have TFS 2008 and Team Build 2008 deployed, so our option was to use the 2005 version. The sequence of steps we followed was to install 3.5 version of the framework onto build machine, copy 9.0 build targets from one of the dev machines, and in order to cope with the new language features compilation we used the following solution from Mitch Denny. For few weeks now we have not encountered any problem connected to the use of 3.5 build for our comprehensive range of non VS2008 solutions.

So far so good, though our progress while using more of the VS2008 features led us to some issues:

1. When using test projects created with VS2008, references to the test specific assemblies could not be resolved on the team build machine. A simple attempt to copy missing assemblies from the dev machine to the team build 2005 and registering in the GAC didn't help and this path anyway is a bit fuzzy because of a possible license implications. In the same way  as for the VS2005, the most straightforward approach is to install VS 2008 Team System for Testers on the build machine.
2. As VS2008 generates "accessor" assemblies to make possible unit testing of non public members, we encountered an issue with those assemblies generation for some of the interfaces. The error message is: "type '[Namespace].I[nterfaceName]_Impl' from assembly '[Assembly]_Accessor, Version=x.x.x.x, Culture=neutral, PublicKeyToken=null' does not have an implementation." We will return to solving this issue soon, meanwhile it is not critical for us to use accessor assemblies as it is a new feature anyway.
3. VS 2008 memory consumption seems to grow quite significantly under certain circumstances. The only pointer found is: which applies to the Beta 2, but it seems that issue is still in place. Same as for Beta 2, the experience of a user can be quite negative once VS goes beyond the regular memory set of 200MB.
4. Quite often, VS 2008 freezes for about 10-15 second after the build. This is an intermittent behaviour, and is very annoying when you build often. You can read about the issue here:
Although it seems that those post-build hangs go away after some time of working onto the same solution. Can it be caching problems or ...?

5. Though being offline from TFS is handled now better by VS 2008, it can be very non-intuitive from the user perspective. Following links can be of help to avoid some frustration while experiencing your first switch between offline and online:

I better stop with this second list right now as it has become one point longer than the positive one.

VS2008 and .NET 3.5 is the only natural way to progress in the Microsoft development field and I'm a firmly believer that time lost onto the above issues will be repaid in full by use of the new language and framework features. It may take a longer time for the SP1 release, but still service releases should be available sooner to solve the most annoying issues.

At the end just few links that I found particularly useful:
Daniel Moth's blog: Top 10 things to know about Visual Studio 2008 and .NET Framework 3.5 
VS 2008 Training kit:

P.S. You may install VS2008, but you should better keep VS2005 side by side if:
1. You work with Sql business intelligence projects (unless you use Beta of SQL 2008 client tools I guess)
2. You still create builds on TFS 2005 - you can't use VS2008 to create builds on TFS2005.

1 comment:

Freek Bos said...

Hey Stan,

I too got this "type '[Namespace].I[nterfaceName]_Impl' from assembly '[Assembly]_Accessor, Version=x.x.x.x, Culture=neutral, PublicKeyToken=null' does not have an implementation." error message after generating some unit tests (using Visual Studio 2008 NOT Beta). I fixed this issue by deleting the Test.cs file and regenerating it. Then I noticed in my solution explorer two accessor files in the Test references folder. I removed the newly created accessor file ([File]1.accessor) and restarted VS2008.
Now all is back to normal.

Maybe this helps you and others having this problem.


Freek Bos
The Netherlands