A big dose of .NetFrustration this morning.
When you upgrade an assembly from version 1.0 to version 1.1 you are likely to get a lot of squiggley blue lines and warnings such as:
'Public Sub Transform(input As System.Xml.XPath.XPathNavigator, args As System.Xml.Xsl.XsltArgumentList, output As System.IO.TextWriter)' is obsolete: 'You should pass XmlResolver to Transform() method'
OR:
Public Function Transform(input As System.Xml.XPath.XPathNavigator, args As System.Xml.Xsl.XsltArgumentList) As System.Xml.XmlReader' is obsolete: 'You should pass XmlResolver to Transform() method'
OR worse yet:
'Public Sub Load(stylesheet As System.Xml.XmlReader)' is obsolete: 'You should pass evidence to Load() method'
Google turned up blank, MSDN turned up blank, but I finally got rid of the warnings, by writing stupid code.
(Read on for some dodgy solutions and some stern lectures. :+))
(Comments disabled due to spam)
'Dan F' on Sun, 15 Jan 2006 19:22:43 GMT, writes:
Almost 2 years on, and this post is still going strong. You're the number one google hit for "you should pass xmlresolver" (with quotes). How spesh do you feel :)
Thanks Leon!
URL: http://www.redgum.com.au
'harveysburger' on Sat, 12 Nov 2005 20:08:34 GMT, writes:
thanks for this easy fix :)
thats hilarious...
, nothing, nothing....
'ricpue@hotmail.com' on Sat, 12 Feb 2005 19:57:06 GMT, writes:
Funny and good.
'secretGeek' on Wed, 06 Oct 2004 20:43:09 GMT, writes:
cheers Farhan!
and Thrain: i'm glad to know that this post is helping the peoples of middle earth.
URL: http://secretGeek.net
'Thraïn' on Wed, 06 Oct 2004 10:31:05 GMT, writes:
Leon,
My search for a solution for the same problems ended after 3 hours with your post. Thank you so much!
Greetings
'Farhan Ahmad' on Sun, 26 Sep 2004 23:51:13 GMT, writes:
Hey Leon,
Thanks for this post! It saved me quite some time and frustration!
Thanks!
URL: http://www.farhan-ahmad.net
'secretGeek' on Mon, 26 Apr 2004 05:58:06 GMT, writes:
Thanks Kathleen! I agree that they should make old methods obsolete -- but I think that the documentation they provide for these upgrades is quite poorly thought out.
The comment 'You should pass XmlResolver to Transform()' (for example) is a redundant comment, since the intellisense will show you that an XmlResolver parameter is now required. What I think the upgrade comments should do is point you toward documentation that explains:
Why the change was made.
How to cater for the change (giving practical examples).
What benefits you will get from making this upgrade.
Generally the comments they choose to include just have a statement like 'Hey, don't use this, use that instead' -- in this era of secure computing we're expected to know what we're coding and why -- not just to blindly follow. SO i think this is one little area where microsoft could pay more attention to the needs of developers.
For example, looking up what an XmlResolver is didn't do anything to tell me why it was previously unimportant but now is important. Clearly there's a design design they've made under the covers -- but there's no clue as to what it is. Okay, my XmlDocument didn't have any external references that needed to be resolved -- so a resolver of nothing seemed fine. But it felt wrong -- they've chosen to include it for a reason I guess, so i felt like there was something I was missing.
Having said that, i do think that MS generally do an excellent job of looking after developers -- this just seems to be a chink in the armour. A place where the developers are taking shortcuts and noone is stopping them.
cheers
lb
URL: http://secretGeek.net
'Kathleen Dollard' on Sat, 24 Apr 2004 23:02:22 GMT, writes:
I know this looks stupid, but I think there's some logical reason behind this. The new parameters are important, quite important in a few scenarios. If they had not made the old ones obsolete, there would have been a gazillion and you were forced to look at this issue. I actaully investigated what the resolvers were before making the same changes a year ago.
While the CType(Nothing, whatever) approach feels like a hack, it appears to be the appropriate way to resolve overloads anytime Nothing is confusing the issue.