Re: Forcing an application to load assemblies from a specific path

Fernando Tubio <[email protected]> Tue, 26 May 2009 16:49:14 -0300
Newsgroups gmane.comp.windows.devel.dotnet.advanced
Message-ID <043b01c9de3b$2bacee40$65043c0a@glasgow>
Finally! You seem to agree with me

... "There's really nothing anyone can do to avoid breaking an application
that is making incorrect assumptions while reflecting code."...

So it is a breaking change, sorry, a "disruptive alteration".

I insist that you are trying to push me into an API discussion when I
believe this is a deployment issue, and a very difficult one. I think they
can fix all the APIs that they want, and I'm glad that this happens. I'm not
convinced that claiming that this is still .NET 3.5 SP1 is the way to go.
And if Windows 7 introduces changes that can potentially disrupt
applications, then you should still be able to deploy the original
framework bits side by side and get on with your life. But I'm sure that
there are a lot more issues to consider other than maintaining compatibility
with a badly written application. Perhaps this is the reason why I'm
reluctant to "pick a side". That, and the fact that if you look at the
subject line, you will recall what my primary concern was. Certainly not
argueing for the inmutability of the framework APIs or the bad use of
reflection.

- Fernando

----- Original Message ----- 
From: "Peter Ritchie" <[email protected]>
To: <[email protected]>
Sent: Tuesday, May 26, 2009 2:24 PM
Subject: Re: [ADVANCED-DOTNET] Forcing an application to load assemblies
from a specific path


The problem is you haven't picked a side.  You've said you think the
framework shouldn't break any software that runs on the previous version as
well as saying their API is not wrong.

Do you see the contradiction in this?  If the API isn't wrong and doesn't
need changing, how do they "fix" the framework so it doesn't break this
poorly coded application in the RTM version?

The interface contracts and the semantics of the framework are what the .NET
framework is supposed to address with regard to "DLL hell".  Even then, it's
only as good at this as the designer of the framework.  If the designer
removes methods, properties or even classes; you're right back to DLL hell.

There's really nothing anyone can do to avoid breaking an application that
is making incorrect assumptions while reflecting code.
GetMethod("MethodName", BindingFlags.Instance | BindingFlags.Public) is one
example--avoiding breaking this means never adding overloads to the
framework.  Another example is typeof(String).GetField("m_arrayLength",
BindingFlags.NonPublic | BindingFlags.Instance)--avoiding breaking this
means never changing or removing private fields.  There's endless examples
like this that eventually lead you to the only solution to making sure
existing applications don't break with a new version of the framework is to
never change the framework.

-- Peter

On Tue, 26 May 2009 13:54:30 -0300, Fernando Tubio <[email protected]>
wrote:

>No, I'm leaving all the suggestions to you. I'm simply replying to your
>objections to my use of the term "breaking change". If Windows 7 ships with
>the framework and they call this .NET 3.5 SP1, and the application breaks,
>then it is a breaking change.
>
>Look, you are trying to push me into a side of the argument where I do not
>wish to be. Whether MS is justified in introducing this change at the risk
>of breaking some applications, I don't know. As I said previously, this is
>really no different from DLL hell and I'm a little bit disappointed that
>this is not handled better. After all, this is one of the issues that .NET
>was supposed to address.
>

===================================
View archives and manage your subscription(s) at
http://peach.ease.lsoft.com/archives

===================================
View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives