Hello Jonathan,

I reckon you misunderstood my question. I am aware of the fact that mono has not implemented a GAC. My question was more about the output of that particular program.

Even after changing the name of the dlls to "first1.dll" and "first2.dll" and keeping them in the same folder I fail to understand why mono still prints "This is version 1" for the second time when it ought to have printed "This is verison 2"

Output on MS-CLR:
This is version 1
This is version 2

Output on mono-0.25
This is version 1
This is version 1

I mean, when I am loading the "first2.dll" using LoadFrom and creating an instance out of it, logically speaking, it ought to have given me the one from first2.dll so that when I invoke the Print() method it should have printed "This is verison 2"


I am using MSVS.Net(csc) for compiling the program and mono-0.25 on Cygwin to run it. Sorry for the typo in the code.

-pG-



On Fri, 26 Sep 2003 Jonathan Pryor wrote :
How are you compiling & running your program?

Mono doesn't have a Global Assembly Cache. Thus, there is no way to
install two different "versions" of the same assembly. At least, not
for "version" defined as "having
System.Reflection.AssemblyFileVersionAttribute specified in the
assembly."


You can always rename the assemblies, having (e.g.) first-1.dll and
first-2.dll, to correspond to the different library versions. That
works under mono, as expected.


Well, it *almost* works. I couldn't get your code to compile as-is,
because [first-1.dll]first.ClassFirst was not declared as "public," and
thus couldn't be used from MainApplication.exe. After changing
first.ClassFirst to be a public class, it could compile.


The one other change required was changing the Assembly.LoadFrom path,
as I'm doing this on Linux and C:\ doesn't exist, and I was loading
"first-2.dll", explicitly specifying the version to load.


- Jon

On Thu, 2003-09-25 at 09:09, Piyush Garyali wrote:
> Hello everybody,
>
> I found a strange behavior with mono when I ran the following code
> snippet for side-by-side execution.
>
> <first.dll version 1.0.1>
> using System;
> namespace first
> {
> class ClassFirst
> {
> public void Print()
> {
> Console.WriteLine("This is version 1");
> }
> }
> }
>
> <first.dll version 1.0.2>
> using System;
> namespace first
> {
> class ClassFirst
> {
> public void Print()
> {
> Console.WriteLine("This is version 2");
> }
> }
> }
>
> <MainApplication.exe>
> using System;
> using System.Reflection;
> using first;
>
> namespace MainApplication
> {
> class Class1
> {
> static void Main()
> {
> // creating instance from the version 1.0.1
> assembly
> ClassFirst cf = new ClassFirst();
> cf.Print();
>
> // loading the version 1.0.2 dll
> Assembly ass =
> Assembly.LoadFrom("C:\\NewVersion\\first.dll");
> type [] t = ass.GetTypes();
> object o = System.Activator.CreateInstance(t[0]);
> MethodInfo method = t[0].GetMethod("Print");
> method.Invoke(o, null);
>
> }
> }
> }
>
> Output on MS-CLR:
> This is version 1
> This is version 2
>
> Output on mono-0.25
> This is version 1
> This is version 1
>
>
> <..>
>
> I can't figure out any reason as to why this thing is not working
> on mono.
> Is it a bug or am I missing something ??
>
> -pG-
> ___________________________________________________
> Television meets Accounts; Jyoti Weds Rajaram.
> Rediff Matchmaker strikes another interesting match !!
> Visit http://matchmaker.rediff.com?1
>
> _______________________________________________
> Mono-list maillist - [EMAIL PROTECTED]
> http://lists.ximian.com/mailman/listinfo/mono-list



___________________________________________________ Television meets Accounts; Jyoti Weds Rajaram. Rediff Matchmaker strikes another interesting match !! Visit http://matchmaker.rediff.com?1

_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to