Scott Hanselman

VS2008 and .Net 3.5 SP1 Beta - Should You Fear This Release?

May 13, 2008 Comment on this post [23] Posted in ASP.NET | ASP.NET Dynamic Data | ASP.NET MVC | Learning .NET | Musings | Screencasts
Sponsored By

The Beta of .NET 3.5 and VS2008 SP1 is out. I'm sure everyone is blogging the heck out of it, so I'll try to add my own specific kind of value. There's fixes, many improvements (some subtle, some dramatic), and some new technology.

Should You Fear This (Beta) Release?

Maybe a little bit. Don't be afraid of the new assemblies or the bug fixes, I have found them to be very good and have no stability problems, but this Service Pack Installer might cause you some trouble in this beta, especially if you already have beta stuff installed over the top of VS2008RTM (the original version). It'll be correct when it releases later this summer.

Now, if you're going to decide to install a Beta of a Service Pack, do read the ReadMe and ScottGu's post. Go ahead, I'll wait here. OK, if you're already running some beta stuff, like the Silverlight Tools for Visual Studio, you'll want to uninstall that FIRST, otherwise you'll get an error and be upset. This will also be figured out when the SP actually releases, but be warned.

In this release, I have found the Progress Bar is wonky on XP and 2k3. It might say failed, and then succeed. Watch for the final message, not the bar. This will be fixed. Be aware also that it can be a long-ass install so get a coffee and pillow.

On the developer side, this is much more than just a "tightening of the screws" release, as it also kind of breaks a few rules and introduces some new stuff I've been personally waiting for.

What's New?

video-292ASP.NET Dynamic Data, ADO.NET Data Services ("Astoria"), ADO.NET Entity Framework (LINQ to Entities) are all additive. ScottGu has an extensive post detailing all the interesting bits.

Here's my explanation on ASP.NET Dynamic Data and why you might care. I've been doing talks around on ADO.NET Data Services, sharing my thoughts on how its RESTfulness relates to ASMX/SCF Web Services and WS-*.*, and I'm going to dig deeper into it this year because I think it's pretty sweet, especially if Ayende and I (mostly him) get it running over NHibernate. The ADO.NET Entity Framework can be plugged in underneath both ASP.NET Dynamic Data and ADO.NET Data Services, so taken as a whole, the data story is starting to be a lot clearer and more useful and I'm continuing to work/push for all this stuff over POCO (Plain ol' CLR Objects) whenever possible and/or appropriate.

For this release I've personally recorded seven (whew!) How-To Videos on ASP.NET Dynamic Data and the Dynamic Data Samples can be downloaded here. They videos and samples are short, sweet and to the point. I'm also hoping to do more integration-style videos showing all this stuff working together in something of a larger context.

There's also a bunch of fixes like VS2008 starts faster and the IDE is snappier in spots, the WPF Designers are beefed up, and a bunch of editor/designer bugs have been squashed.

Don't Mess With My GAC, Dude!

UPDATE: Patrick Smacchia, who certainly knows his product better than I, has posted a follow up with more detailed information about what's changed in .NET 3.5 SP1.

On the .NET 3.5 side of things, since this is an SP (Service Pack), yes, some stuff goes in your GAC and gets changed. However, the changes are completely additive. That means if an API's method signature has changed, that's a bug that we need to fix. It will be a fully compatible service pack release. It shouldn't break any of your existing code.

There's roughly 50 new or modified types throughout or about 80 to 100 if you count Dynamic Data. On the WPF side, there's a bunch of new stuff in System.Windows.Effects that will make WPF people happy. There's a new WebBrowserControl in System.Windows.Controls that's like "whew! about time!" as well as new DataBinding support in System.Windows.Data.

When folks tell me that things have changed, I personally don't always take their word for it, and would rather dig in and find out for myself what's changed in what assemblies.

As far as I know there are four major tools for doing Assembly Differences (some have been added since I blogged about Assembly Differences last year):

  • Libcheck - Over three years old, obscure, command-line, confusing, but still useful. I used this when diffing .NET 2.0 and 3.5 a while back.
  • Framework Design Studio - A recent tool by Krzysztof Cwalina, a personal hero of mine, along with his helpers Hongping Lim and David Fowler, it has both a GUI and a command-line option.
  • BitDiffer - This new tool from Greg Ennis is very polished and includes both a GUI and Command Line version. If it supported drag-and-drop it'd be even better. Unfortunately it crashed while I was trying to diff these assemblies.
  • NDepend - Last, but not least, a favorite tool of mine that I've blogged about and podcast about has been dramatically updated to do Assembly Diffs as well in a very cool way. The tool is very polished and lets you compare projects, dlls, supports drag and drop and is generally polished and wonderful, so I ended up using this tool.

So, Libcheck is frustrating, FDS is close, but only creates a text-based report on what's changed, BitDiffer crashed, and while NDepend does have some weird painting issues, but I was able to create this diagram with NDepend:


Here's a close up (you can get the whole picture by clicking on it). In this example I was hovering over a method that was blue, and got a tooltip indicating that a method has changed in that type.


I created the graphic by getting the DLLs from the GAC on a .NET 3.5 machine and the DLLs from a .NET 3.5 SP1 machine. Then I put them in two different folders on a machine that *did not have .NET 3.5 on it* to avoid any wackiness. Then I ran this Code Query Language (CQL) query:


The results of that query were displayed in a number of ways, the most interesting one being the Metrics View. I set the metric to show the # of methods. In this example, 1 method = 104 pixels. Blue methods are CHANGED methods. Then I took 2 screenshots while scrolling horizontally and stitched them together in Paint.NET.

You'll see when you look at the diagram that there's some fixes here and there, but from a visual 20,000 foot view, perspective, nothing major that looks like more than bug fixes or smells of a systemic issue. Focusing on the Bug Fixes, it's onesy-twosy, bug fixes within a method here and there. The complete list of fixes is here and here.

BTW: I'm a huge NDepend fan, but I'm not associated with company at all, other than being a fanboy.

My Conclusion

Now that you've been both educated and warned, if you're not willing to wait a bit, you can download the VS2008 SP1 BETA here. Remember, this is a BETA of a Service Pack, so I'm personally continuing to install only on Virtual Machines that have VS2008 RTM.

If you have anything Beta that's layered on top of VS2008, like the Silverlight Tools, or something like that, back those off first, before installing this SP, and again, read the readme, as most known to-be-fixed issues are called out there already.

As ScottGu says:

"It will be a fully compatible service pack release.  We plan to ship the final release of both .NET 3.5 SP1 and VS 2008 SP1 this summer as free updates. "

So I'm feeling good about the final release later this year. But, for this beta, I don't want to take any chances with installer issues so it just seems prudent that I keep my primary machine on the initial version of VS2008/.NET3.5 until this SP1 is released. Have fun!

Related Links

Technorati Tags: ,,

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
May 13, 2008 1:30
Can VS2008 Beta Add-Ons be (re)installed after installing .NET 3.5/VS2008 SP1? (e.g. Silverlight Tools && SDK)
May 13, 2008 2:15
Do you know if this means the routing engine is pretty much locked down? Really looking forward to putting it through its paces.
May 13, 2008 6:42
Finally support for Classic ASP is back! Thanks to whoever made that go live. Now I can stop trying to find my old InterDev disk.
May 13, 2008 7:09
Will VS2008 SP1 contain the C++ Feature Pack (TR1)? Or is it a separate "sku" requiring a separate install?
May 13, 2008 8:24
I have installed .Net 3.5 SP1 and VS2008 SP1 and now my MVC Web Application don't work. I even tried to build a new MVC Web Application and when I try to run it, I get a blank screen. Is there a work around for this?
May 13, 2008 9:52
TonyB - There's details on how to get MVC working under SP1 on Phil's blog here.
May 13, 2008 10:44
does it has any effect on visual studio 2008?and any information of when the final release of this sp will be out?
May 13, 2008 10:57
Microsoft is shaking well before using !!
May 13, 2008 12:26
Honestly, there are so many installation caveats with this release (and you just KNOW people are going to ignore them, install it anyway on a 'production' dev machine, and then whinge at MS), I wonder if MS should have just left it in the oven to bake a little bit more?
May 13, 2008 17:55
Scott, really great news. There is just one huge problem I can see. The suffix "SP X" seems to fall off a lot when talking about technologies, which makes one draw the conclusion that some people will have a lot of problem tell .NET 3.5 and .NET 3.5 SP1 apart.

Most importantly I can see people thinking "it's just a service pack, I'll deal with it later, it works perfectly now". A better name would be to call it 3.6 or 3.55 or something that makes people really get that there are A LOT of improvements and additions to .NET 3.5 SP1 (which I hope you will not call it).

Best regards.
May 13, 2008 18:38
Just wanted to let you guys know about my tool to compare Assembly Differences. It's not as fancy and polished as the others, but it's free. Just looks at the exposed API and shows a Tree view of differences. This tool uses reflection to inspect the libraries. I built it a while back when I could not find one, and libcheck is too much a chore to use. If it gets more popular, I would invest more time on it.

May 13, 2008 18:57
Seb - Tell me about it. This should TOTALLY be called 3.6. I think the naming is totally wrong.

Mojtaba - Nope, I think that the date won't slip, but I'm guessing. I'm not on the team.

James - I would tend to agree, but how else do we get feedback and bugs unless folks try the beta? We can't be the only ones who test.

May 13, 2008 19:31

Well if it is a SP, I don't understand why they release a beta SP with know issues. The whole Idea is to fix problems, not create more...

Why don't they fix them first?

Thats why I won't try it...

May 13, 2008 19:47
You wrote: "Then I took 2 screenshots while scrolling horizontally and stitched them together in Paint.NET."

Actually there is an option in NDepend to take 'poster snapshot':
Tools -> Snapshot -> Create a Snapshot of the Metric View

This let you create a poster of the metric view, up to 9999 x 9999 pixels.

The same with:
Tools -> Snapshot -> Create a Boxes and Arriws Dependencies graph
Tools -> Snapshot -> Create a Snapshot of the Dependencies Matrix
May 14, 2008 0:04
Just wanted to say thanks for the Dynamic Data screencasts. They are short, sweet and to the point. No idle time, and very much information conveyed in very little time, but still easy to follow. Now could you please teach all the other people at MS how to do proper screencasts ;-)
May 14, 2008 1:02
Btw, you don't need to extract .NET Fx asm from the GAC.

A copy is available here:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5
But of course, not stored side by side.
May 14, 2008 1:53
It's kind of weird to have a huge 3.5 release and then add some high level stuff like Entities on top of that in a SP1 release. The versioning of .NET is really strange.

I'm just a bit sad because there's no many to many support in LINQ to SQL and the whole ASP.NET Ajax product is developing sloooooow when compared to other javascript toolkits.
May 14, 2008 2:01
Scott, do you have any contact with the ASP.NET Ajax team at Microsoft? I guess for the MVC project it's important to have contact with them right? Are they perhaps working on ajax helpers for MVC or is that not how it works?
May 14, 2008 8:54
dll hell is being replaced with versioning hell. Is anyone ou there building a database to keep track of all these versions and features list, addons, public bug fixes and who knows what else. Remember in any production environment depending on black boxes (third party) controls and frameworks is always risky. This installations should be straightforward process.

Thanks for post Scott. This gives us a good heads up.

I just have one question, when and how do you get the time to try all this out? Are you outsourcing all this? ;)
May 14, 2008 19:51
Awesome! I'm really looking forward to all the WPF and speed improvements!
May 15, 2008 12:02
Mike you might want to head over to Phil''s blog, I know AJAX anhd MVC integration are a hot topic for them right now...oh and thew 'AJAX team' is the same team as the ASP.NET team and we all talk all the time about integration betweren products. If you think 3.5 SP1 is good well, just wait for the crazy stuff we're planning now!
May 16, 2008 0:26

Great post on the new SP. Also I really enjoyed the screen casts on Dynamic Data. I remember playing around with an early release of this when MVC first showed it's face. I think it has been largely overlooked because of MVC and the dynamic data seems very powerful an quite a time saver. My question for you though is considering the template architecture do you have any advice on Unit Testing a site that uses Dynamic Data technologies.....More screencasts on this topic would be wonderful :)

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.