[Mono-bugs] [Bug 617714] New: [.NET 4] Assembly loader fails to load type from remapped assembly
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Sun Jun 27 05:08:57 EDT 2010
http://bugzilla.novell.com/show_bug.cgi?id=617714
http://bugzilla.novell.com/show_bug.cgi?id=617714#c0
Summary: [.NET 4] Assembly loader fails to load type from
remapped assembly
Classification: Mono
Product: Mono: Runtime
Version: SVN
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: P5 - None
Component: misc
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: mhabersack at novell.com
QAContact: mono-bugs at lists.ximian.com
Found By: ---
Blocker: ---
Created an attachment (id=371955)
--> (http://bugzilla.novell.com/attachment.cgi?id=371955)
mono_4.0_assembly_loader_bug.tar.bz2
When a 4.0 application references a 2.0/3.5 assembly which, in turn, references
types that live in a remapped assembly (e.g. System.Core's Action types), the
runtime will fail to load any type in the referenced assembly that relies upon
types in the remapped assembly.
Initially I thought it had to do with the fact that System.Core was not in the
framework_assemblies array in assembly.c, but even after putting it there (diff
for assembly.c is found in the attached tarball) it doesn't work. The assembly
gets remapped properly but the type load is still attempted from the version of
assembly from before the mapping.
This breaks, e.g., ASP.NET MVC2 applications (a sample app is found in the
tarball as well) which are ran under Mono .NET 4 runtime. To run the sample MVC
app, start xsp4 in the MvcApplication2/MvcApplication2/ directory and browse to
http://localhost:8080/
A MissingMethodException will be thrown stating that the
System.Web.Mvc.RouteCollectionExtensions.IgnoreRoute method (from
System.Web.Mvc.dll - compiled for the 2.0/3.5 runtime) is not found.
The tarball contains also a simpler example of how the remapping fails (in the
test/ directory). The sample consists of an assembly which uses System.Core's
Action type (in 4.0 this type got moved to corlib) and a small app which
references the assembly. The sample build script, compile.sh, when invoked
without any parameters will fail to compile the application (in this mode it
compiles ab assembly using gmcs and the test application with dmcs - in effect
dmcs fails to load the Test.MyClass type from the sample assembly). If invoked
with any parameter, it will succeed to compile the assembly and the application
(in this mode the assembly is compiled twice - first with dmcs to make it
possible to compile test.exe, second with gmcs after test.exe is built) but the
application will fail to work as Test.MyClass fails to load.
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list