Thursday, December 18, 2008

.NET Framework 3.5 Family Update - My Peek inside the .NET 2 update

UPDATE:

KB 959209 has appeared! (was published on December 20, 2008).
This KB point you to 3 other KBs for the 3 parts of the Family Update:

  • 958481 – .Net 2.0 SP2 update
  • 958483 - .Net 3.0 SP2 update
  • 958484 - .Net 3.5 SP1 update

(Those docs are very similar each to the other, telling about the same issues)
Better late than never.

ORIGINAL POST: 

As I stated in my previous entry, Microsoft has uploaded this Family Update, with the usual missing of a description document what went into this update.

The only thing they said was:

The Microsoft .NET Framework 3.5 Family Update provides compatibility roll-up updates for customer reported issues found after the release of Microsoft .NET Framework 3.5 SP1

So I have decided to peek inside.

Notice:
I don't take any responsibility on the following information. I might have done something totally wrong in the way I have extracted the update and got wrong info from within. You take all the risk on yourself if you use this info.

Steps:

Now that we done with those legal issues, what I have done is extract the .msp file from within the the NDP20SP2-KB958481-x86.exe.

Then, using MSIX tool, I have extract the files from the .msp file.

Then, extract the patch.cab file.

Next step was renaming the dlls I have found to have the correct extension (which was missing)

Next, for each dll (only managed), using Reflector, disassemble and export the source files.
Doing the same last action to the original dlls from the .NET GAC.

Using Araxis Merge to compare the source.

Please remember that I have done the investigation only for the .NET 2.0 SP2 Family update.

Non managed dlls in the update: (can't say what was changed there)

  • aspnet_wp.exe
  • mscordacwks.dll
  • mscorjit_dll
  • webengine.dll

Managed dlls:

  • mscorlib.dll
  • System.Data.OracleClient
  • System.Xml
  • System.Web

Main changes in those Managed dlls:

(I will just write the changes in short, I don't have more info to share- this would required days of reading Microsoft's code).

System.Web:

  • Better handling of IIS Rewrite Module in multiple classes(coockieless security, IIS7 worker request, HTML Form, Client Path)
  • Process Custom Browser Files - ignores hidden files in the directory (at least this what it's look like)
  • Something in state cache handling.
  • Change in Sort entries in control builder.

System.Xml

  • xml CanWrite check instead of GetSetMethod in one method.

System.Data.OracleClient

  • RollbackDeadTransaction and some more Transactions code was added to a method .

mscorlib

  • Handling Delegate & MulticastDelegate Combine null issue better

the Version was changed from 2.0.50727.3053 to 2.0.50727.3082.

wow, this was long.
Hope you enjoy it.

I still wait for the missing KB doc from Microsoft...

If it won't come soon, you might find here the same analysis to the 2 other updates (I don't promise).

Half baked Download page - .NET Framework 3.5 Family Update

UPDATE:

KB 959209 has appeared! (was published December 20, 2008).
but you can still watch the funny movie

 

Original Post:

I'm monitoring the Microsoft downloads site for new download almost daily.

Today, I have found a new interesting download:

Microsoft .NET Framework 3.5 Family Update

Actually, there are 3 files inside this page, one for each framework version part

  • 2.0 SP2
  • 3.0 SP2
  • 3.5 SP1

What is inside those updates? 
Very good question.

This is what I meant by "Half baked"...

There is a reference to a knowledge base document...

Please see the Knowledge Base Article KB959209 for more information.

But at the writing time of the blog, this document doesn't exist!

So instead telling you what goes inside those updates, you can watch a very funny movie from the company I work for.

Wednesday, December 17, 2008

Funny commercial or TFS DB upgrade?

Hi again

This time I'm not here to speak about technology, but to tell you about a very funny commercial produced for the company I work for, about American travel to Paris...

You know what? maybe I'll use the opportunity to share with you some technology issues anyway:

I was in the middle of replacing the machine of our TFS Data layer server, and got to the step where you should tell Sharepoint Services that you have switched Database...

I was using the instruction from "How to Restore Data for Team Foundation Server to a Different Server" document from MSDN:

Type the following command:

stsadm –o renameserver –oldservername
OriginalDataTierServerName -newserver NewDataTierServerName

So I just copied the line from the doc, and paste it into the Command Line Console.
I have changed the old & new server names, and... It didn't worked.

I got "Command line error".

After struggling this for 15 minutes, I found out there is a mistake in the doc:
The second parameter should be "-newservername" and not "-newserver".

So now it worked? of course not!

Struggling again, until I found one comment in WSS Blog from that guy "paisleygo", who says:
There is also the issue with the "typing" the command rather than pasting it. That part is critical - the paste seems to mess up the hyphen character. - So once I fixed all the hyphens in my bat file - things worked great!

Thanks paisleygo!

So my teacher was right all this time: "READ THE INSTRUCTIONS!"
Yes M'em - it was written in the doc to TYPE the line - not to copy it...


Thursday, October 02, 2008

Rosario is Visual Studio Team System 2010 :-(

With using only 4 digits, Microsoft made me disappointed.

2010.

I really needed it to be 2009... (Mainly for Requirement Management)

Anyway - if you want to get an overview, see: Visual Studio 2010 and .NET Framework 4.0 Overview

Sunday, August 10, 2008

Olympics - No, Advertisement - yes?

I wanted to see some online videos from the Olympics game, and I knew NBC should have a great site for this, because Microsoft published the fact that NBC plans to use Silverlight to share the Olympics videos.

So I went into http://www.nbcolympics.com/video/player.html.

I got an advertisement.
Ok, we already got used to the fact that those web sites should earn money in this way or another.

Then I got the following message:

We're sorry, NBC is required to restrict this video to viewers within the United States

"We're sorry, NBC is required to restrict this video to viewers within the United States"

To tell the truths, I'm used to this too.
What can I do, I really do live outside the US.

So what's wrong with this?
The fact that I was good enough to view the advertisement.

Couldn't you check if I'm from within the US before wasting my time with this Ad?

Monday, June 30, 2008

Multiple Visual Studio Development Server / ASP.NET Development Server

Have you upgraded to Visual studio 2008?
If so, you might have meet the following problem:

  • You have a solution with more than one ASP.NET Web Application project.
  • At least one of those web projects is configured to Use Visual Studio Development Server.

Now, you try to debug one of those web projects. Only one.

you do this by one of those two options:

  • right click the project --> click debug --> start new instance
  • If your web application already runs (usually on IIS settings) --> attach to process.

Now comes the surprise:

image
Instead of getting one Developer Server icon on the taskbar, you get multiple instances!
(one for each web project configured to work with the Development server)

Now, this is not necessarily a bad behavior, as it doesn't actually start all your web projects (which might finish with a lot CPU and Memory load). It is just open a port for those applications. The first time you request a page is the first time the application loaded.

However - it is not the behavior most of us want.

 

The Solution:

I guess Microsoft's developers couldn't hide this setting in a better place...

  1. Stand on the web project (on the solution explorer)
  2. From the menu bar --> View --> Properties Window
  3. on the "Always start when debugging" change the value to False.

image

If you work in a team with source control you'll probably want this setting checked in for all users to get them... but it won't work, as this setting kept on the local .csproj.user file.

It's funny (or it would be if it wasn't sad) that also it is kept in the .user file, it still will ask you to check out the file.

To get over this check out problem, you'll need to uncheck the "Apply server settings to all users (store in project file)" setting on the web tab, in the project properties page, and check in the project.

Hope it will help someone...

Thursday, June 19, 2008

Building a Specific Version with Team Build 2008

You need to rebuild your code as it was at a specific point in history (by a label or a changeset)?

With TFS 2005 you would have needed to change the core implementation of Team Build.
See Aaron Hallberg's "Building a Specific Version with Team Build" blog.

But with TFS 2008 Microsoft already put this logic in, and even gave a GUI to use it:

Go to Team Explorer 2008 --> Builds.
Right click the Build definition you want to build.

click Queue New Build.

image

On the pop up window in MSBuild command-line arguments (optional) write:

/p:GetVersion=version

image

Where version is the Versionspec by the following syntax:

image

Hope it will help someone.