Jesse Kaplan -- Will your .NET 1.1 apps work on 2.0 or vice versa?
- Posted: Jun 01, 2005 at 10:20 AM
- 56,105 Views
- 17 Comments
Loading User Information from Channel 9
Something went wrong getting user information from Channel 9
Loading User Information from MSDN
Something went wrong getting user information from MSDN
Loading Visual Studio Achievements
Something went wrong getting the Visual Studio Achievements
Right click “Save as…”
Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation,
please create a new thread in our Forums,
or
Contact Us and let us know.
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
I've tried all my ASP.NET apps (15+) out on 2.0, and in about five only minor, straightforward changes were necessary to get them working. Some that crept in from the conversion tool. Altogether the feeling I get is, "It just works!"
So I'm sold 100% on Whidbey. I hope that there aren't any crazy hacks going in just to try to maintain compatibility with 1.1. 2.0 adds lots under the hood, and I actually expect some things to break. And it's all for the better. Now I've got generics at my disposal! Thanks, CLR guys for that. I know that wasn't easy.
I've also got the better ASP.NET architecture with partial classes. I can now revise lots of my existing code to leverage some of the new controls, and better compatibility with Netscrape and Firefox.
Thanks for bringing us a great update!
-Lorin
Much appreciated.
Consider a .NET 1.1 control trying to run against a machine that has the .NET 2.0 Framework installed.
From the POV of the control author, this requires "forwards compatibility" on the part of the control. ("Backwards compatibility" for the control author would be if the 1.1 control worked on the 1.0 Framework.)
From the POV of the .NET team, this requires "backwards compatibility" on the part of the framework. ("Forwards compatibility" for the Framework team would be if a 2.1 app ran on the 2.0 Framework.)
Backwards compatibility is much easier - just requires testing against things that already exist.
Forwards compatibility usually requires either rigid standards or psychic powers.
If I put up a 1.1 control in my web app and someone calls me saying it doesn't work... and I determine they're running the 1.0 Framework and they've hit a breaking change... can I tell them "Microsoft says you have to upgrade to 1.1?"
I'd suggest upgrading to 2.0 beta, of course, except that I'm leary of asking customers to install beta software. Call it EULA shock.
Yes, if your 1.1 app doesn't work when running on the 1.0 runtimes and upgrading to 1.1 runtimes gets it to start working, that seems like a good thing to recommend, no?
But, most of those problems have been hit already since 1.1 has been out there for awhile.
What happens if a program makes a call to a .net DLL that was complied on version 1.1 form 2.0? Does the DLL run in 1.1 or 2.0, and dose it matter if it’s a compile type reference or late binding?
Sure. I am comfortable with asking people to upgrade 1.0 to 1.1, just wondered if there was an official "1.0 is no longer supported" message out there... and what exactly the user would experience if they tried to run 1.1 apps on a 1.0 Framework.
EDIT: you see, this kind of thing happens all the time in the web world... someone installs Flash 5, then a few years later they try to run a Flash 7 .swf and it fails... silently...
And don't get me started on the Java runtime. .NET, being a little young in the version sense (not yet 2.0,) is yet to experience this kind of thing on a massive scale.
Oh, and Robert was of course using Tab Completion to type those long filenames... works in XP and bash out-of-the-box, requires a registry hack in NT and 2000
EDIT2: Since the CLR version of all .NET-enabled browsers is listed in the User-Agent header (danger, Will Robinson...), a savvy log-analysis tool should be able to report on the percentage of visitors with 1.0 installed vs. 1.1 or 2.0. What does Channel9's user-base look like? What percentage has
No .NET CLR: ??%
1.0-ish: ??%
1.1-ish: ??%
2.0-ish: ??%
?
Programous: There is only 1 instance of the Framework per-process. Once it's loaded, it cannot be unloaded. First Framework loaded is the one that wins. If you load a 1.1 DLL into a process with the 2.0 Framework already loaded, it will run on the 2.0 Framework (the 2.0 CLR as well as the 2.0 DLLs such as System.dll and System.Data.dll since the Framework is unified).
Hummm. I guess your right, so that would instantly make it impossible to use a 2.0 component with a 1.1 program, unless it was on a 2.0 only system, or there’s a way to tell the framework to load the newest version (maybe an app.config setting?)
Just a thought, side-by-side execution should be called "sideway compatibility".
Yes, you can specify in the app.config which versions of the CLR are supported or even required by your app.
<?xml version ="1.0"?>
<configuration>
<startup>
<requiredRuntime version="v1.0.3705"/>
<supportedRuntime version="v1.0.3705"/>
</startup>
</configuration>
http://blogs.msdn.com/suzcook/archive/2004/05/14/132022.aspx
they are a great bunch of people, if any of you out there have any .net 1.1 apps, sign up for compatibility testing as detailed in the video. You wont regret it and you'll come away with a lot more knowledge and appreciation of the work involved in Backwards and Forwards compatibility and the wide variety of breaking changes.
i blogged the whole experience...
Day 1: http://www.costall.net/blog.aspx?BID=1057
Day 2: http://www.costall.net/blog.aspx?BID=1058
Day 3: http://www.costall.net/blog.aspx?BID=1060
Day 4: http://www.costall.net/blog.aspx?BID=1061
Day 5: http://www.costall.net/blog.aspx?BID=1062
Day 6: http://www.costall.net/blog.aspx?BID=1063
How can I do it with Cassini? I assume I will have to compile it in 1.1 and listen to some port for my 1.1 web apps and compile it in 2.0 and run it listening in another port for my 2.0 web apps. Right?
Thank you,
Luciano Bargmann
Remove this comment
Remove this thread
close