.NET 3.5 SP1: Changes Overview

For the curious, here are some informations about the brand new .NET 3.5 SP1 changes, compared to .NET 3.5. These results were obtained with the assembly comparison feature of the tool NDepend


# Assemblies    112
# Namespaces    919 to 935      (+16   +1.7%)
# Types    39 988 to 40 513      (+525   +1.3%)
# Methods    387 421 to 386 790      (-631   -0.2%)
# Fields    241 567 to 246 795      (+5 228   +2.2%)
# IL instructions    8 598 933 to 8 620 940      (+22 007   +0.3%)


1.393 new
public methods:  



79 new
public types:  



No public types removed (hopefully!)



14 non-public methods became public: 

SELECT METHODS WHERE IsPublic AND VisibilityWasChanged AND IsInNewerBuild


6.384 methods
where code was changed: 



2.485 types
where code was changed





The list of
assemblies we consider is made of 112 assemblies


Here is a 9000×1200
poster where methods where code was changed are located in blue (we degraded
the quality to have a 2MB image file instead of 13MB):



And here is a list of coupling update for assemblies:

  1. A blue cell means: {the X Assembly} is using {the Y assembly}.
  2. Weight of a blue cell means: W members (methods and fields) of the {the X Assembly} are used by {the Y assembly}.
  3. A green cell means: {the Y Assembly} is used by {the X assembly}.
  4. Weight of a green cell means: W methods of the {the Y Assembly} are using {the X assembly}.
  5. A black cell means: {the X Assembly} and {the Y assembly} are using each others.
  6. A red tick on a cell means: the coupling has been changed.
  7. A red tick with a plus on a cell means: the dependency has been created.
  8. A red tick with a minus on a cell means: the dependency has been removed.
  9. An assembly name underlined means that its code has been changed.



This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://oixapey.com/rqaars/5.html Pharma589

    Very nice site!

  • http://search.live.com Google

    If you do not wish to receive similar messages please inform us on it by mail ban.site[dog]gmail.com

  • http://opxyiea.com/yoyrryo/5.html Pharme68

    Very nice site!

  • jb

    I can’t find anyone talking about what happens when you compile an app on a .net 3.5 service pack 1 machine and deploy it to a server that doesn’t have sp1 installed? I support multiple apps and I want to upgrade to my local workstation & visual studio to sp1, but I don’t know what will break on my non-sp1 servers.
    What are the compatibility issues and is there a way to “target” 3.5 vs 3.5 sp1?



  • Alexandre Grenier

    Andrei… that’s naturally what should happen when you refactor.

    Let’s say you have 20 classes with a number of methods that do some similar work in different parts of different methods… refactoring, you take those bits and extract to methods, within the class…

    On the next iteration, you realise these methods do the same work, for example the test cases are identical… you would naturally take all those methods and pull them to a specialized class. Or perhaps add an inheritence level… That’s how you end up with more classes, less methods.

    Also, with lambdas / anonymous methods, I can see a lot of smaller functions getting eliminated… Just like generics eliminated many type-specialized classes when .Net 2.0 came out.

    I think it also ends up happenning because of how responsability is distributed across people and teams, but that’s another story… but in my experience, the more people you have on a project, the more classes you end up with, and also some duplication, and then after deep code reviews, the classes usually stay, but the duplication is removed.

  • http://andreir.wordpress.com/ Andrei Rinea

    There is something I do not understand :

    # Types 39 988 to 40 513 (+525 +1.3%)
    # Methods 387 421 to 386 790 (-631 -0.2%)

    How did methods decrease when the number of classes increased? I mean it’s not impossible but it is at least weird.

  • John

    Seems like some new assemblies are missing from the graph, like System.Data.Entity.dll

  • http://blog.madcookie.net/ Mike

    I second the DeepZoom idea. It is interactive enough for me.

  • http://www.NDepend.com Patrick Smacchia

    Ryan, graphics are not silverlight but all the interactive features you want are available in the rich application VisualNDepend.

  • http://www.nimblecoder.com/blog/ Ryan Van Slooten

    It would be really cool if the graphic was a Silverlight control with interactive features such as lookup and search. DeepZoom would be decent, but it would be better if it was interactive.

  • Deepm

    Filip: I was not able to reproduce this issue at our end. Could you email me more about the LIstview disappearing issue. My email is my name at microsoft.com

  • Coder

    It looks scary. There a lot more methods and a lot less information about the behavior of a method than there used to be in Win32.
    Multiply the-not-so-well-defined-behaviors with 386,790 methods, what do you get?

  • http://www.NDepend.com Patrick Smacchia

    Logan, you are right. What I meant is that the ‘is using’ scenario is handled by a blue cell and the ‘is used by’ by a green one. Meaning that the matrix is symmetric, each blue cell correspond to a black cell.

    The advantage of doing so is that you can read that Wx members of the asm X are using Wy members of the asm Y, where Wx is the weight on the green cell and Wy the weight on the blue cell.

  • http://www.feedbeast.com/ Logan

    Don’t “{the X Assembly} is using {the Y assembly}”
    and “{the Y Assembly} is used by {the X assembly}”
    mean the same thing? I think you flipped both the wording and the variables when you meant to only flip one.

  • http://shamanovsky.com Victor Shamanovsky

    the best keeps getting better, thanks Microsoft.

  • http://www.NDepend.com Patrick Smacchia

    Riix, download results as excel sheet here:

    NDepend can export results to HTML, XLS, XML and TXT

  • riix

    is possible to have an excel sheet of these changes instead of zipped html pages? (for presentation to mgmt). merci d’avance.

  • Filip C

    Did someone else his ListView disappear in the Toolbox after the installation of SP1?

    screenshot: http://www.wazig.be/_ev/upload/633543045261874187_ListView-Dissapeared.jpg

    How to solve this?

  • http://www.eqosoft.com Ray Akkanson

    I like to know more about WPF and ADO.net entity framework changes..

    Ray Akkanson

  • http://www.NDepend.com Patrick Smacchia

    Christian, jeg can snake Norsk in litten :o)

  • Christian

    @Marc Chouteau + @Patrick Smacchia: Hvorfor skriver dere på fransk? Kan dere ikke Norsk?

  • http://www.ant.com.kh/ Sambo


  • Byron

    You need to post that using DeepZoom

  • http://eugenioestrada.es/blog Eugenio Estrada

    Thanks you for your reply.

    It’s very interesting… I wanna see the news on WPF, I read that it includes lots of performance improvements… Do you know something?

    You can contact me on the ‘eugenioestrada.es’ mail acount ‘mail’. (The mail account is new and i don’t wanna fill it with spam, hehe)

    Best wishes!

  • CV

    The matrix image looks like MS has succeeded at creating a glider gun for the Game Of Life.


  • http://www.NDepend.com Patrick Smacchia

    oui c’est vrai cela ne m’avait pas frappé mais tu as raison Marc,
    cela dit, un type peut aussi etre une enulmeration ou uin delegué

  • http://marc-chouteau.blogspot.com Marc Chouteau

    C’est vraiment excellent comme comparaison, merci Patrick, je suis etonné sur le nombre de methodes (-631) alors qu’il y a (+525) types supplémentaires. Est-ce à dire qu’ils utilisent de nouveaux patterns 😉