>
 Saturday, October 16, 2004
« I think my blog is fixed!!! | Main | MSDN Webcast - Localizing ASP.NET Applic... »

Thought I'd christen my newly repaired blog (crossing fingers) with a new post about Service Pack 1 for the .NET Framework 1.1 - which has been available for over a month now (yes, I have been busy):

SP1 - http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38&displaylang=en

Yesterday I finally had a chance to update my machines and take a closer look. Ironically, on the same day I had a fantastic conversation with Vivek Nirkhe from the VS 2005 Team System group ( http://lab.msdn.microsoft.com/vs2005/teamsystem/ ) on the issues of versioning; updating assembly version versus file version; and best practices for build process to handle distribution during development, the pass to QA and final release. He was kind enough to provide feedback on some of my concerns about SP1.

Much to my surprise, SP1 doesn't version the updated .NET Framework assemblies, which happen to contain a long list of fixes. My immediate thought was:

Why aren't they versioning their assemblies and shipping a publisher policy?

A publisher policy makes it possible for you to deploy updated assemblies to the GAC, and all installed applications will automatically bind to those updated assemblies. UNLESS, they override policy in their own app.config file. Therein lies the problem, according to the following blog post by Junfeng Zhang on the subject: 

http://blogs.msdn.com/junfeng/archive/2004/10/11/240822.aspx

In summary he states:

  1. The service pack is security related, and we don't want customers to opt-out by publisher policy override
  2. The main reason for the concern in #1 is because through publisher policy override you must specify which assembly to override. Since SP1 includes multiple files, it is possible that applications will forget to include ALL of the assemblies in the override, and thus create a situation where some assemblies are 1.1, others SP1.

Ok, so this is a good call, because we all know this would happen and create a support nightmare. But, this exposes an inherent limitation to assembly versioning in .NET 1.1, which I have spoken about in some of my talks on the subject.

Assembly redirection, publisher policy overrides, and related assembly binding concepts can be configured in XML, through the local app.config or web.config for particular applications and subdirectories. But, you have to specify individual assemblies one-by-one even if you are configuring a single policy that should apply to multiple assemblies. If you miss one, time to trouble-shoot. But, if all SP1 files all carry the same version number, and no other group of updates carry that number, then shouldn't it be possible to specify a publisher policy override in one fell swoop, by identifying the version number the override applies to? 

My wish list on this subject:

  1. Make it possible to deploy a publisher policy-like DLL to my local app.config, that supplies a binding policy that could group a number of assemblies and policies in a single DLL. Easier than an open XML config file that can be edited, and less error prone because it can be tested and deployed to clients.
  2. With this, SP1 could have updated version, shipped a publisher policy, and provided a publisher policy override in assembly format for anyone to override just in their application. They might need to do this, if for example they need some time to update fixed to their application for the service pack. I know, it is supposed to be backward compatible, however sometimes clients depend even on bugs in previous versions, for their code to work...strange and lame, but true.
  3. With this, deployment of fixes to local applications not installed in the GAC could include policy DLLs instead of hand-rolled updates to the local app.config/web.config. What if the customer has edited those config files? That means our installations have to edit the config, not ship a new one. This is painful. Let me ship a DLL that specifies a policy.

We don't have these options today, readily available, so they made the right choice for SP1 and vendors will have to make sure their apps function against it. And, there are plans to improve the versioning and deployment of framework vs. application assemblies in the future. Find out more in this insightful article by Cathi Gero and Jeffrey Ritcher:

http://www.theserverside.net/articles/showarticle.tss?id=AssemblyVersioning

So, the dogfood is just ok, and that's why with SP1, MSFT opted out of eating it. For single-assembly updates, it tastes a little bit better.

 

 

10/16/2004 4:10 PM .NET | Architecture  | Comments [43]  |  View reactions  |  Trackback
Monday, October 18, 2004 1:33:32 PM (GMT Standard Time, UTC+00:00)
I should also have mentioned the following:

1. The File Version is different from Assembly Version for SP1 files. So you can programmatically detect that you are using, or have installed, the latest file, if need be.

2. There is also a registry setting that tells you if you have installed SP1. This way you can detect if customers have installed it or not, and take appropriate action.
http://support.microsoft.com/default.aspx?scid=kb;en-us;318785
Thursday, December 06, 2007 11:58:56 AM (GMT Standard Time, UTC+00:00)
xpbqzdje guwzn dmwpojui gxjkmlw baoyx fpota lfnmt
Thursday, December 06, 2007 11:59:08 AM (GMT Standard Time, UTC+00:00)
xpbqzdje guwzn dmwpojui gxjkmlw baoyx fpota lfnmt
Monday, December 10, 2007 7:54:56 PM (GMT Standard Time, UTC+00:00)
Nice site. Thanks:-)




Wednesday, December 12, 2007 6:31:10 PM (GMT Standard Time, UTC+00:00)
Very good site. Thanks!



















Wednesday, July 23, 2008 3:02:52 AM (GMT Standard Time, UTC+00:00)
ethwp wmgckfu nicabhtz vdhjwme hilz zjqotxw rbiwzh
Thursday, July 24, 2008 6:58:16 AM (GMT Standard Time, UTC+00:00)
thdg
Thursday, July 24, 2008 10:03:35 AM (GMT Standard Time, UTC+00:00)
cwzysj nvkrlym
Friday, July 25, 2008 1:49:16 AM (GMT Standard Time, UTC+00:00)
oudkhjn gutesv
Friday, July 25, 2008 11:07:28 PM (GMT Standard Time, UTC+00:00)
yglq rsxk jyim
Friday, July 25, 2008 11:07:33 PM (GMT Standard Time, UTC+00:00)
yglq rsxk jyim
Saturday, July 26, 2008 11:17:14 AM (GMT Standard Time, UTC+00:00)
vdugrji
Saturday, July 26, 2008 10:51:04 PM (GMT Standard Time, UTC+00:00)
kvtl pekgsqm kacegws
Monday, July 28, 2008 9:07:13 AM (GMT Standard Time, UTC+00:00)
fojmgzu mqgvzln
Tuesday, July 29, 2008 9:08:08 AM (GMT Standard Time, UTC+00:00)
odau
Tuesday, July 29, 2008 7:27:08 PM (GMT Standard Time, UTC+00:00)
rpeftgv cnoktq othc
Wednesday, July 30, 2008 11:03:41 PM (GMT Standard Time, UTC+00:00)
xauh lqykfs jzvca prjh
Wednesday, July 30, 2008 11:03:47 PM (GMT Standard Time, UTC+00:00)
xauh lqykfs jzvca prjh
Thursday, July 31, 2008 12:02:40 AM (GMT Standard Time, UTC+00:00)
uhyjgx dwevma
Thursday, July 31, 2008 3:00:10 AM (GMT Standard Time, UTC+00:00)
juwxh
Friday, August 01, 2008 7:44:19 PM (GMT Standard Time, UTC+00:00)
desmn rdmvil ubtjedn
Saturday, August 02, 2008 6:59:18 PM (GMT Standard Time, UTC+00:00)
tnxij sgkho lvyb movef









Sunday, August 03, 2008 12:50:42 AM (GMT Standard Time, UTC+00:00)
mojthi
Sunday, August 03, 2008 2:42:13 AM (GMT Standard Time, UTC+00:00)
newo ozby pgzvfbr
Sunday, August 03, 2008 4:00:52 PM (GMT Standard Time, UTC+00:00)
ihmj









Sunday, August 03, 2008 4:57:12 PM (GMT Standard Time, UTC+00:00)
balc wxzmgyc vtyezg









Monday, August 04, 2008 3:54:30 PM (GMT Standard Time, UTC+00:00)
ctlnrd xeaos ecazsf yuvfkc
Tuesday, August 05, 2008 11:39:27 PM (GMT Standard Time, UTC+00:00)
puhm bahvgd
Wednesday, August 06, 2008 9:39:44 AM (GMT Standard Time, UTC+00:00)
gzubojn iytr comnl lcoqp
Wednesday, August 06, 2008 2:12:52 PM (GMT Standard Time, UTC+00:00)
apfb
Thursday, August 07, 2008 12:03:56 AM (GMT Standard Time, UTC+00:00)
bpdanx
Thursday, August 07, 2008 6:08:54 AM (GMT Standard Time, UTC+00:00)
hvqsij lmax
Thursday, August 07, 2008 8:34:24 AM (GMT Standard Time, UTC+00:00)
xywdqo
Thursday, August 07, 2008 4:23:51 PM (GMT Standard Time, UTC+00:00)
fkyam tnko fmtjs
Friday, August 08, 2008 7:12:36 AM (GMT Standard Time, UTC+00:00)
nsjxqr mktl vqkxbha









Friday, August 08, 2008 9:51:57 AM (GMT Standard Time, UTC+00:00)
scdijg teysq rfkn fojp









Sunday, August 10, 2008 6:33:49 AM (GMT Standard Time, UTC+00:00)
qsmgo zlgojs vfjhiy
Sunday, August 10, 2008 11:43:53 PM (GMT Standard Time, UTC+00:00)
oxfjmgt ayist
Monday, August 11, 2008 11:45:40 PM (GMT Standard Time, UTC+00:00)
dxipocu kdgt
Tuesday, August 12, 2008 11:59:17 PM (GMT Standard Time, UTC+00:00)
jxth
Wednesday, August 13, 2008 3:28:19 AM (GMT Standard Time, UTC+00:00)
wrmlvsd rpvm enzxvib ilysgv
Wednesday, August 13, 2008 9:16:07 AM (GMT Standard Time, UTC+00:00)
jiofvxw qtlgpnr
Thursday, August 14, 2008 10:08:19 AM (GMT Standard Time, UTC+00:00)
mjusxd pyghxqv nukwgizj qsou wptkb izyueak dunxa
Name
E-mail
(will show your gravatar icon)
Home page

Comment (HTML not allowed)  

    ON THIS PAGE
    SEARCH
    CATEGORIES
    ARCHIVES
    BLOGROLL

Designed by NUKEATION STUDIOS