[IronPython] Compiling with Pyc for Silverlight

Dino Viehland dinov at microsoft.com
Wed Apr 22 00:38:55 CEST 2009


Do you have a simple repro XAP you can send me and I'll take a look?  

I'm not entirely sure I'll know what's going on as CoreCLR isn't the 
CLR I'm used to debugging but it's not that different :)

> -----Original Message-----
> From: users-bounces at lists.ironpython.com [mailto:users-
> bounces at lists.ironpython.com] On Behalf Of Michael Foord
> Sent: Tuesday, April 21, 2009 2:41 AM
> To: Discussion of IronPython
> Subject: Re: [IronPython] Compiling with Pyc for Silverlight
> 
> Dino Viehland wrote:
> > You're compiling to a DLL and then trying to import (vs compiling to
> an EXE)?
> >
> >
> 
> Yes - it's support packages we're trying to compile. I would have
> thought that compiling an exe for Silverlight was a lost cause... :-)
> 
> There are two motivations, mainly speeding up import time but also
> source code obfuscation. If the assembly is genuinely serializable then
> we may at least achieve the second, so long as it doesn't make import
> time worse.
> 
> Michael
> 
> >> -----Original Message-----
> >> From: users-bounces at lists.ironpython.com [mailto:users-
> >> bounces at lists.ironpython.com] On Behalf Of Michael Foord
> >> Sent: Monday, April 20, 2009 3:07 PM
> >> To: Discussion of IronPython
> >> Subject: Re: [IronPython] Compiling with Pyc for Silverlight
> >>
> >> Michael Foord wrote:
> >>
> >>> Jb Evain wrote:
> >>>
> >>>> Hey Michael,
> >>>>
> >>>> On 4/20/09, Michael Foord <fuzzyman at voidspace.org.uk> wrote:
> >>>>
> >>>>
> >>>>>  I guess a full IL writer would be needed - which means back to
> >>>>> Cecil and
> >>>>> the like and seeing if parts of them could be run on Silverlight.
> >>>>> *sigh*
> >>>>>
> >>>>>
> >>>> You just want to change the references to an assembly from the
> >>>>
> >> desktop
> >>
> >>>> version to the SL version? With Cecil it's like:
> >>>>
> >>>> var assembly = AssemblyFactory.GetAssembly (file);
> >>>> foreach (var reference in assembly.MainModule.AssemblyReferences)
> {
> >>>>     if (!IsTargetAssembly (reference))
> >>>>         continue;
> >>>>
> >>>>     reference.Version = new Version (2, 0, 5, 0);
> >>>> }
> >>>> AssemblyFactory.SaveAssembly (assembly, file);
> >>>>
> >>>> Now it doesn't guarantee that the resulting assembly is coherent,
> >>>> visibility wise, as you may have used methods that are not visible
> >>>>
> >> or
> >>
> >>>> not existent in SL.
> >>>>
> >>>>
> >>>>
> >>> Thanks for that - if it would work it would be really useful,
> >>>
> >> however...
> >>
> >>> I think I've done the equivalent of this using ildasm / ilasm. I've
> >>> disassembled the assembly to IL, then replaced the references with
> >>>
> >> the
> >>
> >>> references to Silverlight assemblies and re-assembled.
> >>>
> >>> The resulting assembly throws exactly the same error - which makes
> me
> >>> think that the assemblies compiled by Pyc are using things that
> >>>
> >> aren't
> >>
> >>> available in Silverlight. *However* -
> >>> Microsoft.Runtime.CompilerServices.StrongBox does exist in
> >>> Silverlight. I think I'll try the whole process again just to see.
> My
> >>> guess is that rewriting would require an intimate knowledge of the
> >>> differences between the CoreCLR and standard .NET.
> >>>
> >>>
> >> No - I've rerun the whole process from compiling with Pyc through to
> >> replacing the references in the il and reassembling. Same error.
> Shame.
> >>
> >> SystemError: Could not load type
> >> 'Microsoft.Runtime.CompilerServices.StrongBox`1' from assembly
> >> 'Microsoft.Scripting.Core, Version=2.0.5.0, Culture=neutral,
> >> PublicKeyToken=31bf3856ad364e35'.app.py
> >>
> >> Michael Foord
> >>
> >>
> >>> I can't import it in a Silverlight application though (the
> following
> >>> code does work on the desktop version of IronPython):
> >>>
> >>> import clr
> >>> clr.AddReference('Microsoft.Scripting')
> >>> clr.AddReference('Microsoft.Scripting.Core')
> >>> from  Microsoft.Runtime.CompilerServices import StrongBox
> >>>
> >>> ImportError: No module named Runtime
> >>>
> >>> Michael
> >>>
> >>>
> >> --
> >> http://www.ironpythoninaction.com/
> >> http://www.voidspace.org.uk/blog
> >>
> >>
> >> _______________________________________________
> >> Users mailing list
> >> Users at lists.ironpython.com
> >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >>
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >
> 
> 
> --
> http://www.ironpythoninaction.com/
> 
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



More information about the Ironpython-users mailing list